§
    (¶Õiã  ã                   ó&  — d Z ddlZd„ Zd„ Zd„ Zd„ Zd„ ZdZd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ deej        ¦  «        Z G d„ deej        ¦  «        Zd„ ZdS )uY    Codec for the Punicode encoding, as specified in RFC 3492

Written by Martin v. LÃ¶wis.
é    Nc                 ó  — t          ¦   «         }t          ¦   «         }| D ]M}t          |¦  «        dk     r#|                     t          |¦  «        ¦  «         Œ8|                     |¦  «         ŒNt          |¦  «        }t          |¦  «        |fS )z 3.1 Basic code point segregationé€   )Ú	bytearrayÚsetÚordÚappendÚaddÚsortedÚbytes)ÚstrÚbaseÚextendedÚcs       ú)/usr/lib/python3.11/encodings/punycode.pyÚ	segregater   
   s|   € å‰;Œ;€DÝ‰uŒu€HØð ð ˆÝˆq‰6Œ6�CŠ<ˆ<Ø�KŠK�˜A™œÑÔÐÐà�LŠL˜‰OŒOˆOˆOÝ�hÑÔ€HÝ�‰;Œ;˜Ð Ð ó    c                 óD   — d}| D ]}t          |¦  «        |k     r|dz  }Œ|S )z@Return the length of str, considering only characters below max.r   é   )r   )r   ÚmaxÚresr   s       r   Úselective_lenr      s4   € à
€CØð ð ˆÝˆq‰6Œ6�CŠ<ˆ<Ø�1‰HˆCøØ€Jr   c                 ó~   — t          | ¦  «        }	 |dz  }||k    rdS | |         }||k    r|dz   |fS ||k     r|dz  }Œ.)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   s         r   Úselective_findr      sb   € õ 	ˆC‰Œ€AðØˆq‰ˆØ�!Š8ˆ8Ø�8Ø�ŒHˆØ�Š9ˆ9Ø˜‘7˜C�<ÐØ�ŠXˆXØ�Q‰JˆEðr   c                 ó   — d}g }d}|D ]t}dx}}t          |¦  «        }t          | |¦  «        }	|	dz   ||z
  z  }
	 t          | |||¦  «        \  }}|dk    rn%|
||z
  z  }
|                     |
dz
  ¦  «         |}d}
ŒA|}Œu|S )ú3.2 Insertion unsort codingr   r   r   r   )r   r   r   r   )r   r   ÚoldcharÚresultÚoldindexr   r   r   r   ÚcurlenÚdeltas              r   Úinsertion_unsortr'   0   sÀ   € à€GØ€FØ€HØð ð ˆØÐˆ�Ý�1‰vŒvˆÝ˜s DÑ)Ô)ˆØ˜‘˜d W™nÑ-ˆð	Ý& s¨1¨U°3Ñ7Ô7‰IˆE�#Ø˜Š{ˆ{ØØ�U˜XÑ%Ñ%ˆEØ�MŠM˜% ™'Ñ"Ô"Ð"ØˆHØˆEð	ð ˆˆà€Mr   c                 ó<   — d| dz   z  |z
  }|dk     rdS |dk    rdS |S )Né$   r   é   © )ÚjÚbiasr   s      r   ÚTr.   F   s3   € à
��A‘‰,˜Ñ
€CØ
ˆQ‚w€w�q�qØ
ˆR‚x€x˜˜Ø€Jr   s$   abcdefghijklmnopqrstuvwxyz0123456789c                 ó(  — t          ¦   «         }d}	 t          ||¦  «        }| |k     r/|                     t          |          ¦  «         t	          |¦  «        S |                     t          || |z
  d|z
  z  z            ¦  «         | |z
  d|z
  z  } |dz  }Œ‚)ú(3.3 Generalized variable-length integersr   r   r)   )r   r.   r   Údigitsr   )ÚNr-   r#   r,   Úts        r   Úgenerate_generalized_integerr4   N   s–   € å‰[Œ[€FØ	€AðÝˆa�‰JŒJˆØˆqŠ5ˆ5Ø�MŠM�& œ)Ñ$Ô$Ð$Ý˜‘=”=Ð Ø�Š•f˜Q 1 q¡5¨R°!©VÑ"4Ñ5Ô6Ñ7Ô7Ð7Ø�‰U˜˜Q™ÑˆØ	ˆQ‰ˆðr   c                 ó|   — |r| dz  } n| dz  } | | |z  z  } d}| dk    r| dz  } |dz  }| dk    °|d| z  | dz   z  z   }|S )Ni¼  é   r   iÇ  é#   r)   é&   r+   )r&   ÚfirstÚnumcharsÚ	divisionsr-   s        r   Úadaptr<   [   sv   € Øð Ø�#‰ˆˆà�!‰ˆØ	ˆU�hÑÑ€Eà€IØ
