U
    pds1                 M  @   s,  d Z ddlZddlZddlZddlZddlZddlmZ ddl	Z	dddddd	d
ddddddddddddddddgZ
dd Zdd ZzddlT W nL ek
r   d Zd!Zd"ZdZd#Zd$Zd%Zd&ZeZd'd
 Zdd(dZY nX de kreZde kreZeZi Ze	 ed)d
 Zd*d+ Z!dd-d.Z"d/d0 Z#e$d1Z%dd2d3Z&dd4dZ'dd5dZ(dd7dZ)d8d Zd9d: Z*e+fd;dZ,d<d Z-d=d> Z.eZ/d?d@ Z0dAdB Z1dCd Z2dDdE Z3dFdG Z4ddIdZ5efdJdZ6ddKdZefdLd	Z7ej89dMrddNdZ:nRze; W n< e<k
rP   e=edOr@ddPdZ:nddQdZ:Y nX ddRdZ:dSdSdTdUdUdVdWdXdYdZdTd[d\d]dTdTdTd^d_d`dad]dbd[dcddd\dedfdgdhdUdidjdVdkdldmdndodpdXdYdZdq,Z>e?e>@ D ]"\ZAZBeACdrdsZAe>DeAeB qdtdtdtdudvdwdxdxdydzd{d{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddSddSdSd|ddSdSddddddddd|ddddddddddddddddddddddddddddddddddddddddddd|ddddddddddddddddddd|dddddddd|dd|dSd|ddddddddddddddddddddddddddd d͐ddddddddddddd	d
d
dddddddddddddddddddddddddddddΐddddddddddddddddddd d!d!d!d"d#d$d%d&d'd'd(d)d'd'd&d&d|dd|dd|dd*d+d*d*d,d,d,ddd-d.d.d.d/d/d.d.d.d.d.d0d0d0d1d0d2d3d4d4d5d6d6d7d7d7d8d7d7d9d9d:d;d<d<d=d=d>d?d@dAdBdCdDdEdEdFdFdEdCdCdGdGdHdIdJdJdKdLdMdNdOdOdPdQdRdRdSdSdTdUdVdVdWdWdXdXdYdZddd[d\d]d^d_d`dȐdaddȐdbdbdcdddcdcdcdcdededfdfdddddbdgdgdhdidjdjdkdldldmdndodpdqdrdqdsdsdtdtdtdudvdSdSdwdwdxdudvdudydzd{d{d{d|d|d}d{d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddÐdÐdĐdĐdŐdƐdǐdȐdȐdɐdɐdʐdːddd͐dddϐdϐdАdѐddddҐdҐdӐLZEdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddddddddddddddddddddddddddddddddd ddddddddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdedfdgdhdidjdkdldmdldndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddZFdd ZGze W n e<k
r   Y nX e
Hd eIdkr(eJd eJ  eG  eJ  eJd eJ  e.  dS (  a  Locale support module.

The module provides low-level access to the C lib's locale APIs and adds high
level number formatting APIs as well as a locale aliasing engine to complement
these.

The aliasing engine includes support for many commonly used locale names and
maps them to values suitable for passing to the C lib's setlocale() function. It
also includes default encodings for all supported locale names.

    N)str	getlocalegetdefaultlocalegetpreferredencodingError	setlocaleresetlocale
localeconvstrcollstrxfrmr   atofatoiformatformat_stringcurrency	normalizeLC_CTYPE
LC_COLLATELC_TIMELC_MONETARY
LC_NUMERICLC_ALLCHAR_MAXc                 C   s   | |k| |k  S )zZ strcoll(string,string) -> int.
        Compares two strings according to the locale.
     )abr   r   /usr/lib/python3.8/locale.py_strcoll!   s    r   c                 C   s   | S )z\ strxfrm(string) -> string.
        Returns a string that behaves for cmp locale-aware.
    r   )sr   r   r   _strxfrm'   s    r   )*                     c                   C   s,   dgddddg dddddddddddddS )zd localeconv() -> dict.
            Returns numeric and monetary locale-specific parameters.
        r!    .)groupingcurrency_symboln_sign_posnp_cs_precedesn_cs_precedesmon_groupingn_sep_by_spacedecimal_pointnegative_signpositive_signp_sep_by_spaceint_curr_symbolp_sign_posnthousands_sepmon_thousands_sepfrac_digitsmon_decimal_pointint_frac_digitsr   r   r   r   r   r	   ?   s&    c                 C   s   |dkrt ddS )zd setlocale(integer,string=None) -> string.
            Activates/queries locale processing.
        )Nr(   Cz*_locale emulation only supports "C" localer<   )r   )categoryvaluer   r   r   r   W   s    c                  C   s   t  } tr| t | S )N)_localeconv_override_localeconvupdate)dr   r   r   r	   l   s    
