a
    xdč  ć                   @   s   d dl Z zed W n  ey4   g d¢ZdgZY n0 g d¢Zg d¢Zee Zdd Zd	d
 Zdd Zdd Z	dd Z
e  de
” dS )é    Né   )©é    i’×  ©i ł  iĻż  ©išż  iļ’  ©i ą  i’ų  )r   r   r   )r   iż’ )i   iż’ )i   iż’ )i   iż’ )i   iż’ )i   iż’ )i   iż’ )i   iż’ )i  	 iż’	 )i  
 iż’
 )i   iż’ )i   iż’ )i   iż’ )i  iż’ )r   )i   iż’ )i   iż’ c                 C   s0   t D ]&\}}||   kr |krn q dS qdS )NTF)Ś_ESCAPE_RANGES)ŚoctetŚstartŚend© r   śH/var/www/html/Ranjet/env/lib/python3.9/site-packages/openid/codecutil.pyŚ_in_escape_range.   s    r   c                 C   s    t | }d|  kodkS   S )Ni Ų  i’Ū  ©Śord©Ś	characterZ
char_valuer   r   r   Ś_starts_surrogate_pair5   s    r   c                 C   s    t | }d|  kodkS   S )Ni Ü  i’ß  r   r   r   r   r   Ś_ends_surrogate_pair:   s    r   c                 C   s   g }t | }|D ]z}t|}t|rHt| d”D ]}| d| ” q2qt|r|t|}||  d”D ]}| d| ” qfq| t|” q|S )Nzutf-8z%%%X)Śiterr   r   ŚchrŚencodeŚappendr   Śnext)ŚchunkŚreplacementsZ
chunk_iterr   Ś	codepointŚcharZnext_characterr   r   r   Ś_pct_encoded_replacements?   s    r   c                 C   s*   | j | j| j }t|}d |”| jfS )z¶
    Encoding error handler that does percent-escaping of Unicode, to be used
    with codecs.register_error
    TODO: replace use of this with urllib.parse.quote as appropriate
    Ś )Śobjectr
   r   r   Śjoin)Śerrr   r   r   r   r   Ś_pct_escape_handlerP   s    r#   Zoid_percent_escape)Ścodecsr   Ś
ValueErrorZUCSCHARZIPRIVATEr   r   r   r   r   r#   Śregister_errorr   r   r   r   Ś<module>   s   ’
