o
    ˷e                     @   s   d dl Z zed W n ey   g dZdgZY n	w 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   s.   t D ]\}}||   kr|kr dS  qqdS )NTF)_ESCAPE_RANGES)octetstartend r   G/var/www/ideatree/venv/lib/python3.10/site-packages/openid/codecutil.py_in_escape_range.   s
   r   c                 C       t | }d|  kodkS   S )Ni   i  ord	character
char_valuer   r   r   _starts_surrogate_pair5      r   c                 C   r   )Ni   i  r   r   r   r   r   _ends_surrogate_pair:   r   r   c                 C   s   g }t | }|D ]=}t|}t|r$t|dD ]	}|d|  qqt|r>t|}|| dD ]	}|d|  q3q|t| q|S )Nzutf-8z%%%X)iterr   r   chrencodeappendr   next)chunkreplacements
chunk_iterr   	codepointchar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(   oid_percent_escape)codecsr   
ValueErrorUCSCHARIPRIVATEr   r   r   r   r#   r(   register_errorr   r   r   r   <module>   s"    