o
    ".h2                     @   sX  d dl mZ ddlZddlZddlZddlmZmZ d dlm	Z	 dZ
dZed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edefddZdededefddZdedefddZdedefddZdeeef defddZdeeef d edefd!d"ZdEded$edefd%d&Zdedefd'd(Zdedefd)d*Zdeddfd+d,Z ded-edefd.d/Z!dEded-ed0edefd1d2Z"deeee#f ddfd3d4Z$dedefd5d6Z%deeee#f defd7d8Z&dFd:ed;ed<edefd=d>Z'dGdeeee#f d?ed@ed;ed<edefdAdBZ(dHdeeee#f d?ed@ed;edef
dCdDZ)dS )I   )idnadata    N)UnionOptional)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   H/var/www/supernova/superenvnew/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   cpreturnc                 C   s0   t t| }|dkrt t| std|S )Nr   z Unknown character in unicodedata)unicodedata	combiningchrname
ValueError)r   vr   r   r   _combining_class    s
   r   scriptc                 C   s   t t| tj| S )N)r   ordr   scripts)r   r   r   r   r   
_is_script'   s   r!   sc                 C   s
   |  dS )Npunycode)encoder"   r   r   r   	_punycode*      
r&   c                 C   s
   d | S )NzU+{:04X})formatr%   r   r   r   _unot-   r'   r)   labelc                 C   s   t | dkrdS dS )N?   FTlenr*   r   r   r   valid_label_length1   s   r/   trailing_dotc                 C   s   t | |rdndkrdS dS )N      FTr,   )r*   r0   r   r   r   valid_string_length7   s   r3   F	check_ltrc           	      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rtdqR|dvrtd||dv rd}qR|dkrd}qR|stddS )NFr    z1Unknown directionality in label {} at position {})RALANTr   )r6   r7   Lz=First codepoint in label {} must be directionality L, R or AL)
r6   r7   r8   ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r6   r7   r:   r8   r@   )r8   r:   z2Can not mix numeral types in a right-to-left label)r9   r:   r;   r<   r=   r>   r?   r@   zGInvalid direction for codepoint at position {} in a left-to-right label)r9   r:   z0Label ends with illegal codepoint directionality)	enumerater   bidirectionalr   r(   repr)	r*   r4   
bidi_labelidxr   	directionrtlvalid_endingnumber_typer   r   r   
check_bidi=   sV   

rJ   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_combinerx   s   rM   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
   rR   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   rU   posc                 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rtt | |d  tkrdS dS dS )Ni   r   r   TFrQ   Tr9   Dr6   i   )r   r   _virama_combining_classranger   joining_typesgetr-   )r*   rV   cp_valueokijoining_typer   r   r   valid_contextj   sB   ra   	exceptionc                 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st|dst|dr dS qmdS d|  krdkrn n| D ]}dt |  krdkr dS  qqdS d|  krdkrn dS | D ]}dt |  krdkr dS  qqdS dS )N   r   r   l   TFiu  Greeki  i  Hebrewi0  u   ・HiraganaKatakanaHani`  ii  i  i  )r   r-   r!   )r*   rV   rb   r]   r   r   r   r   valid_contexto   sJ   (rj   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	 rt| |std
t||d t| q&tdt||d t| t|  d S )Nzutf-8r   zEmpty LabelPVALIDCONTEXTJz*Joiner {} not allowed at position {} in {}r   z<Unknown codepoint adjacent to joiner {} at position {} in {}CONTEXTO-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)
isinstancebytes	bytearraydecoder-   r	   rU   rR   rM   rA   r   r   r   codepoint_classesra   r   r(   r)   rC   r   rj   r   rJ   )r*   rV   r   r]   r   r   r   check_label   s:   


rt   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strrt   r&   _alabel_prefixr*   label_bytesr   r   r   alabel   s$   
r|   c                 C   s   t | ttfsz| d}W n ty   t|  |  Y S w | }| }|trE|t	td  }|s7t
d|dd dkrDt
dn	t| |dS z|d} W n ty`   t
dw t|  | S )Nru   z5Malformed A-label, no Punycode eligible content foundrQ   rP   z"A-label must not end with a hyphenr#   zInvalid A-label)ro   rp   rq   r$   rw   rt   lower
startswithry   r-   r	   rr   UnicodeErrorrz   r   r   r   rv     s2   

rv   Tdomain
std3_rulestransitionalc                 C   s  ddl m } d}t| D ]{\}}t|}z]||dk r|n	t||dfd  }|d }	d}
t|dkr7|d }
|	d	ksK|	d
krA|rK|	dkrP|sP|
du rP||7 }n |
duri|	dksd|	dkr^|rd|	d
kri|ri||
7 }n|	dkrpt W q ty   tdt	||d t
| w td|S )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar5      ZN   rN   VrX   3rK   Irn   rS   )r   rA   r   bisectbisect_leftr-   
IndexErrorr   r(   r)   rC   r   rT   )r   r   r   r   outputrV   char
code_pointuts46rowstatusreplacementr   r   r   uts46_remap4  s>   

r   strictuts46c           	      C   s   t | ttfrz| d} W n ty   tdw |r"t| ||} d}g }|r.| d}nt| }|r:|dgkr>td|d dkrI|d= d}|D ]}t	|} | rY|
|  qKtd	|rd|
d
 d|} t| |srtd| S )Nru   zGshould pass a unicode string to the function rather than a byte string.F.r5   Empty domainrQ   TEmpty label       .zDomain too long)ro   rp   rq   rr   UnicodeDecodeErrorr	   r   split_unicode_dots_rer|   appendjoinr3   )	r"   r   r   r   r   r0   resultlabelsr*   r   r   r   r$   T  s:   



r$   c                 C   s   zt | ttfr| d} W n ty   tdw |r"t| |d} d}g }|s.t| }n| d}|r:|dgkr>td|d sG|d= d}|D ]}t	|} | rW|
|  qItd	|rb|
d d|S )
Nru   zInvalid ASCII in A-labelFr   r5   r   rQ   Tr   )ro   rp   rq   rr   r   r	   r   r   r   rv   r   r   )r"   r   r   r   r0   r   r   r*   r   r   r   rr   u  s6   



rr   )F)TF)FFFF)FFF)*r5   r   r   r   retypingr   r   	intrangesr   rY   ry   compiler   r   r	   r   r   r   intr   rx   boolr!   rp   r&   r)   r/   r3   rJ   rM   rR   rU   ra   rj   rq   rt   r|   rv   r   r$   rr   r   r   r   r   <module>   s>    
;+*. .!