ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     o
    p̦i                     @   s   d Z ddlZdd Zdd Zdd Zd	d
 Zdd ZdZdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZG dd dejZG dd dejZG d d! d!ejZG d"d# d#eejZG d$d% d%eejZd&d' ZdS )(uY    Codec for the Punicode encoding, as specified in RFC 3492

Written by Martin v. Löwis.
    Nc                 C   sP   t  }t }| D ]}t|dk r|t| q|| qt|}t||fS )z 3.1 Basic code point segregation   )	bytearraysetordappendaddsortedbytes)strbaseextendedc r   )/usr/lib/python3.10/encodings/punycode.py	segregate
   s   r   c                 C   s&   d}| D ]}t ||k r|d7 }q|S )z@Return the length of str, considering only characters below max.r      )r   )r
   maxresr   r   r   r   selective_len   s   r   c                 C   sL   t | }	 |d7 }||krdS | | }||kr|d |fS ||k r%|d7 }q)a  Return a pair (index, pos), indicating the next occurrence of
    char in str. index is the position of the character considering
    only ordinals up to and including char, and pos is the position in
    the full string. index/pos is the starting position in the full
    string.r   )r   )len)r
   charindexposlr   r   r   r   selective_find   s   r   c                 C   s   d}g }d}|D ]:}d }}t |}t| |}	|	d ||  }
	 t| |||\}}|dkr.n|
|| 7 }
||
d  |}d}
q |}q|S )3.2 Insertion unsort codingr   r   r   r   )r   r   r   r   )r
   r   oldcharresultoldindexr   r   r   r   curlendeltar   r   r   insertion_unsort0   s&   
r"   c                 C   s,   d| d  | }|dk rdS |dkrdS |S )N$   r      r   )jbiasr   r   r   r   TF   s   r'   s$   abcdefghijklmnopqrstuvwxyz0123456789c                 C   sl   t  }d}	 t||}| |k r|t|   t|S |t|| | d|     | | d|  } |d7 }q)(3.3 Generalized variable-length integersr   r   r#   )r   r'   r   digitsr	   )Nr&   r   r%   tr   r   r   generate_generalized_integerN   s   
r,   c                 C   s^   |r| d } n| d } | | | 7 } d}| dkr#| d } |d7 }| dks|d|  | d   }|S )Ni     r   i  #   r#   &   r   )r!   firstnumchars	divisionsr&   r   r   r   adapt[   s   
r3   c                 C   sP   t  }d}t|D ]\}}t||}|| t||dk| | d }q	t|S )z3.4 Bias adaptationH   r   r   )r   	enumerater,   extendr3   r	   )baselendeltasr   r&   pointsr!   sr   r   r   generate_integersj   s   

r;   c                 C   s8   t | \}}t| |}tt||}|r|d | S |S )N   -)r   r"   r;   r   )textr   r   r8   r   r   r   punycode_encodeu   s   
r>   c           
      C   s   d}d}d}	 zt | | }W n ty&   |dkrtd|d df Y S w |d7 }d|  kr5dkr<n n|d }n#d|  krFd	krMn n|d
 }n|dkr[td| |d   |dfS t||}	||| 7 }||	k rr||fS |d|	  }|d7 }q)r(   r   r   strictzincomplete punicode stringNA   Z   0   9      z Invalid extended code point '%s'r#   )r   
IndexErrorUnicodeErrorr'   )
r   extposr&   errorsr   wr%   r   digitr+   r   r   r   decode_generalized_number   s8   



rK   c           	      C   s   d}d}d}d}|t |k rit||||\}}|du r| S ||d 7 }||t | d  7 }|dkr?|dkr;td	| td
}|t | d  }| d| t| | |d  } t||dkt | }|}|t |k s| S )r   r   r   r4   r   Nr   i r?   zInvalid character U+%x?)r   rK   rF   r   chrr3   )	r   r   rH   r   r   r&   rG   newposr!   r   r   r   insertion_sort   s,    rO   c                 C   s   t | tr
| d} t | trt| } | d}|dkr&d}t| d }nt| d | d|}t| |d d  d }t|||S )Nasciir<   r    r   )
isinstancer
   encode
memoryviewr	   rfindupperrO   )r=   rH   r   r   r   r   r   r   punycode_decode   s   



rW   c                   @   s    e Zd ZdddZdddZdS )Codecr?   c                 C   s   t |}|t|fS N)r>   r   selfinputrH   r   r   r   r   rS      s   zCodec.encodec                 C   s*   |dvr
t d| t||}|t|fS N)r?   replaceignorezUnsupported error handling )rF   rW   r   rZ   r   r   r   decode   s   
zCodec.decodeN)r?   )__name__
__module____qualname__rS   r`   r   r   r   r   rX      s    
rX   c                   @      e Zd ZdddZdS )IncrementalEncoderFc                 C   s   t |S rY   )r>   r[   r\   finalr   r   r   rS      s   zIncrementalEncoder.encodeNF)ra   rb   rc   rS   r   r   r   r   re          re   c                   @   rd   )IncrementalDecoderFc                 C   s$   | j dvrtd| j  t|| j S r]   )rH   rF   rW   rf   r   r   r   r`      s   
zIncrementalDecoder.decodeNrh   )ra   rb   rc   r`   r   r   r   r   rj      ri   rj   c                   @      e Zd ZdS )StreamWriterNra   rb   rc   r   r   r   r   rl          rl   c                   @   rk   )StreamReaderNrm   r   r   r   r   ro      rn   ro   c                	   C   s    t jdt jt jttttdS )Npunycode)namerS   r`   incrementalencoderincrementaldecoderstreamwriterstreamreader)	codecs	CodecInforX   rS   r`   re   rj   rl   ro   r   r   r   r   getregentry   s   rx   )__doc__rv   r   r   r   r"   r'   r)   r,   r3   r;   r>   rK   rO   rW   rX   re   rj   rl   ro   rx   r   r   r   r   <module>   s*    