�#Š+ˆ+Ø˜‘ˆØ�R‰ˆ	ð �#Š+ˆ+ð ˜˜U™
 u¨r¡zÑ2Ñ3€DØ€Kr   c                 óê   — t          ¦   «         }d}t          |¦  «        D ]E\  }}t          ||¦  «        }|                     |¦  «         t	          ||dk    | |z   dz   ¦  «        }ŒFt          |¦  «        S )z3.4 Bias adaptationéH   r   r   )r   Ú	enumerater4   Úextendr<   r   )ÚbaselenÚdeltasr#   r-   Úpointsr&   Úss          r   Úgenerate_integersrE   j   sz   € õ ‰[Œ[€FØ€DÝ" 6Ñ*Ô*ð 9ð 9‰ˆ�Ý(¨°Ñ5Ô5ˆØ�Š�aÑÔÐÝ�U˜F AšI w¨v¡~°aÑ'7Ñ8Ô8ˆˆÝ�‰=Œ=Ðr   c                 ó˜   — t          | ¦  «        \  }}t          | |¦  «        }t          t          |¦  «        |¦  «        }|r|dz   |z   S |S )Nó   -)r   r'   rE   r   )Útextr   r   rB   s       r   Úpunycode_encoderI   u   sQ   € Ý˜t‘_”_�N€Dˆ(Ý˜d HÑ-Ô-€FÝ ¥ T¡¤¨FÑ3Ô3€HØð &Ø�d‰{˜XÑ%Ð%Ø€Or   c                 ó¢  — d}d}d}	 	 t          | |         ¦  «        }n,# t          $ r |dk    rt          d¦  «        ‚|dz   dfcY S w xY w|dz  }d|cxk    rdk    r	n n|dz
  }n;d|cxk    rd	k    r	n n|d
z
  }n%|dk    rt          d| |dz
           z  ¦  «        ‚|dfS t          ||¦  «        }	|||z  z  }||	k     r||fS |d|	z
  z  }|dz  }ŒÉ)r0   r   r   Ústrictzincomplete punicode stringNéA   éZ   é0   é9   é   z Invalid extended code point '%s'r)   )r   Ú
IndexErrorÚUnicodeErrorr.   )
r   Úextposr-   Úerrorsr#   Úwr,   r   Údigitr3   s
             r   Údecode_generalized_numberrW      sd  € à€FØ	€AØ	€Aðð	$Ý�x Ô'Ñ(Ô(ˆDˆDøÝð 	$ð 	$ð 	$Ø˜Ò!Ð!Ý"Ð#?Ñ@Ô@Ð@Ø˜A‘:˜tÐ#Ð#Ð#Ð#ð	$øøøð 	�!‰ˆØ�4ÐÐÒÐ˜4ÒÐÐÐÐØ˜4‘KˆEˆEØ�TÐ!Ð!Ò!Ð!˜TÒ!Ð!Ð!Ð!Ð!Ø˜2‘IˆEˆEØ�xÒÐÝÐAØ!)¨&°©(Ô!3ñ 4ñ 5ô 5ð 5ð ˜4�<ÐÝˆa�‰JŒJˆØ�%˜!‘)ÑˆØ�1Š9ˆ9Ø˜6�>Ð!Ø��a‘‰LˆØ	ˆQ‰ˆð-s   ‰ Ÿ&AÁAc                 óê  — d}d}d}d}|t          |¦  «        k     r×t          ||||¦  «        \  }}|€| S ||dz   z  }||t          | ¦  «        dz   z  z  }|dk    r'|dk    rt          d	|z  ¦  «        ‚t          d
