HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/1784574/root/usr/lib/python3/dist-packages/babel/messages/__pycache__/
Upload File :
Current File : //proc/1784574/root/usr/lib/python3/dist-packages/babel/messages/__pycache__/pofile.cpython-311.pyc
�

ƪb�U����dZddlZddlZddlmZmZddlmZmZd�Z	d�Z
Gd�de��ZGd	�d
��Z
Gd�d��Zdd�Zejd��Zd�Zdd�Z			dd�Zd�ZdS)z�
    babel.messages.pofile
    ~~~~~~~~~~~~~~~~~~~~~

    Reading and writing of files in the ``gettext`` PO (portable object)
    format.

    :copyright: (c) 2013-2022 by the Babel Team.
    :license: BSD, see LICENSE for more details.
�N)�Catalog�Message)�wraptext�_cmpc�h�d�}tjd���||dd���S)z�Reverse `escape` the given string.

    >>> print(unescape('"Say:\\n  \\"hello, world!\\"\\n"'))
    Say:
      "hello, world!"
    <BLANKLINE>

    :param string: the string to unescape
    c�`�|�d��}|dkrdS|dkrdS|dkrdS|S)N��n�
�t�	�r�
)�group)�match�ms  �7/usr/lib/python3/dist-packages/babel/messages/pofile.py�replace_escapesz!unescape.<locals>.replace_escapess@���K�K��N�N����8�8��4�
�#�X�X��4�
�#�X�X��4���z\\([\\trn"])r	���)�re�compile�sub)�stringrs  r�unescapers;��	�	�	��:�o�&�&�*�*�?�F�1�R�4�L�I�I�Irc���d|vr]|���}|�d��r
|dd�}tt|��}d�|��St|��S)a�Reverse the normalization done by the `normalize` function.

    >>> print(denormalize(r'''""
    ... "Say:\n"
    ... "  \"hello, world!\"\n"'''))
    Say:
      "hello, world!"
    <BLANKLINE>

    >>> print(denormalize(r'''""
    ... "Say:\n"
    ... "  \"Lorem ipsum dolor sit "
    ... "amet, consectetur adipisicing"
    ... " elit, \"\n"'''))
    Say:
      "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
    <BLANKLINE>

    :param string: the string to denormalize
    r�""r	N�)�
splitlines�
startswith�mapr�join)r�
escaped_lines�liness   r�denormalizer%*so��*�v�~�~��)�)�+�+�
����T�"�"�	.�)�!�"�"�-�M��H�m�,�,���w�w�u�~�~������rc�"��eZdZdZ�fd�Z�xZS)�PoFileErrorzDException thrown by PoParser when an invalid po file is encountered.c�~��t���|�d|����||_||_||_dS)Nz on )�super�__init__�catalog�line�lineno)�self�messager+r,r-�	__class__s     �rr*zPoFileError.__init__KsB���
�����G�1�1��1�1�2�2�2������	�����r)�__name__�
__module__�__qualname__�__doc__r*�
__classcell__)r0s@rr'r'Is>�������N�N���������rr'c�Z�eZdZd�Zd�Zd�Zd�ZeZd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
S)�_NormalizedStringc�H�g|_|D]}|�|���dS�N)�_strs�append)r.�args�args   rr*z_NormalizedString.__init__Ts7����
��	�	�C��K�K������	�	rc�^�|j�|�����dSr9)r:r;�strip)r.�ss  rr;z_NormalizedString.appendYs&���
���!�'�'�)�)�$�$�$�$�$rc�\�d�tt|j����S)Nr)r"r!rr:�r.s rr%z_NormalizedString.denormalize\s ���w�w�s�8�T�Z�0�0�1�1�1rc�*�t|j��Sr9)�boolr:rBs r�__nonzero__z_NormalizedString.__nonzero___s���D�J���rc�J�tj�|j��Sr9)�os�linesepr"r:rBs r�__repr__z_NormalizedString.__repr__ds���z���t�z�*�*�*rc�^�|sdStt|��t|����S)Nr	)r�str�r.�others  r�__cmp__z_NormalizedString.__cmp__gs+���	��1��C��I�I�s�5�z�z�*�*�*rc�4�|�|��dkS�Nr�rNrLs  r�__gt__z_NormalizedString.__gt__m����|�|�E�"�"�Q�&�&rc�4�|�|��dkSrPrQrLs  r�__lt__z_NormalizedString.__lt__prSrc�4�|�|��dkSrPrQrLs  r�__ge__z_NormalizedString.__ge__s����|�|�E�"�"�a�'�'rc�4�|�|��dkSrPrQrLs  r�__le__z_NormalizedString.__le__vrXrc�4�|�|��dkSrPrQrLs  r�__eq__z_NormalizedString.__eq__yrXrc�4�|�|��dkSrPrQrLs  r�__ne__z_NormalizedString.__ne__|rXrN)r1r2r3r*r;r%rE�__bool__rIrNrRrUrWrZr\r^�rrr7r7Rs����������
%�%�%�2�2�2� � � ��H�+�+�+�+�+�+�'�'�'�'�'�'�(�(�(�(�(�(�(�(�(�(�(�(�(�(rr7c�\�eZdZdZgd�Zdd�Zd�Zd�Zd�Zdd�Z	dd	�Z
d
�Zd�Zd�Z
d
�ZdS)�PoFileParserz�Support class to  read messages from a ``gettext`` PO (portable object) file
    and add them to a `Catalog`

    See `read_po` for simple cases.
    )�msgid�msgstr�msgctxt�msgid_pluralFc�t�||_||_d|_d|_||_|���dSrP)r+�ignore_obsolete�counter�offset�
abort_invalid�_reset_message_state)r.r+rhrks    rr*zPoFileParser.__init__�s?�����.���������*����!�!�#�#�#�#�#rc��g|_g|_g|_g|_g|_g|_d|_d|_d|_d|_	d|_
dS)NF)�messages�translations�	locations�flags�
user_comments�
auto_comments�context�obsolete�in_msgid�	in_msgstr�
in_msgctxtrBs rrlz!PoFileParser._reset_message_state�sV����
���������
������������
���
��������rc
���|j���t|j��dkrt	d�|jD����}n|jd���}t
|ttf��r�d�t|j	j
��D��}|jD]I\}}||j	j
kr|�d|jd���2|���||<�Jt	|��}n%|jdd���}|j
r|j
���}nd}t||t|j��t!|j��|j|j|jdz|���}|jr|js||j	j|<n
||j	|<|xjdz
c_|���dS)	z�
        Add a message to the catalog based on the current parser state and
        clear the state ready to process the next message.
        r	c3�>K�|]}|���V��dSr9)r%)�.0rs  r�	<genexpr>z,PoFileParser._add_message.<locals>.<genexpr>�s*����A�A�a�!�-�-�/�/�A�A�A�A�A�Arrc��g|]}d��S�rr`)r{�_s  r�
<listcomp>z-PoFileParser._add_message.<locals>.<listcomp>�s��B�B�B�Q�b�B�B�Brrz5msg has more translations than num_plurals of catalogN)r-rt)ro�sort�lenrn�tupler%�
isinstance�list�ranger+�num_plurals�_invalid_pofilerjrtrrp�setrqrsrrrurhrirl)r.rcr�idx�translationrer/s       r�_add_messagezPoFileParser._add_message�s���
	
���� � � ��t�}����!�!��A�A�4�=�A�A�A�A�A�E�E��M�!�$�0�0�2�2�E��e�d�E�]�+�+�		;�B�B�%���(@�"A�"A�B�B�B�F�$(�$5�
8�
8� ��[��$�,�2�2�2��(�(��d�k�;r�s�s�s��)�5�5�7�7��s����6�]�]�F�F��&�q�)�!�,�8�8�:�:�F��<�	��l�.�.�0�0�G�G��G��%���d�n�)=�)=�s�4�:����,�d�.@���WX��")�+�+�+���=�	*��'�
7�/6���%�e�,��")�D�L�����������!�!�#�#�#�#�#rc�@�|jr|���dSdSr9)rnr�rBs r�_finish_current_messagez$PoFileParser._finish_current_message�s.���=�	 ���������	 �	 rc��|�d��r|�||��dS|�|||��dS)N�")r �!_process_string_continuation_line�_process_keyword_line)r.r-r,rus    r�_process_message_linez"PoFileParser._process_message_line�sP���?�?�3���	?��2�2�4��@�@�@�@�@��&�&�v�t�X�>�>�>�>�>rc��|jD]o}	|�|��r0|t|��dvr|t|��d�}nA�I#t$r|�||d��Y�lwxYw|�||d��dS|dvr|���||_|dkr||_|dvr7d|_d|_	|j
�t|����dS|d	kr�d|_	d|_
|�d
��rY|dd��dd��\}}|j�t!|��t|��g��dS|j�d
t|��g��dS|dkrd|_t|��|_dSdS)N)� �[z$Keyword must be followed by a stringz0Start of line didn't match any expected keyword.)rcrerc)rcrfFTrdr�r	�]rre)�	_keywordsr r��
IndexErrorr�r�rurjrxrvrnr;r7rw�splitro�intrt)r.r-r,ru�keywordr=r��msgs        rr�z"PoFileParser._process_keyword_line�s���~�		�		�G�
[��?�?�7�+�+���S��\�\�0B�j�0P�0P��s�7�|�|�}�}�-�C��E����
[�
[�
[��$�$�T�6�3Y�Z�Z�Z�Z�Z�
[����
� � ��v�/a�b�b�b��F��*�*�*��(�(�*�*�*� ��
��g��� �D�K��/�/�/�#�D�O� �D�M��M� � �!2�3�!7�!7�8�8�8�8�8�
��
 �
 �!�D�M�!�D�N��~�~�c�"�"�
F��q�r�r�7�=�=��a�0�0���S��!�(�(�#�c�(�(�4E�c�4J�4J�)K�L�L�L�L�L��!�(�(�!�->�s�-C�-C�)D�E�E�E�E�E�
�	�
!�
!�"�D�O�,�S�1�1�D�L�L�L�"�
!s�AA�!A5�4A5c���|jr|jd}nC|jr|jdd}n(|jr|j}n|�||d��dS|�|��dS)Nrr	z<Got line starting with " but not in msgid, msgstr or msgctxt)rvrnrwrorxrtr�r;)r.r,r-r@s    rr�z.PoFileParser._process_string_continuation_line�s|���=�	��
�b�!�A�A�
�^�	��!�"�%�a�(�A�A�
�_�	���A�A�� � ��v�/n�o�o�o��F�	��������rc���|���|dd��d��r�|dd�������D]�}|�d��}|dkrQ	t||dzd���}n#t$rY�EwxYw|j�|d|�|f���n|j�|df����dS|dd��d��r`|dd�����d��D].}|j	�|�
�����/dS|dd��d��r<|dd��
��}|r|j�|��dSdS|j�|dd��
����dS)Nr	�:�r�,�.)
r�r �lstripr��rfindr��
ValueErrorrpr;rqr?rsrr)r.r,�location�posr-�flag�comments       r�_process_commentzPoFileParser._process_comments���$�$�&�&�&�����8���s�#�#�	8� ����H�O�O�-�-�3�3�5�5�	
<�	
<���n�n�S�)�)���!�8�8�!�!$�X�c�A�g�h�h�%7�!8�!8����%�!�!�!� ��!�����N�)�)�8�D�S�D�>�6�*B�C�C�C�C��N�)�)�8�T�*:�;�;�;�;�	
<�	
<��!�"�"�X�
 �
 ��
%�
%�
	8��Q�R�R����)�)�/�/��4�4�
0�
0���
�!�!�$�*�*�,�,�/�/�/�/�
0�
0�
�!�"�"�X�
 �
 ��
%�
%�	8��1�2�2�h�n�n�&�&�G��
3��"�)�)�'�2�2�2�2�2�
3�
3�
��%�%�d�1�2�2�h�n�n�&6�&6�7�7�7�7�7s�>B�
B&�%B&c��t|��D]�\}}|���}t|t��s|�|jj��}|s�P|�d��rf|dd��d��r3|�||dd��	��d�����|�
|����|�||����|���|js{|j
s|js|jrh|j�t%d����|j�d	t%d��g��|���dSdSdS)
z�
        Reads from the file-like object `fileobj` and adds any po file
        units found in it to the `Catalog` supplied to the constructor.
        �#r	N�~r�T)rurr)�	enumerater?r�rK�decoder+�charsetr r�r�r�r�rirqrrrsrnr;r7ror�)r.�fileobjr-r,s    r�parsezPoFileParser.parse!s���&�g�.�.�	9�	9�L�F�D��:�:�<�<�D��d�C�(�(�
9��{�{�4�<�#7�8�8���
�����s�#�#�
9�����8�&�&�s�+�+�0��.�.�v�t�A�B�B�x���7H�7H�SW�.�X�X�X�X��)�)�$�/�/�/�/��*�*�6�4�8�8�8�8��$�$�&�&�&��|�	 ���	 �t�/A�	 �T�EW�	 ��M� � �!2�5�!9�!9�:�:�:���$�$�a�):�5�)A�)A�%B�C�C�C���������	 �	 �	 �	 rc��t|t��sJ�|jrt||j||���td|��td�|dzt|������dS)NzWARNING:z!WARNING: Problem on line {0}: {1}r	)r�rKrkr'r+�print�format�repr)r.r,r-r�s    rr�zPoFileParser._invalid_pofile>sz���$��$�$�$�$�$���	?��c�4�<��v�>�>�>�
�j�#����	�2�9�9�&�1�*�d�4�j�j�Q�Q�R�R�R�R�RrN)FF)F)r1r2r3r4r�r*rlr�r�r�r�r�r�r�r�r`rrrbrb�s������������I�$�$�$�$� � � �!$�!$�!$�F � � �?�?�?�?�'2�'2�'2�'2�R
�
�
�8�8�8�6 � � �:S�S�S�S�SrrbFc�x�t|||���}t|||���}|�|��|S)a�Read messages from a ``gettext`` PO (portable object) file from the given
    file-like object and return a `Catalog`.

    >>> from datetime import datetime
    >>> from io import StringIO
    >>> buf = StringIO('''
    ... #: main.py:1
    ... #, fuzzy, python-format
    ... msgid "foo %(name)s"
    ... msgstr "quux %(name)s"
    ...
    ... # A user comment
    ... #. An auto comment
    ... #: main.py:3
    ... msgid "bar"
    ... msgid_plural "baz"
    ... msgstr[0] "bar"
    ... msgstr[1] "baaz"
    ... ''')
    >>> catalog = read_po(buf)
    >>> catalog.revision_date = datetime(2007, 4, 1)

    >>> for message in catalog:
    ...     if message.id:
    ...         print((message.id, message.string))
    ...         print(' ', (message.locations, sorted(list(message.flags))))
    ...         print(' ', (message.user_comments, message.auto_comments))
    (u'foo %(name)s', u'quux %(name)s')
      ([(u'main.py', 1)], [u'fuzzy', u'python-format'])
      ([], [])
    ((u'bar', u'baz'), (u'bar', u'baaz'))
      ([(u'main.py', 3)], [])
      ([u'A user comment'], [u'An auto comment'])

    .. versionadded:: 1.0
       Added support for explicit charset argument.

    :param fileobj: the file-like object to read the PO file from
    :param locale: the locale identifier or `Locale` object, or `None`
                   if the catalog is not bound to a locale (which basically
                   means it's a template)
    :param domain: the message domain
    :param ignore_obsolete: whether to ignore obsolete messages in the input
    :param charset: the character set of the catalog.
    :param abort_invalid: abort read if po file is invalid
    )�locale�domainr�)rk)rrbr�)r�r�r�rhr�rkr+�parsers        r�read_por�IsD��^�V�F�G�D�D�D�G�
�'�?�-�
P�
P�
P�F�
�L�L������NrzL(\s+|[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))c���d|�dd���dd���dd���dd	���d
d��zS)z�Escape the given string so that it can be included in double-quoted
    strings in ``PO`` files.

    >>> escape('''Say:
    ...   "hello, world!"
    ... ''')
    '"Say:\\n  \\"hello, world!\\"\\n"'

    :param string: the string to escape
    z"%s"�\z\\r
z\trz\rrz\nr�z\")�replace)rs r�escaper��s]���F�N�N�4��0�0�"�7�4��/�/�"�7�4��/�/�"�7�4��/�/�"�7�4��/�/�	0�0rr�Lc���|�rW|dk�rPt���}g}|�d��D�]'}tt|����|z|kr�t�|��}|���|r�g}d}|r�tt|d����dz
|z}	||	z|kr-|�|�����||	z
}n*|s'|�|�����n|��|�d�|����|����|�|����)n|�d��}t|��dkrt|��S|r|ds|d=|dxxdz
cc<dd��fd	�|D����zS)
a�Convert a string into a format that is appropriate for .po files.

    >>> print(normalize('''Say:
    ...   "hello, world!"
    ... ''', width=None))
    ""
    "Say:\n"
    "  \"hello, world!\"\n"

    >>> print(normalize('''Say:
    ...   "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
    ... ''', width=32))
    ""
    "Say:\n"
    "  \"Lorem ipsum dolor sit "
    "amet, consectetur adipisicing"
    " elit, \"\n"

    :param string: the string to normalize
    :param prefix: a string that should be prepended to every line
    :param width: the maximum line width; use `None`, 0, or a negative number
                  to completely disable line wrapping
    rTr�rrr	rz""
c�4��g|]}�t|��z��Sr`)r�)r{r,�prefixs  �rr�znormalize.<locals>.<listcomp>�s$��� K� K� K�T�&�6�$�<�<�"7� K� K� Kr)	r�rr��WORD_SEPr��reverser;�popr")
rr��width�	prefixlenr$r,�chunks�buf�size�ls
 `        r�	normalizer��s����0
�(�������K�K�	����%�%�d�+�+�	#�	#�D��6�$�<�<� � �9�,�u�4�4�!����-�-����� � � ��0��C��D� �
"���v�b�z� 2� 2�3�3�a�7�)�C���!�8�e�+�+��J�J�v�z�z�|�|�4�4�4� �A�I�D�D�#&�9�!$�
�
�6�:�:�<�<� 8� 8� 8�!�!�
"��L�L����#���/�/�/��0�� ���T�"�"�"�"�)	#�,�!�!�$�'�'��
�5�z�z�Q����f�~�~��
��U�2�Y���"�I�
�b�	�	�	�T��	�	�	��U�Z�Z� K� K� K� K�U� K� K� K�L�L�L�LrTc

�j������d�fd�	���fd��d��fd�	}
d���fd�	}d}|rd}n|rd}t�|�	��D�]}
|
jsc|r�
�j}�rI�d
krCg}|���D]}|t	|�d���z
}�d
�|��}�|d
z��|
jD]
}|
|���|
jD]}|
|d����|s�g}	t|
j	d����}n#t$r
|
j	}YnwxYw|D]k\}}|r(|	r&d|�tj
d��|fz}n#d|�tj
d��z}||vr|�|���l|
d�|��d���|
jr7�dd�dgt|
j��z��z��|
jrb|r`|
d�|
jd
��zd���t#|
j��dkr$|
d�|
jd��zd���||
���d
����|sXt�j���|�	��D]1}
|
jD]
}|
|���||
d����d
���0dSdS)a�Write a ``gettext`` PO (portable object) template file for a given
    message catalog to the provided file-like object.

    >>> catalog = Catalog()
    >>> catalog.add(u'foo %(name)s', locations=[('main.py', 1)],
    ...             flags=('fuzzy',))
    <Message...>
    >>> catalog.add((u'bar', u'baz'), locations=[('main.py', 3)])
    <Message...>
    >>> from io import BytesIO
    >>> buf = BytesIO()
    >>> write_po(buf, catalog, omit_header=True)
    >>> print(buf.getvalue().decode("utf8"))
    #: main.py:1
    #, fuzzy, python-format
    msgid "foo %(name)s"
    msgstr ""
    <BLANKLINE>
    #: main.py:3
    msgid "bar"
    msgid_plural "baz"
    msgstr[0] ""
    msgstr[1] ""
    <BLANKLINE>
    <BLANKLINE>

    :param fileobj: the file-like object to write to
    :param catalog: the `Catalog` instance
    :param width: the maximum line width for the generated output; use `None`,
                  0, or a negative number to completely disable line wrapping
    :param no_location: do not emit a location comment for every message
    :param omit_header: do not include the ``msgid ""`` entry at the top of the
                        output
    :param sort_output: whether to sort the messages in the output by msgid
    :param sort_by_file: whether to sort the messages in the output by their
                         locations
    :param ignore_obsolete: whether to ignore obsolete messages and not include
                            them in the output; by default they are included as
                            comments
    :param include_previous: include the old msgid as a comment when
                             updating the catalog
    :param include_lineno: include line number in the location comment
    rc�(��t||����S)N)r�r�)r�)�keyr�r�s  �r�
_normalizezwrite_po.<locals>._normalizes�����V�5�9�9�9�9rc���t|t��r|��jd��}��|��dS)N�backslashreplace)r�rK�encoder��write)�textr+r�s ��r�_writezwrite_po.<locals>._writesD����d�C� � �	D��;�;�w��0B�C�C�D��
�
�d�����rc����r	�dkr�}nd}t||��D]&}�d|�d|����d����'dS)Nrr�r�r�r)rr?)r�r��_widthr,r�r�s    ��r�_write_commentz write_po.<locals>._write_comment
sn����	�U�Q�Y�Y��F�F��F��W�f�-�-�	8�	8�D��F�F�����������6�7�7�7�7�	8�	8rc
���t|jttf��r�|jr �|�d�|j|���d����|�d�|jd|���d����|�d�|jd|���d���t�j��D]>}	|j|}n#t$rd}YnwxYw�d||�||��fz���?dS|jr �|�d�|j|���d����|�d�|j|���d����|�d	�|jpd|���d���dS)
Nzmsgctxt rzmsgid rz
msgid_plural r	rz%smsgstr[%d] %s
zmsgstr )	r��idr�r�rtr�r�rr�)r/r�r�rr�r�r+s    ���r�_write_messagez write_po.<locals>._write_messages����g�j�4��-�0�0�	���
Q���6�6�6�+5�:�g�o�v�+N�+N�+N�+N�P�Q�Q�Q��F�V�V�V�Z�Z��
�1�
�v�-N�-N�-N�-N�O�P�P�P��F����
�
�7�:�a�=�&�9�9�9�9��
�
�
��W�0�1�1�
�
�� �$�^�C�0�F�F��!� � � ��F�F�F� ������*��C���F�F�!;�!;�.������
�
���
Q���6�6�6�+5�:�g�o�v�+N�+N�+N�+N�P�Q�Q�Q��F�V�V�V�Z�Z��
�F�-K�-K�-K�-K�L�M�M�M��F����
�
�7�>�#7�R��@�@�@�@��
�
�
�
�
s�-
B;�;C
�	C
Nr/r�)�sort_byrz# )r��subsequent_indentrr�)r�c�\�|dt|dt��r|dpdfS)Nrr	r)r�r�)�xs r�<lambda>zwrite_po.<locals>.<lambda>Ps/��!�A�$�
�1�Q�4��8M�8M�8V�RS�TU�RV�8\�Z\�1]�r�r�z%s:%d�/z%sr�r�z#%s
z, zmsgid %s�|r	zmsgid_plural %sz#~ r~)�_sort_messagesr��header_commentrrr"rrrs�sortedrp�	TypeErrorr�rG�sepr;rq�previous_idr�ru�values)r�r+r��no_location�omit_header�sort_output�sort_by_filerh�include_previous�include_linenor�r�r�r/�comment_headerr$r,r��locsrp�filenamer-r�r�r�s```                    @@r�write_por��sG�������\:�:�:�:�:�:�������
8�8�8�8�8�8�8���������6�G������	����!�'�7�;�;�;�3�3���z�
	+��
��$�3�N��
3�������*�5�5�7�7�>�>�D��X�d�%�8<�>�>�>�>�E�E�!&���E�!2�!2���F�>�E�)�*�*�*��,�	$�	$�G��N�7�#�#�#�#��,�	0�	0�G��N�7�3�/�/�/�/�/��	7��D�
.�"�7�#4�']�']�_�_�_�	�	���
.�
.�
.�#�-�	�	�	�
.����%.�
*�
*� ��&��E�n�E�'�8�+;�+;�B�F�C�+H�+H�&�*Q�Q�H�H�$�x�'7�'7����'D�'D�D�H��4�'�'��K�K��)�)�)���N�3�8�8�D�>�>�#�6�6�6�6��=�	F��F�7�T�Y�Y��t�f�W�]�.C�.C�'C�D�D�D�E�E�E���	�#3�	��N�:�
�
�7�3F�q�3I�(J�(J�J�"%�
'�
'�
'�
'��7�&�'�'�!�+�+���0�:�:��'��*�4�4� ������	��w������t�������%���#�#�%�%��
�
�
�	�	�G�#�0�
(�
(����w�'�'�'�'��N�7�5�1�1�1�1��F�4�L�L�L�L���	�	s�C3�3D�Dc��t|��}|dkr|���n|dkr|�d����|S)z�
    Sort the given message iterable by the given criteria.

    Always returns a list.

    :param messages: An iterable of Messages.
    :param sort_by: Sort by which criteria? Options are `message` and `location`.
    :return: list[Message]
    r/r�c��|jSr9)rp)rs rr�z _sort_messages.<locals>.<lambda>�s��A�K�rr�)r�r�)rnr�s  rr�r�usQ���H�~�~�H��)����
�
�����	�J�	�	��
�
�/�/�
�0�0�0��Or)NNFNF)rr�)r�FFFFFFT)r4rGr�babel.messages.catalogrr�
babel.utilrrrr%�	Exceptionr'r7rbr�rr�r�r�r�r�r`rr�<module>r�s���	�	�
�	�	�	�	�	�	�	�3�3�3�3�3�3�3�3�%�%�%�%�%�%�%�%�J�J�J�. � � �>�����)����+(�+(�+(�+(�+(�+(�+(�+(�^ES�ES�ES�ES�ES�ES�ES�ES�P2�2�2�2�j�2�:�����0�0�0�$:M�:M�:M�:M�zIN�DI�48�^�^�^�^�B����r