
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
’Y|j2  ã               @   s>  d dl mZ ddlZddlZddlZddlZd dlmZ dZdZ	ej
dƒZejd dkr`eZeZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd7dd„Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Z d8d(d)„Z!d*d+„ Z"d,d-„ Z#d.d/„ Z$d9d1d2„Z%d:d3d4„Z&d;d5d6„Z'dS )<é   )Úidnadataé    N)Úintranges_containé	   s   xn--u   [.ã€‚ï¼Žï½¡]é   c               @   s   e Zd ZdZdS )Ú	IDNAErrorz7 Base exception for all IDNA-encoding related problems N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   ú/usr/lib/python3.6/core.pyr      s   r   c               @   s   e Zd ZdZdS )ÚIDNABidiErrorz= Exception when bidirectional requirements are not satisfied N)r   r	   r
   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdS )ÚInvalidCodepointz> Exception when a disallowed or unallocated codepoint is used N)r   r	   r
   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdS )ÚInvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used N)r   r	   r
   r   r   r   r   r   r      s   r   c             C   s   t jt| ƒƒS )N)ÚunicodedataZ	combiningÚunichr)Úcpr   r   r   Ú_combining_class$   s    r   c             C   s   t t| ƒtj| ƒS )N)r   Úordr   Úscripts)r   Zscriptr   r   r   Ú
_is_script'   s    r   c             C   s
   | j dƒS )NÚpunycode)Úencode)Úsr   r   r   Ú	_punycode*   s    r   c             C   s
   dj | ƒS )Nz	U+{0:04X})Úformat)r   r   r   r   Ú_unot-   s    r   c             C   s   t | ƒdkrdS dS )Né?   FT)Úlen)Úlabelr   r   r   Úvalid_label_length1   s    r!   c             C   s   t | ƒ|rdndkrdS dS )Néþ   éý   FT)r   )r    Útrailing_dotr   r   r   Úvalid_string_length8   s    r%   Fc       	      C   sp  d}xJt | dƒD ]<\}}tj|ƒ}|dkr>tdjt| ƒ|ƒƒ‚|dkrd}P qW | r`| r`dS tj| d	 ƒ}|dkr|d}n |d
krŠd}ntdjt| ƒƒƒ‚d}d}x¸t | dƒD ]ª\}}tj|ƒ}|�r&|dkrÞtdj|ƒƒ‚|dk� rîd}n|dk� rüd}|dk�rZ|�s|}n||k�rZtdƒ‚q°|dk�r>tdj|ƒƒ‚|dk�rNd}q°|dkr°d}q°W |�sltdƒ‚dS )NFr   Ú z3Unknown directionality in label {0} at position {1}ÚRÚALÚANTr   ÚLz>First codepoint in label {0} must be directionality L, R or ALÚENÚESÚCSÚETÚONÚBNÚNSMzHInvalid direction for codepoint at position {0} in a right-to-left labelz2Can not mix numeral types in a right-to-left labelzHInvalid direction for codepoint at position {0} in a left-to-right labelz0Label ends with illegal codepoint directionality)r'   r(   r)   )r'   r(   )
r'   r(   r)   r+   r,   r-   r.   r/   r0   r1   )r'   r(   r+   r)   )r)   r+   )r*   r+   r,   r-   r.   r/   r0   r1   )r*   r+   )Ú	enumerater   Zbidirectionalr   r   Úrepr)	r    Z	check_ltrZ
bidi_labelÚidxr   Ú	directionZrtlZvalid_endingZnumber_typer   r   r   Ú
check_bidi?   sR    








r6   c             C   s"   t j| d ƒd dkrtdƒ‚dS )Nr   ÚMz0Label begins with an illegal combining characterT)r   Úcategoryr   )r    r   r   r   Úcheck_initial_combiner|   s    r9   c             C   s<   | dd… dkrt dƒ‚| d dks0| d
 dkr8t dƒ‚d	S )Né   é   z--z4Label has disallowed hyphens in 3rd and 4th positionr   ú-r   z)Label must not start or end with a hyphenTéÿÿÿÿ)r   )r    r   r   r   Úcheck_hyphen_okƒ   s
    r>   c             C   s   t jd| ƒ| krtdƒ‚d S )NÚNFCz%Label must be in Normalization Form C)r   Ú	normalizer   )r    r   r   r   Ú	check_nfcŒ   s    rA   c             C   sH  t | | ƒ}|dk�r
|dkr:tt | |d  ƒƒtkr:dS d}xZt|d ddƒD ]F}tjjt | | ƒƒ}|t dƒkrxqPqP|t dƒt dƒgkr”d}P qPP qPW |s¢dS d}x^t|d t| ƒƒD ]H}tjjt | | ƒƒ}|t dƒkrâqºqº|t d	ƒt dƒgk�r d}P qºP qºW |S |d
k�r@|dk�r<tt | |d  ƒƒtk�r<dS dS dS d S )Ni   r   r   TFÚTr*   ÚDr'   i   r=   r=   )r   r   Ú_virama_combining_classÚranger   Zjoining_typesÚgetr   )r    ÚposÚcp_valueÚokÚiZjoining_typer   r   r   Úvalid_contextj’   s@    


rK   c             C   sÄ  t | | ƒ}|dkrdd|  k o.t| ƒd k n  r`t | |d  ƒdkr`t | |d  ƒdkr`dS dS |dkrž|t| ƒd k ršt| ƒdkršt| |d  dƒS dS |d	ks®|d
krÌ|dkrÈt| |d  dƒS dS |dk�rx<| D ]4}|dkrêqÜt|dƒ�st|dƒ�st|dƒrÜdS qÜW dS d|  k�o,dkn  �rlx2| D ]*}dt |ƒ  k�oVdkn  �r:dS �q:W dS d|  k�o€dkn  �rÀx2| D ]*}dt |ƒ  k�oªdkn  �rŽdS �qŽW dS d S )Né·   r   r   él   TFiu  ZGreekió  iô  ZHebrewiû0  u   ãƒ»ZHiraganaZKatakanaZHani`  ii  ið  iù  )r   r   r   )r    rG   Z	exceptionrH   r   r   r   r   Úvalid_contextoÂ   s>     (

"
 

 
rN   c             C   s,  t | ttfƒr| jdƒ} t| ƒdkr,tdƒ‚t| dd�s@tdƒ‚t| ƒ t| ƒ t	| ƒ xÆt
| ƒD ]º\}}t|ƒ}t|tjd ƒr†qbqbt|tjd ƒrÀt| |ƒs¾td	jt|ƒ|d
 t| ƒƒƒ‚qbt|tjd ƒ� rþt| |ƒ�stdjt|ƒ|d
 t| ƒƒƒ‚qbtdjt|ƒ|d
 t| ƒƒƒ‚qbW t| ƒ d S )Nzutf-8r   zEmpty LabelT)r$   zLabel too longZPVALIDZCONTEXTJz-Joiner {0} not allowed at position {1} in {2}r   ZCONTEXTOz0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed)Ú
isinstanceÚbytesÚ	bytearrayÚdecoder   r   r%   rA   r>   r9   r2   r   r   r   Zcodepoint_classesrK   r   r   r   r3   rN   r   r6   )r    rG   r   rH   r   r   r   Úcheck_labelë   s*    


  "rS   c             C   s¤   yN| j dƒ} yt| ƒ W n" tk
r:   tdj| ƒƒ‚Y nX t| ƒsLtdƒ‚| S  tk
rb   Y nX | sptdƒ‚t| ƒ} t| ƒ t| ƒ} t	|  } t| ƒs tdƒ‚| S )NÚasciiz$The label {0} is not a valid A-labelzLabel too longzNo Input)
r   Úulabelr   r   r!   ÚUnicodeEncodeErrorÚunicoderS   r   Ú_alabel_prefix)r    r   r   r   Úalabel  s(    
rY   c             C   s†   t | ttfƒs:y| jdƒ} W n tk
r8   t| ƒ | S X | jƒ } | jtƒr^| t	tƒd … } nt| ƒ | j
dƒS | j
dƒ} t| ƒ | S )NrT   r   )rO   rP   rQ   r   rV   rS   ÚlowerÚ
startswithrX   r   rR   )r    r   r   r   rU   -  s    


rU   Tc             C   s,  ddl m } d}yâxÔt| ƒD ]È\}}t|ƒ}||dk r:|ntj||dfƒd  }|d }	t|ƒdkrl|d nd}
|	d	ksš|	d
kr†| sš|	dkr¤|r¤|
dkr¤||7 }q|
dk	rÖ|	dksÌ|	dkrÀ|sÌ|	d
krÖ|rÖ||
7 }q|	dkrtƒ ‚qW tjd|ƒS  tk
�r&   t	dj
t|ƒ|d t| ƒƒƒ‚Y nX dS )zBRe-map the characters in the string according to UTS46 processing.r   )Ú	uts46datar&   é   ÚZr   r:   NÚVrC   Ú3r7   ÚIr?   z0Codepoint {0} not allowed at position {1} in {2})r\   r2   r   ÚbisectZbisect_leftr   Ú
IndexErrorr   r@   r   r   r   r3   )ZdomainÚ
std3_rulesÚtransitionalr\   ÚoutputrG   ÚcharZ
code_pointZuts46rowZstatusZreplacementr   r   r   Úuts46_remapB  s0    


rh   c       	      C   sä   t | ttfƒr| jdƒ} |r(t| ||ƒ} t| ƒdkr<tdƒ‚d}g }|rT| jdƒ}n
tj| ƒ}x|rv|d  rv|d= q`W |s„tdƒ‚|d d	krš|d= d
}x|D ]}|j	t
|ƒƒ q W |rÄ|j	dƒ dj|ƒ} t| |ƒsàtdƒ‚| S )NrT   r"   zDomain too longFÚ.r   zEmpty domainr   r&   Tó    ó   .r=   r=   )rO   rP   rQ   rR   rh   r   r   ÚsplitÚ_unicode_dots_reÚappendrY   Újoinr%   )	r   ÚstrictÚuts46rd   re   r$   ÚresultÚlabelsr    r   r   r   r   ^  s4    






r   c             C   sÊ   t | ttfƒr| jdƒ} |r(t| |dƒ} t| ƒdkr<tdƒ‚d}g }|sTtj| ƒ}n
| jdƒ}x|rv|d  rv|d= q`W |s„tdƒ‚|d s–|d= d	}x|D ]}|j	t
|ƒƒ qœW |rÀ|j	d
ƒ dj|ƒS )NrT   Fr"   zDomain too longri   r   zEmpty domainr   Tr&   r=   r=   )rO   rP   rQ   rR   rh   r   r   rm   rl   rn   rU   ro   )r   rp   rq   rd   r$   rr   rs   r    r   r   r   rR   „  s.    




rR   )F)F)TF)FFFF)FFF)(r&   r   rb   r   ÚreÚsysZ	intrangesr   rD   rX   Úcompilerm   Úversion_infoÚstrrW   Úchrr   ÚUnicodeErrorr   r   r   r   r   r   r   r   r!   r%   r6   r9   r>   rA   rK   rN   rS   rY   rU   rh   r   rR   r   r   r   r   Ú<module>   sB   

=	0
)&

&