c                 c   sJ   d }| D ]<}|t kr d S |dkr:|d kr2td|V  q2|V  |}qd S )Nr   zinvalid grouping)r   
ValueError)r*   Zlast_intervalintervalr   r   r   _grouping_intervalsz   s    rE   Fc           
      C   s   t  }||rdpd }||r dp"d }|s2| dfS | d dkr\|  }| t|d  }|} nd}d}g }t|D ]B}	| r| d d	kr| }d}  q|| |	 d   | d |	  } qp| r||  |  ||| | t|t|d
  fS )Nr8   r7   r/   r*   r    r(   
0123456789r&   )r	   rstriplenrE   appendreversejoin)
r   monetaryconvr7   r*   strippedZright_spacesZleft_spacesgroupsrD   r   r   r   _group   s2    
rR   c                 C   sd   d}|r&| | dkr&|d7 }|d8 }qt | d }|rT| | dkrT|d8 }|d8 }q2| ||d  S )Nr   rG   r&   )rJ   )r   ZamountZlposZrposr   r   r   _strip_padding   s    

rS   zG%(?:\((?P<key>.*?)\))?(?P<modifiers>[-#0-9 +*.hlL]*?)[eEfFgGdiouxXcrs%]c           	      G   s   |r| |f|  }n| | }| d dkr~d}| d}|rRt|d |d\|d< }t |r^dp`d }||}|rt||}n2| d dkrd}|rt||d\}}|rt||}|S )	NrF   ZeEfFgGr   r)   rN   r:   r1   Zdiu)splitrR   r	   rM   rS   )	percentr>   r*   rN   
additionalZ	formattedZsepspartsr1   r   r   r   _format   s*    


rY   c           
   	   C   s
  t t| }td| }t|tjrjg }|D ]8}| d dkrN|d q.|t	| ||| q.nt|t
sz|f}g }d}|D ]r}| d dkr|d q|dd}	|t	| || ||f||d |d |	    |d|	 7 }qt
|}|| S )a  Formats a string in the same way that the % formatting would use,
    but takes the current locale into account.

    Grouping is applied if the third parameter is true.
    Conversion uses monetary thousands separator and grouping strings if
    forth parameter monetary is true.z%srF   %r   Z	modifiersr    r&   )list_percent_refinditersub
isinstance_collections_abcMappinggrouprK   rY   tuplecount)
fvalr*   rN   ZpercentsZnew_fZnew_valZperciZ	starcountr   r   r   r      s4    
c                 G   s^   ddl }|jdtdd t| }|r:t| t| krJtdt|  t	| |||f| S )z&Deprecated, use format_string instead.r   Nz`This method will be removed in a future version of Python. Use 'locale.format_string()' instead.r'   )
stacklevelzHformat() must be given exactly one %%char format specifier, %s not valid)
warningswarnDeprecationWarningr\   matchrJ   rb   rC   reprrY   )rV   r>   r*   rN   rW   ri   rl   r   r   r   r      s     
Tc                 C   sf  t  }||rdpd }|dkr&tdtd| t| |dd}d| d	 }|r||rXd
pZd }|| dk rldpnd }|| dk rdpd }	|r||	rdpd | }n||	rdpd | }|| dk rdpd }
|| dk rdpd }|
dkrd| d }n`|
dkr|| }nL|
dkr|| }n8|
dkr2|d|}n |
dkrJ|d	|}n|| }|ddd	dS )zIFormats val according to the currency settings
    in the current locale.r;   r9   r!   z9Currency formatting is not possible using the 'C' locale.z%%.%ifTrT   <>r5   r+   r   r.   r-   r0   r4   rG   r(   r,   r6   r2   r3   ()r&   r'   r#   r%   )r	   rC   rY   absreplace)rf   Zsymbolr*   ZinternationalrO   Zdigitsr   ZsmbZprecedesZ	separatedZsign_posZsignr   r   r   r     s6    





c                 C   s
   t d| S )z8Convert float to string, taking the locale into account.z%.12g)rY   )rf   r   r   r   r   0  s    c                 C   s:   t  }|d }|r| |d} |d }|r6| |d} | S )zHParses a string as a normalized number according to the locale settings.r7   r(   r1   r)   )r	   rs   )stringrO   tsZddr   r   r   
delocalize4  s    rv   c                 C   s   |t | S )z<Parses a string as a float according to the locale settings.)rv   )rt   funcr   r   r   r   D  s    c                 C   s   t t| S )zAConverts a string to an integer according to the locale settings.)intrv   )rt   r   r   r   r   H  s    c                  C   sB   t td tddd} t| dt|  td} t| dt|  d S )Nr(   z%di[r&   isgQ	@)r   r   r   printr   r   r   )s1r   r   r   _testL  s
    
r|   c                 C   s   d| kr| d |  d }n| }t|}tjj| |}|}| }|tkr\t| }n(|dd}|dd}|tkrt| }|d | S )Nr)   _r(   -)index	encodingsnormalize_encodingaliasesgetlowerlocale_encoding_aliasrs   )codeencodinglangnamenorm_encodingr   r   r   _replace_encoding^  s     

