o
    D“h¯.  ã                   @   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 
d¡Zejd dkr0e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 d7d(d)„Z!d*d+„ Z"d,d-„ Z#d.d/„ Z$d8d1d2„Z%d9d3d4„Z&d:d5d6„Z'dS );é   )Úidnadataé    N)Úintranges_containé	   s   xn--u   [.ã€‚ï¼Žï½¡]é   c                   @   ó   e Zd ZdZdS )Ú	IDNAErrorz7 Base exception for all IDNA-encoding related problems N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úD/var/www/html/env_mimamsha/lib/python3.10/site-packages/idna/core.pyr      ó    r   c                   @   r   )ÚIDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr	   r   r   r   r   r      r   r   c                   @   r   )ÚInvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nr	   r   r   r   r   r      r   r   c                   @   r   )ÚInvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nr	   r   r   r   r   r      r   r   c                 C   s0   t  t| ƒ¡}|dkrt  t| ƒ¡stdƒ‚|S )Nr   z Unknown character in unicodedata)ÚunicodedataÚ	combiningÚunichrÚnameÚ
ValueError)ÚcpÚvr   r   r   Ú_combining_class$   s
   r   c                 C   s   t t| ƒtj| ƒS )N)r   Úordr   Úscripts)r   Úscriptr   r   r   Ú
_is_script+   s   r   c                 C   s
   |   d¡S )NÚpunycode)Úencode©Úsr   r   r   Ú	_punycode.   ó   
r$   c                 C   s
   d  | ¡S )Nz	U+{0:04X})Úformatr"   r   r   r   Ú_unot1   r%   r'   c                 C   s   t | ƒdkrdS dS )Né?   FT©Úlen©Úlabelr   r   r   Úvalid_label_length5   s   r-   c                 C   s   t | ƒ|rdndkrdS dS )Néþ   éý   FTr)   )r,   Útrailing_dotr   r   r   Úvalid_string_length<   s   r1   Fc           	      C   sP  d}t | dƒD ]\}}t |¡}|dkrtd t| ƒ|¡ƒ‚|dv r$d}q|s+|s+dS t | d ¡}|dv r9d}n|d	kr@d}n	td
 t| ƒ¡ƒ‚d}d}t | dƒD ]M\}}t |¡}|r‡|dvrhtd |¡ƒ‚|dv rod}n|dkrud}|dv r†|s~|}qR||kr†tdƒ‚qR|dvr’td |¡ƒ‚|dv r™d}qR|dkrŸd}qR|s¦tdƒ‚dS )NFr   Ú z3Unknown directionality in label {0} at position {1})ÚRÚALÚANTr   )r3   r4   ÚLz>First codepoint in label {0} must be directionality L, R or AL)
r3   r4   r5   ÚENÚESÚCSÚETÚONÚBNÚNSMzHInvalid direction for codepoint at position {0} in a right-to-left label)r3   r4   r7   r5   r=   )r5   r7   z2Can not mix numeral types in a right-to-left label)r6   r7   r8   r9   r:   r;   r<   r=   zHInvalid direction for codepoint at position {0} in a left-to-right label)r6   r7   z0Label ends with illegal codepoint directionality)Ú	enumerater   Úbidirectionalr   r&   Úrepr)	r,   Ú	check_ltrÚ
bidi_labelÚidxr   Ú	directionÚrtlÚvalid_endingÚnumber_typer   r   r   Ú
check_bidiC   sV   
€
€€rH   c                 C   s"   t  | 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   rK   c                 C   s<   | dd… dkrt dƒ‚| d dks| d dkrt dƒ‚d	S )
Né   é   z--z4Label has disallowed hyphens in 3rd and 4th positionr   ú-éÿÿÿÿz)Label must not start or end with a hyphenT)r   r+   r   r   r   Úcheck_hyphen_ok†   s
   rP   c                 C   s   t  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   ÿrS   c                 C   s,  t | | ƒ}|dkr||dkrtt | |d  ƒƒtkrdS d}t|d ddƒD ]!}tj t | | ƒ¡}|t dƒkr9q&|t dƒt d	ƒfv rGd} nq&|sLdS d}t|d t| ƒƒD ]"}tj t | | ƒ¡}|t dƒkrjqW|t d
ƒt d	ƒfv ryd} |S qW|S |dkr”|dkr’tt | |d  ƒƒtkr’dS dS dS )Ni   r   r   TFrO   ÚTr6   ÚDr3   i   )r   r   Ú_virama_combining_classÚranger   Újoining_typesÚgetr*   )r,   ÚposÚcp_valueÚokÚiÚjoining_typer   r   r   Úvalid_contextj•   sB   þýr_   c                 C   s¤  t | | ƒ}|dkr3d|  k rt| ƒd k r1n dS t | |d  ƒdkr1t | |d  ƒdkr1dS dS |dkrP|t| ƒd k rNt| ƒdkrNt| |d  dƒS dS |d	ksX|d
krg|dkret| |d  dƒS dS |dkr‰| D ]}|dkrtqmt|dƒsƒt|dƒsƒt|dƒr† dS qmdS d|  kr“dkr¬n n| D ]}dt |ƒ  kr§dkr© dS  q—q—dS d|  kr¶dkrÐn d S | D ]}dt |ƒ  krËdkrÍ dS  q»q»dS d S )Né·   r   r   él   TFiu  ÚGreekió  iô  ÚHebrewiû0  u   ãƒ»ÚHiraganaÚKatakanaÚHani`  ii  ið  iù  )r   r*   r   )r,   rZ   Ú	exceptionr[   r   r   r   r   Úvalid_contextoÁ   sH   (þÿÿÿürh   c                 C   s<  t | ttfƒr|  d¡} t| ƒdkrtdƒ‚t| ƒ t| ƒ t| ƒ t	| ƒD ]q\}}t
|ƒ}t|tjd ƒr7q&t|tjd ƒrlzt| |ƒsTtd t|ƒ|d t| ƒ¡ƒ‚W q& tyk   td t|ƒ|d t| ƒ¡ƒ‚w t|tjd	 ƒr‰t| |ƒsˆtd
 t|ƒ|d t| ƒ¡ƒ‚q&td t|ƒ|d t| ƒ¡ƒ‚t| ƒ d S )Nzutf-8r   zEmpty LabelÚPVALIDÚCONTEXTJz-Joiner {0} not allowed at position {1} in {2}r   z?Unknown codepoint adjacent to joiner {0} at position {1} in {2}ÚCONTEXTOú0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed)Ú
isinstanceÚbytesÚ	bytearrayÚdecoder*   r   rS   rP   rK   r>   r   r   r   Úcodepoint_classesr_   r   r&   r'   r@   r   rh   r   rH   )r,   rZ   r   r[   r   r   r   Úcheck_labelê   s:   

ÿÿÿÿ
ÿrr   c                 C   s|   z|   d¡} t| ƒ t| ƒstdƒ‚| W S  ty   Y nw | s$tdƒ‚t| ƒ} t| ƒ t| ƒ} t|  } t| ƒs<tdƒ‚| S )NÚasciizLabel too longzNo Input)	r!   Úulabelr-   r   ÚUnicodeEncodeErrorÚunicoderr   r$   Ú_alabel_prefixr+   r   r   r   Úalabel
  s$   
ÿrx   c                 C   s®   t | ttfƒsz|  d¡} W n ty   t| ƒ |  Y S w |  ¡ } |  t¡rC| t	tƒd … } | s5t
dƒ‚|  d¡d dkrBt
dƒ‚n	t| ƒ |  d¡S |  d¡} t| ƒ | S )Nrs   z5Malformed A-label, no Punycode eligible content foundrO   rN   z"A-label must not end with a hyphenr    )rm   rn   ro   r!   ru   rr   ÚlowerÚ
startswithrw   r*   r   rp   r+   r   r   r   rt   #  s(   þ
ÿ

rt   Tc              
   C   s  ddl m } d}zot| ƒD ]c\}}t|ƒ}||dk r|n	t ||df¡d  }|d }	t|ƒdkr5|d nd}
|	d	ksK|	d
krA|rK|	dkrP|sP|
du rP||7 }q|
duri|	dksd|	dkr^|rd|	d
kri|ri||
7 }q|	dkrptƒ ‚qt d|¡W S  ty   t	d 
t|ƒ|d t| ƒ¡ƒ‚w )zBRe-map the characters in the string according to UTS46 processing.r   )Ú	uts46datar2   é   ÚZr   rL   NÚVrU   Ú3rI   ÚIrQ   rl   )r{   r>   r   ÚbisectÚbisect_leftr*   Ú
IndexErrorr   rR   r   r&   r'   r@   )ÚdomainÚ
std3_rulesÚtransitionalr{   ÚoutputrZ   ÚcharÚ
code_pointÚuts46rowÚstatusÚreplacementr   r   r   Úuts46_remap<  s:   ÿ

ÿÿÿÿr   c           	      C   sÌ   t | ttfƒr|  d¡} |rt| ||ƒ} d}g }|r |  d¡}nt | ¡}|r,|dgkr0tdƒ‚|d dkr;|d= d}|D ]}t|ƒ} | rK| 	| ¡ q=tdƒ‚|rV| 	d	¡ d
 
|¡} t| |ƒsdtdƒ‚| S )Nrs   FÚ.r2   úEmpty domainrO   TúEmpty labeló    ó   .zDomain too long)rm   rn   ro   rp   r   ÚsplitÚ_unicode_dots_rer   rx   ÚappendÚjoinr1   )	r#   ÚstrictÚuts46r…   r†   r0   ÚresultÚlabelsr,   r   r   r   r!   X  s2   




r!   c                 C   s²   t | ttfƒr|  d¡} |rt| |dƒ} d}g }|s t | ¡}n|  d¡}|r,|dgkr0tdƒ‚|d s9|d= d}|D ]}t|ƒ} | rI| 	| ¡ q;tdƒ‚|rT| 	d¡ d 
|¡S )	Nrs   FrŽ   r2   r   rO   Tr   )rm   rn   ro   rp   r   r”   r“   r   rt   r•   r–   )r#   r—   r˜   r…   r0   r™   rš   r,   r   r   r   rp   w  s,   



rp   )F)TF)FFFF)FFF)(r2   r   r   r   ÚreÚsysÚ	intrangesr   rV   rw   Úcompiler”   Úversion_infoÚstrrv   Úchrr   ÚUnicodeErrorr   r   r   r   r   r   r$   r'   r-   r1   rH   rK   rP   rS   r_   rh   rr   rx   rt   r   r!   rp   r   r   r   r   Ú<module>   sD    

<	
,) 