¦  «        }|t          | ¦  «        dz   z  }| d|…         t	          |¦  «        z   | |d…         z   } t          ||dk    t          | ¦  «        ¦  «        }|}|t          |¦  «        k     °×| S )r!   r   r   r>   r   Nr   iÿÿ rK   zInvalid character U+%xú?)r   rW   rR   r   Úchrr<   )	r   r   rT   r   r   r-   rS   Únewposr&   s	            r   Úinsertion_sortr\   �   s  € à€DØ
€CØ€DØ€FØ
•3�x‘=”=Ò
 Ð
 Ý1°(¸FØ26¸ñ@ô @‰ˆ�àˆ=ð ˆKØˆu�Q‰w‰ˆØ��˜D™	œ	 A™Ñ&Ñ&ˆØ�(Š?ˆ?Ø˜Ò!Ð!Ý"Ð#;¸dÑ#BÑCÔCÐCÝ�s‘8”8ˆDØ•S˜‘Y”Y ‘]Ñ#ˆØ�D�S�DŒz�C ™IœIÑ%¨¨S¨T¨T¬
Ñ2ˆÝ�U˜V qš[­3¨t©9¬9Ñ5Ô5ˆØˆð! •3�x‘=”=Ò
 Ð
 ð" €Kr   c                 óÌ  — t          | t          ¦  «        r|                      d¦  «        } t          | t          ¦  «        rt	          | ¦  «        } |                      d¦  «        }|dk    r%d}t          | d¦  «                             ¦   «         }nFt          | d |…         d|¦  «        }t          | |dz   d …         d¦  «                             ¦   «         }t          |||¦  «        S )NÚasciirG   r   Ú r   )Ú
isinstancer   ÚencodeÚ
memoryviewr   ÚrfindÚupperr\   )rH   rT   r   r   r   s        r   Úpunycode_decodere   ¶   sÐ   € Ý�$�ÑÔð $Ø�{Š{˜7Ñ#Ô#ˆÝ�$�
Ñ#Ô#ð Ý�T‰{Œ{ˆØ
�*Š*�TÑ
Ô
€CØ
ˆb‚y€yØˆÝ�t˜WÑ%Ô%×+Ò+Ñ-Ô-ˆˆå�4˜˜˜”:˜w¨Ñ/Ô/ˆÝ�t˜C ™E˜F˜F”| WÑ-Ô-×3Ò3Ñ5Ô5ˆÝ˜$ ¨&Ñ1Ô1Ð1r   c                   ó   — e Zd Zdd„Zdd„ZdS )ÚCodecrK   c                 óB   — t          |¦  «        }|t          |¦  «        fS ©N)rI   r   ©ÚselfÚinputrT   r   s       r   ra   zCodec.encodeÈ   s   € Ý˜eÑ$Ô$ˆØ•C˜‘J”JˆÐr   c                 óp   — |dvrt          d|z   ¦  «        ‚t          ||¦  «        }|t          |¦  «        fS ©N)rK   ÚreplaceÚignorezUnsupported error handling )rR   re   r   rj   s       r   ÚdecodezCodec.decodeÌ   sA   € ØÐ8Ð8Ð8ÝÐ<¸VÑCÑDÔDÐDÝ˜e VÑ,Ô,ˆØ•C˜‘J”JˆÐr   N)rK   )Ú__name__Ú
__module__Ú__qualname__ra   rq   r+   r   r   rg   rg   Æ   s<   € € € € € ðð ð ð ðð ð ð ð ð r   rg   c                   ó   — e Zd Zdd„ZdS )ÚIncrementalEncoderFc                 ó    — t          |¦  «        S ri   )rI   ©rk   rl   Úfinals      r   ra   zIncrementalEncoder.encodeÓ   s   € Ý˜uÑ%Ô%Ð%r   N©F)rr   rs   rt   ra   r+   r   r   rv   rv   Ò   s(   € € € € € ð&ð &ð &ð &ð &ð &r   rv   c                   ó   — e Zd Zdd„ZdS )ÚIncrementalDecoderFc                 ól   — | j         dvrt          d| j         z   ¦  «        ‚t          || j         ¦  «        S rn   )rT   rR   re   rx   s      r   rq   zIncrementalDecoder.decode×   s8   € ØŒ;Ð=Ð=Ð=ÝÐ<¸T¼[ÑHÑIÔIÐIÝ˜u d¤kÑ2Ô2Ð2r   Nrz   )rr   rs   rt   rq   r+   r   r   r|   r|   Ö   s(   € € € € € ð3ð 3ð 3ð 3ð 3ð 3r   r|   c                   ó   — e Zd ZdS )ÚStreamWriterN©rr   rs   rt   r+   r   r   r   r   Ü   ó   € € € € € Ø€Dr   r   c                   ó   — e Zd ZdS )ÚStreamReaderNr€   r+   r   r   rƒ   rƒ   ß   r�   r   rƒ   c            	      ó¤   — t          j        dt          ¦   «         j        t          ¦   «         j        t
          t          t          t          ¬¦  «        S )NÚpunycode)Únamera   rq   ÚincrementalencoderÚincrementaldecoderÚstreamwriterÚstreamreader)	ÚcodecsÚ	CodecInforg   ra   rq   rv   r|   r   rƒ   r+   r   r   Úgetregentryr�   ä   s=   € ÝÔØÝ‰wŒwŒ~Ý‰wŒwŒ~Ý-Ý-Ý!Ý!ðñ ô ð r   )Ú__doc__r‹   r   r   r   r'   r.   r1   r4   r<   rE   rI   rW   r\   re   rg   rv   r|   r   rƒ   r�   r+   r   r   ú<module>r�      sÒ  ððð ð
 €€€ð
!ð 
!ð 
!ðð ð ðð ð ð$ð ð ð,ð ð ð 
1€ðð ð ðð ð ð	ð 	ð 	ðð ð ðð ð ð<ð ð ð22ð 2ð 2ð 
ð 
ð 
ð 
ð 
ˆFŒLñ 
ô 
ð 
ð&ð &ð &ð &ð &˜Ô2ñ &ô &ð &ð3ð 3ð 3ð 3ð 3˜Ô2ñ 3ô 3ð 3ð	ð 	ð 	ð 	ð 	�5˜Ô,ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�5˜Ô,ñ 	ô 	ð 	ð
	ð 	ð 	ð 	ð 	r   