r   c                 C   sR   |dkrFd| kr| d S |  d\}}}|dkr4| S |dkrFt| dS | d | S )Neuror)   z.ISO8859-15)
ISO8859-15UTF-8	ISO8859-1r   @)	partitionr   )r   modifierr}   r   r   r   r   _append_modifieru  s    
r   c           	      C   s  |   }d|kr|dd}d|kr6|dd\}}nd}d|krZ|ddd \}}n|}d}|}|r|dd}|d	d}|d| 7 }|}|r|d| 7 }t|d}|dk	r|S |rt|d}|dk	rd|krt||S |ddd   |kr|S |r|}|r"|d| 7 }t|d}|dk	rnd|krLt||S |dd\}}t||d | S |rt|d}|dk	rd|krt||}t||S |dd\}}|  |krt||d | S | S )
a   Returns a normalized locale code for the given locale
        name.

        The returned locale code is formatted for use with
        setlocale().

        If normalization fails, the original name is returned
        unchanged.

        If the given encoding is not known, the function defaults to
        the default encoding for the locale code just like setlocale()
        does.

    :r)   r   r&   r(   Nr'   r~   r}   )r   rs   rU   locale_aliasr   r   r   )	
localenamer   r   r   r   Zlang_encr   Zlookup_nameZdefmodr   r   r   r     s`    








c                 C   s~   t | }d|kr8|dd\}}|dkr8d|kr8|dfS d|krVt|ddd S |dkrbd	S |d
krndS td|  dS )a   Parses the locale code for localename and returns the
        result as tuple (language code, encoding).

        The localename is normalized and passed through the locale
        alias engine. A ValueError is raised in case the locale name
        cannot be parsed.

        The language code corresponds to RFC 1766.  code and encoding
        can be None in case the values cannot be determined or are
        unknown to this implementation.

    r   r&   r   r)   iso-8859-15Nr'   r<   )NNr   Nr   zunknown locale: %s)r   rU   rc   rC   )r   r   r   r   r   r   _parse_localename  s    r   c              	   C   s\   z4| \}}|dkrd}|dkr$|W S |d | W S W n" t tfk
rV   t ddY nX dS )z Builds a locale code from the given tuple (language code,
        encoding).

        No aliasing or normalizing takes place.

    Nr<   r)   zXLocale must be None, a string, or an iterable of two strings -- language code, encoding.)	TypeErrorrC   )ZlocaletupleZlanguager   r   r   r   _build_localename  s    r   r   r   ZLANGLANGUAGEc              	   C   s   zddl }| \}}W n ttfk
r0   Y n8X tjdkr`|r`|dd dkr`tt|d}||fS ddl	}|j
j}| D ],}||d}|r||dkr|dd } qq|d}t|S )	a   Tries to determine the default locale settings and returns
        them as tuple (language code, encoding).

        According to POSIX, a program which has not called
        setlocale(LC_ALL, "") runs using the portable 'C' locale.
        Calling setlocale(LC_ALL, "") lets it use the default locale as
        defined by the LANG variable. Since we don't want to interfere
        with the current locale setting we thus emulate the behavior
        in the way described above.

        To maintain compatibility with other platforms, not only the
        LANG variable is tested, but a list of variables given as
        envvars parameter. The first found to be defined will be
        used. envvars defaults to the search path used in GNU gettext;
        it must always contain the variable name 'LANG'.

        Except for the code 'C', the language code corresponds to RFC
        1766.  code and encoding can be None in case the values cannot
        be determined.

    r   NZwin32r'   Z0xr   r   r<   )_localeZ_getdefaultlocaleImportErrorAttributeErrorsysplatformwindows_localer   rx   osenvironrU   r   )Zenvvarsr   r   r   r   lookupZvariabler   r   r   r   r   
  s$    
c                 C   s(   t | }| tkr d|kr tdt|S )ap   Returns the current setting for the given locale category as
        tuple (language code, encoding).

        category may be one of the LC_* value except LC_ALL. It
        defaults to LC_CTYPE.

        Except for the code 'C', the language code corresponds to RFC
        1766.  code and encoding can be None in case the values cannot
        be determined.

    ;z category LC_ALL is not supported)
_setlocaler   r   r   )r=   r   r   r   r   r   ?  s    c                 C   s$   |rt |tstt|}t| |S )a^   Set the locale for the given category.  The locale can be
        a string, an iterable of two strings (language code and encoding),
        or None.

        Iterables are converted to strings using the locale aliasing
        engine.  Locale strings are passed directly to the C lib.

        category may be given as one of the LC_* values.

    )r_   _builtin_strr   r   r   )r=   Zlocaler   r   r   r   Q  s    c                 C   s   t | tt  dS )z Sets the locale for category to the default setting.

        The default setting is determined by calling
        getdefaultlocale(). category defaults to LC_ALL.

    N)r   r   r   )r=   r   r   r   r   b  s    winc                 C   s   t jjrdS ddl}|dS )z1Return the charset that the user is likely using.r   r   NF)r   flags	utf8_mode_bootlocaler   )do_setlocaler   r   r   r   r   n  s    Zgetandroidapilevelc                 C   s   dS r   r   )r   r   r   r   r   |  s    c                 C   s&   t jjrdS t d }|dkr"d}|S )zfReturn the charset that the user is likely using,
                by looking at environment variables.r   r&   Nascii)r   r   r   r   )r   resr   r   r   r     s    
c                 C   s`   t jjrdS ddl}| rDtt}zttd W n tk
rB   Y nX |d}| r\tt| |S )zdReturn the charset that the user is likely using,
            according to the system configuration.r   r   Nr(   F)r   r   r   r   r   r   r   r   )r   r   Zoldlocresultr   r   r   r     s    

r<   r   ZJIS7ZeucJPzKOI8-CZCP1251ZCP1255ZCP1256z	ISO8859-2z	ISO8859-5r   z
ISO8859-10z
ISO8859-11z
ISO8859-13z
ISO8859-14z
ISO8859-16z	ISO8859-3z	ISO8859-4z	ISO8859-6z	ISO8859-7z	ISO8859-8z	ISO8859-9ZSJISZTACTISZeucKRr   zKOI8-RzKOI8-TzKOI8-UZRK1048),437cenZjisZjis7ZajecZkoi8cZmicrosoftcp1251Zmicrosoftcp1255Zmicrosoftcp1256Z88591Z88592Z88595Z885915r   latin_1	iso8859_1
iso8859_10
iso8859_11
iso8859_13
iso8859_14
iso8859_15
iso8859_16	iso8859_2	iso8859_3	iso8859_4	iso8859_5	iso8859_6	iso8859_7	iso8859_8	iso8859_9
iso2022_jp	shift_jistactiseuc_jpeuc_krutf_8koi8_rZkoi8_tZkoi8_ukz1048cp1251cp1255cp1256r}   r(   zaz_AZ.KOI8-Czaa_DJ.ISO8859-1zaa_ER.UTF-8zaa_ET.UTF-8zaf_ZA.ISO8859-1zagr_PE.UTF-8zak_GH.UTF-8zam_ET.UTF-8zen_US.ISO8859-1zan_ES.ISO8859-15zanp_IN.UTF-8zar_AA.ISO8859-6zar_AE.ISO8859-6zar_BH.ISO8859-6zar_DZ.ISO8859-6zar_EG.ISO8859-6zar_IN.UTF-8zar_IQ.ISO8859-6zar_JO.ISO8859-6zar_KW.ISO8859-6zar_LB.ISO8859-6zar_LY.ISO8859-6zar_MA.ISO8859-6zar_OM.ISO8859-6zar_QA.ISO8859-6zar_SA.ISO8859-6zar_SD.ISO8859-6zar_SS.UTF-8zar_SY.ISO8859-6zar_TN.ISO8859-6zar_YE.ISO8859-6zas_IN.UTF-8zast_ES.ISO8859-15zayc_PE.UTF-8zaz_AZ.ISO8859-9Ezaz_IR.UTF-8zbe_BY.CP1251zbe_BY.UTF-8@latinzbg_BG.UTF-8zbem_ZM.UTF-8zber_DZ.UTF-8zber_MA.UTF-8zbg_BG.CP1251zbhb_IN.UTF-8zbho_IN.UTF-8zbho_NP.UTF-8zbi_VU.UTF-8zbn_BD.UTF-8zbn_IN.UTF-8zbo_CN.UTF-8zbo_IN.UTF-8znb_NO.ISO8859-1zbr_FR.ISO8859-1zbrx_IN.UTF-8zbs_BA.ISO8859-2zbyn_ER.UTF-8zfr_CA.ISO8859-1zen_US.UTF-8zca_ES.ISO8859-1zca_AD.ISO8859-1zca_ES.UTF-8@valenciazca_FR.ISO8859-1zca_IT.ISO8859-1zce_RU.UTF-8zzh_CN.eucCNzzh_TW.eucTWzchr_US.UTF-8zckb_IQ.UTF-8zcmn_TW.UTF-8zcrh_UA.UTF-8zhr_HR.ISO8859-2zcs_CZ.ISO8859-2zcsb_PL.UTF-8zcv_RU.UTF-8zcy_GB.ISO8859-1zda_DK.ISO8859-1zde_DE.ISO8859-1zde_AT.ISO8859-1zde_BE.ISO8859-1zde_CH.ISO8859-1zde_IT.ISO8859-1zde_LI.UTF-8zde_LU.ISO8859-1zdoi_IN.UTF-8znl_NL.ISO8859-1znl_BE.ISO8859-1zdv_MV.UTF-8zdz_BT.UTF-8zee_EE.ISO8859-4zet_EE.ISO8859-1zel_GR.ISO8859-7zel_CY.ISO8859-7zel_GR.ISO8859-15zen_AG.UTF-8zen_AU.ISO8859-1zen_BE.ISO8859-1zen_BW.ISO8859-1zen_CA.ISO8859-1zen_DK.ISO8859-1zen_DL.UTF-8zen_GB.ISO8859-1zen_HK.ISO8859-1zen_IE.ISO8859-1zen_IL.UTF-8zen_IN.ISO8859-1zen_NG.UTF-8zen_NZ.ISO8859-1zen_PH.ISO8859-1zen_SC.UTF-8zen_SG.ISO8859-1zen_US.ISO8859-15zen_ZA.ISO8859-1zen_ZM.UTF-8zen_ZW.ISO8859-1zen_ZS.UTF-8zen_EN.ISO8859-1zeo_XX.ISO8859-3zeo.UTF-8zeo_EO.ISO8859-3zeo_US.UTF-8zes_ES.ISO8859-1zes_AR.ISO8859-1zes_BO.ISO8859-1zes_CL.ISO8859-1zes_CO.ISO8859-1zes_CR.ISO8859-1zes_CU.UTF-8zes_DO.ISO8859-1zes_EC.ISO8859-1zes_GT.ISO8859-1zes_HN.ISO8859-1zes_MX.ISO8859-1zes_NI.ISO8859-1zes_PA.ISO8859-1zes_PE.ISO8859-1zes_PR.ISO8859-1zes_PY.ISO8859-1zes_SV.ISO8859-1zes_US.ISO8859-1zes_UY.ISO8859-1zes_VE.ISO8859-1zet_EE.ISO8859-15zeu_ES.ISO8859-1zeu_FR.ISO8859-1zfa_IR.UTF-8zfa_IR.ISIRI-3342zff_SN.UTF-8zfi_FI.ISO8859-15zfil_PH.UTF-8zfi_FI.ISO8859-1zfo_FO.ISO8859-1zfr_FR.ISO8859-1zfr_BE.ISO8859-1zfr_CH.ISO8859-1zfr_LU.ISO8859-1zfur_IT.UTF-8zfy_DE.UTF-8zfy_NL.UTF-8zga_IE.ISO8859-1zgl_ES.ISO8859-1zgd_GB.ISO8859-1zgez_ER.UTF-8zgez_ET.UTF-8zgu_IN.UTF-8zgv_GB.ISO8859-1zha_NG.UTF-8zhak_TW.UTF-8zhe_IL.ISO8859-8zhi_IN.ISCII-DEVzhif_FJ.UTF-8zhne_IN.UTF-8zhsb_DE.ISO8859-2zht_HT.UTF-8zhu_HU.ISO8859-2zhy_AM.UTF-8zhy_AM.ARMSCII_8zia.UTF-8zia_FR.UTF-8zis_IS.ISO8859-1zid_ID.ISO8859-1zig_NG.UTF-8zik_CA.UTF-8zit_IT.ISO8859-1zit_CH.ISO8859-1ziu_CA.NUNACOM-8ziw_IL.UTF-8zja_JP.eucJPz
ja_JP.SJISzka_GE.GEORGIAN-ACADEMYzka_GE.GEORGIAN-PSzkab_DZ.UTF-8zkk_KZ.ptcp154zkl_GL.ISO8859-1zkm_KH.UTF-8zkn_IN.UTF-8zko_KR.eucKRzkok_IN.UTF-8zks_IN.UTF-8zks_IN.UTF-8@devanagarizku_TR.ISO8859-9zkw_GB.ISO8859-1zky_KG.UTF-8zlb_LU.UTF-8zlg_UG.ISO8859-10zli_BE.UTF-8zli_NL.UTF-8zlij_IT.UTF-8zlt_LT.ISO8859-13zln_CD.UTF-8zlo_LA.MULELAO-1zlo_LA.IBM-CP1133zlv_LV.ISO8859-13zlzh_TW.UTF-8zmag_IN.UTF-8zmai_IN.UTF-8zmai_NP.UTF-8zmfe_MU.UTF-8zmg_MG.ISO8859-15zmhr_RU.UTF-8zmi_NZ.ISO8859-1zmiq_NI.UTF-8zmjw_IN.UTF-8zmk_MK.ISO8859-5zml_IN.UTF-8zmn_MN.UTF-8zmni_IN.UTF-8zmr_IN.UTF-8zms_MY.ISO8859-1zmt_MT.ISO8859-3zmy_MM.UTF-8znan_TW.UTF-8znds_DE.UTF-8znds_NL.UTF-8zne_NP.UTF-8znhn_MX.UTF-8zniu_NU.UTF-8zniu_NZ.UTF-8znl_AW.UTF-8znn_NO.ISO8859-1zno_NO.ISO8859-1zny_NO.ISO8859-1znr_ZA.ISO8859-1znso_ZA.ISO8859-15zoc_FR.ISO8859-1zom_ET.UTF-8zom_KE.ISO8859-1zor_IN.UTF-8zos_RU.UTF-8zpa_IN.UTF-8zpa_PK.UTF-8zpap_AN.UTF-8zpap_AW.UTF-8zpap_CW.UTF-8zpd_US.ISO8859-1zpd_DE.ISO8859-1zph_PH.ISO8859-1zpl_PL.ISO8859-2zpt_PT.ISO8859-1zpt_BR.ISO8859-1zpp_AN.ISO8859-1zps_AF.UTF-8zquz_PE.UTF-8zraj_IN.UTF-8zro_RO.ISO8859-2zru_RU.UTF-8zru_UA.KOI8-Uzru_RU.KOI8-Rzrw_RW.ISO8859-1zsa_IN.UTF-8zsat_IN.UTF-8zsc_IT.UTF-8zsd_IN.UTF-8zsd_IN.UTF-8@devanagarizsd_PK.UTF-8zse_NO.UTF-8zsr_RS.UTF-8@latinzsgs_LT.UTF-8zsr_CS.ISO8859-2zsh_HR.ISO8859-2zshn_MM.UTF-8zshs_CA.UTF-8zsi_LK.UTF-8zsid_ET.UTF-8zsk_SK.ISO8859-2zsl_SI.ISO8859-2zsl_CS.ISO8859-2zsm_WS.UTF-8zso_DJ.ISO8859-1zso_ET.UTF-8zso_KE.ISO8859-1zso_SO.ISO8859-1zsr_CS.ISO8859-5zsq_AL.ISO8859-2zsq_MK.UTF-8zsr_RS.UTF-8zsr_CS.UTF-8@latinzsr_CS.UTF-8zsr_ME.UTF-8zsr_CS.CP1251zss_ZA.ISO8859-1zst_ZA.ISO8859-1zsv_SE.ISO8859-1zsv_FI.ISO8859-1zsw_KE.UTF-8zsw_TZ.UTF-8zszl_PL.UTF-8zta_IN.TSCII-0zta_LK.UTF-8ztcy_IN.UTF-8zte_IN.UTF-8ztg_TJ.KOI8-Czth_TH.ISO8859-11zth_TH.TIS620zthe_NP.UTF-8zti_ER.UTF-8zti_ET.UTF-8ztig_ER.UTF-8ztk_TM.UTF-8ztl_PH.ISO8859-1ztn_ZA.ISO8859-15zto_TO.UTF-8ztpi_PG.UTF-8ztr_TR.ISO8859-9ztr_CY.ISO8859-9zts_ZA.ISO8859-1ztt_RU.TATAR-CYRztt_RU.UTF-8@iqtelifzug_CN.UTF-8zuk_UA.KOI8-Uzunm_US.UTF-8zur_PK.CP1256zur_IN.UTF-8zuz_UZ.UTF-8zve_ZA.UTF-8z
vi_VN.TCVNzvi_VN.VISCIIzwa_BE.ISO8859-1zwae_CH.UTF-8zwal_ET.UTF-8zwo_SN.UTF-8zxh_ZA.ISO8859-1zyi_US.CP1255zyo_NG.UTF-8zyue_HK.UTF-8zyuw_PG.UTF-8zzh_CN.gb2312z
zh_TW.big5zzh_HK.big5hkscszzh_SG.GB2312z	zh_SG.GBKzzu_ZA.ISO8859-1(L  Za3Za3_azz
a3_az.koicZaa_djZaa_erZaa_etZafZaf_zaZagr_peZak_ghZamZam_etZamericanZan_esZanp_inZarZar_aaZar_aeZar_bhZar_dzZar_egZar_inZar_iqZar_joZar_kwZar_lbZar_lyZar_maZar_omZar_qaZar_saZar_sdZar_ssZar_syZar_tnZar_yearabicasZas_inZast_esZayc_peZazZaz_azzaz_az.iso88599eZaz_irZbezbe@latinz
be_bg.utf8Zbe_byzbe_by@latinZbem_zmZber_dzZber_maZbgZbg_bgzbhb_in.utf8Zbho_inZbho_npZbi_vuZbn_bdZbn_inZbo_cnZbo_inZbokmalu   bokmålbrZbr_frZbrx_inZbsZbs_baZ	bulgarianZbyn_err   zc-frenchzc.asciizc.enz
c.iso88591zc.utf8Zc_czc_c.cZcaZca_adZca_eszca_es@valenciaZca_frZca_itZcatalanZce_ruZcextendz	chinese-sz	chinese-tZchr_usZckb_iqZcmn_twZcrh_uaZcroatianZcsZcs_csZcs_czZcsb_plZcv_ruZcyZcy_gbZczZcz_czZczechZdaZda_dkZdanishZdanskZdeZde_atZde_beZde_chZde_deZde_itz
de_li.utf8Zde_luZdeutschZdoi_inZdutchzdutch.iso88591Zdv_mvZdz_btZeeZee_eeZeestiZelZel_cyZel_grz
el_gr@euror   Zen_agZen_auZen_beZen_bwZen_caZen_dkz
en_dl.utf8Zen_gbZen_hkZen_ieZen_ilZen_inZen_ngZen_nzZen_phz
en_sc.utf8Zen_sgZen_ukZen_uszen_us@euro@euroZen_zaZen_zmZen_zwz
en_zw.utf8Zeng_gbZenglishzenglish.iso88591Z
english_ukzenglish_united-stateszenglish_united-states.437Z
english_usZeozeo.utf8Zeo_eoz
eo_us.utf8Zeo_xxZesZes_arZes_boZes_clZes_coZes_crZes_cuZes_doZes_ecZes_esZes_gtZes_hnZes_mxZes_niZes_paZes_peZes_prZes_pyZes_svZes_usZes_uyZes_veZestonianZetZet_eeZeuZeu_esZeu_frZfaZfa_irzfa_ir.isiri3342Zff_snZfiZfi_fiZfil_phZfinnishZfoZfo_fofrZfr_beZfr_caZfr_chZfr_frZfr_luu	   françaisZfre_frZfrenchzfrench.iso88591Zfrench_franceZfur_itZfy_deZfy_nlZgaZga_ieZgalegoZgalicianZgdZgd_gbZger_deZgermanzgerman.iso88591Zgerman_germanyZgez_erZgez_etZglZgl_esgreekZgu_inZgvZgv_gbZha_ngZhak_twZheZhe_ilhebrewhiZhi_inzhi_in.isciidevZhif_fjZhneZhne_inZhrZhr_hrZhrvatskiZhsb_deZht_htZhuZhu_huZ	hungarianZhy_amzhy_am.armscii8ZiaZia_frZ	icelandicidZid_idZig_ngZik_cainZin_idry   Zis_isz
iso-8859-1r   z	iso8859-1z
iso8859-15
iso_8859_1iso_8859_15itZit_chZit_itZitalianZiuZiu_caziu_ca.nunacom8ZiwZiw_ilz
iw_il.utf8ZjaZja_jpz	ja_jp.euczja_jp.mscodez	ja_jp.pckZjapanZjapanesezjapanese-euczjapanese.eucZjp_jpZkaZka_gezka_ge.georgianacademyzka_ge.georgianpszka_ge.georgianrsZkab_dzZkk_kzZklZkl_glZkm_khZknZkn_inZkoZko_krz	ko_kr.eucZkok_inkoreanz
korean.eucZksZks_inzks_in@devanagari.utf8Zku_trkwZkw_gbZkyZky_kgZlb_luZlg_ugZli_beZli_nlZlij_itZ
lithuanianZln_cdloZlo_lazlo_la.cp1133zlo_la.ibmcp1133zlo_la.mulelao1ltZlt_ltZlvZlv_lvZlzh_twZmag_inZmaiZmai_inZmai_npZmfe_muZmg_mgZmhr_rumiZmi_nzZmiq_niZmjw_inZmkZmk_mkZmlZml_inZmn_mnZmni_inZmrZmr_inZmsZms_myZmtZmt_mtZmy_mmZnan_twZnbZnb_noZnds_deZnds_nlZne_npZnhn_mxZniu_nuZniu_nznlZnl_awZnl_beZnl_nlZnnZnn_noZnoz
no@nynorskZno_nozno_no.iso88591@bokmalzno_no.iso88591@nynorskZ	norwegianZnrZnr_zaZnsoZnso_zaZnyZny_noZnynorskZocZoc_frZom_etZom_keorZor_inZos_ruZpaZpa_inZpa_pkZpap_anZpap_awZpap_cwZpdZpd_deZpd_usZphZph_phZplZpl_plZpolishZ
portugueseZportuguese_brazilposixz
posix-utf2ZppZpp_anZps_afZptZpt_brZpt_ptZquz_peZraj_inZroZro_roZromanianZruZru_ruZru_uaZrumanianZrussianZrwZrw_rwZsa_inZsat_inZsc_itZsdZsd_inzsd_in@devanagari.utf8Zsd_pkZse_noZserbocroatianZsgs_ltZshzsh_ba.iso88592@bosniaZsh_hrzsh_hr.iso88592Zsh_spZsh_yuZshn_mmZshs_caZsiZsi_lkZsid_etZsinhalaZskZsk_skZslZsl_csZsl_siZslovakZsloveneZ	slovenianZsm_wsZso_djZso_etZso_keZso_soZspZsp_yuZspanishZspanish_spainZsqZsq_alZsq_mksrzsr@cyrilliczsr@latnZsr_cszsr_cs.iso88592@latnz
sr_cs@latnZsr_meZsr_rsz
sr_rs@latnZsr_spZsr_yuzsr_yu.cp1251@cyrilliczsr_yu.iso88592zsr_yu.iso88595zsr_yu.iso88595@cyrilliczsr_yu.microsoftcp1251@cyrillicz
sr_yu.utf8zsr_yu.utf8@cyrilliczsr_yu@cyrillicZssZss_zastZst_zaZsvZsv_fiZsv_seZsw_keZsw_tzZswedishZszl_plZtaZta_inzta_in.tsciizta_in.tscii0Zta_lkztcy_in.utf8ZteZte_inZtgZtg_tjZthZth_thzth_th.tactiszth_th.tis620thaiZthe_npZti_erZti_etZtig_erZtk_tmZtlZtl_phZtnZtn_zaZto_toZtpi_pgZtrZtr_cyZtr_trru   Zts_zaZttZtt_ruztt_ru.tatarcyrztt_ru@iqtelifZturkishZug_cnZukZuk_uaZunivZ	universalzuniversal.utf8@ucs4Zunm_usZurZur_inZur_pkZuzZuz_uzzuz_uz@cyrillicZveZve_zaZviZvi_vnz
vi_vn.tcvnzvi_vn.tcvn5712zvi_vn.visciizvi_vn.viscii111ZwaZwa_beZwae_chZwal_etZwo_snZxhZxh_zaZyiZyi_usZyo_ngZyue_hkZyuw_pgZzhZzh_cnz
zh_cn.big5z	zh_cn.eucZzh_hkzzh_hk.big5hkZzh_sgz	zh_sg.gbkZzh_twz	zh_tw.euczzh_tw.euctwZzuZzu_zaZaf_ZAZsq_ALZgsw_FRZam_ETZar_SAZar_IQZar_EGZar_LYZar_DZZar_MAZar_TNZar_OMZar_YEZar_SYZar_JOZar_LBZar_KWZar_AEZar_BHZar_QAZhy_AMZas_INZaz_AZZba_RUZeu_ESZbe_BYZbn_INZbs_BAZbr_FRZbg_BGZca_ESZzh_CHSZzh_TWZzh_CNZzh_HKZzh_SGZzh_MOZzh_CHTZco_FRZhr_HRZhr_BAZcs_CZZda_DKZgbz_AFZdiv_MVZnl_NLZnl_BEZen_USZen_GBZen_AUZen_CAZen_NZZen_IEZen_ZAZen_JAZen_CBZen_BZZen_TTZen_ZWZen_PHZen_INZen_MYZet_EEZfo_FOZfil_PHZfi_FIZfr_FRZfr_BEZfr_CAZfr_CHZfr_LUZfr_MCZfy_NLZgl_ESZka_GEZde_DEZde_CHZde_ATZde_LUZde_LIZel_GRZkl_GLZgu_INZha_NGZhe_ILZhi_INZhu_HUZis_ISZid_IDZiu_CAZga_IEZit_ITZit_CHZja_JPZkn_INZkk_KZZkh_KHZqut_GTZrw_RWZkok_INZko_KRZky_KGZlo_LAZlv_LVZlt_LTZdsb_DEZlb_LUZmk_MKZms_MYZms_BNZml_INZmt_MTZmi_NZZarn_CLZmr_INZmoh_CAZmn_MNZmn_CNZne_NPZnb_NOZnn_NOZoc_FRZor_INZps_AFZfa_IRZpl_PLZpt_BRZpt_PTZpa_INZquz_BOZquz_ECZquz_PEZro_ROZrm_CHZru_RUZsmn_FIZsmj_NOZsmj_SEZse_NOZse_SEZse_FIZsms_FIZsma_NOZsma_SEZsa_INZsr_SPZsr_BAZsi_LKZns_ZAZtn_ZAZsk_SKZsl_SIZes_ESZes_MXZes_GTZes_CRZes_PAZes_DOZes_VEZes_COZes_PEZes_ARZes_ECZes_CLZes_URZes_PYZes_BOZes_SVZes_HNZes_NIZes_PRZes_USZsw_KEZsv_SEZsv_FIZsyr_SYZtg_TJZtmz_DZZta_INZtt_RUZte_INZth_THZbo_BTZbo_CNZtr_TRZtk_TMZug_CNZuk_UAZwen_DEZur_PKZur_INZuz_UZZvi_VNZcy_GBZwo_SNZxh_ZAZsah_RUZii_CNZyo_NGZzu_ZA)i6  i  i  i^  i  i  i  i  i  i  i  i   i$  i(  i,  i0  i4  i8  i<  i@  i+  iM  i,  i,  im  i-  i#  iE  i   i  i~  i  i  r%   i  i  i  i  i  i|  i  i  i  i  i  i  ie  i  i  i	  i	  i	  i	  i	  i	  i	  i	   i	$  i	(  i	,  i	0  i	4  i	@  i	D  i	H  i%  i8  id  i  i  i  i  i  i  i  ib  iV  i7  i  i  i  i  i  i  io  iG  ih  i  i9  i  i  i!  i]  i]  i<  i  i  i  iK  i?  iS  i  i  iW  i  i@  iT  i&  i'  i.  in  i/  i>  i>  iL  i:  i  iz  iN  i|  iP  iP  ia  i  i  i  iH  ic  i)  i  i  i  iF  ik  ik  ik  i  i  i  i;$  i;  i;  i;  i;  i;  i;   i;  i;  iO  i  i  i  i  i[  il  i2  i  i$  i
  i
  i
  i
  i
  i
  i
  i
   i
$  i
(  i
,  i
0  i
4  i
8  i
<  i
@  i
D  i
H  i
L  i
P  i
T  iA  i  i  iZ  i(  i_  iI  iD  iJ  i  iQ  iQ  i  iB  i  i"  i.  i   i   iC  iC  i*  iR  i  i4  i  ix  ij  i5  c                  C   s  i } | fdd}|  | d= t d t d t \}}t d|p@d t d|pNd t   t d	 t d |  D ]@\}}t |d
 t|\}}t d|pd t d|pd t   qpt   t d t d t  |  D ]B\}}t |d
 t|\}}t d|pd t d|pd t   qzttd W n$   t d t d t d Y nhX t   t d t d |  D ]F\}}t |d
 t|\}}t d|pd t d|pd t   qldS )z Test function.
    c                 S   s0   t   D ] \}}|d d dkr
|| |< q
d S )Nr#   ZLC_)globalsitems)
categorieskvr   r   r   _init_categories  s    z'_print_locale.<locals>._init_categoriesr   z4Locale defaults as determined by getdefaultlocale():zH------------------------------------------------------------------------z
Language: z(undefined)z
Encoding: zLocale settings on startup:z...z   Language: z   Encoding: z,Locale settings after calling resetlocale():r(   zNOTE:z9setlocale(LC_ALL, "") does not support the default localez&given in the OS environment variables.z4Locale settings after calling setlocale(LC_ALL, ""):N)rz   r   r   r   r   r   r   )r   r   Zlangencnamer=   r   r   r   _print_locale  sV    



r   LC_MESSAGES__main__zLocale aliasing:zNumber formatting:)N)F)FF)FF)FF)TFF)r   )N)T)T)T)T)K__doc__r   r   Zencodings.aliasesrer`   builtinsr   r   	functools__all__r   r   r   r   r   r   r   r   r   r   r   r   rC   r   r	   r   r   r   r
   r?   r@   wrapsrE   rR   rS   compiler\   rY   r   r   r   rv   floatr   r   r|   r   r   r   r   r   r   r   r   r   r   
startswithr   CODESET	NameErrorhasattrr   sortedr   r   r   rs   
setdefaultr   r   r   rK   __name__rz   r   r   r   r   <module>   st                 	



%-S"5
$6}    
    a  V:

