g8dZddlZdZdZdZdZdZdZd Zd Z d Z d Z d Z dZ dZGddejZGddej ZGddej"ZGddeej$ZGddeej&ZdZy)uY Codec for the Punicode encoding, as specified in RFC 3492 Written by Martin v. Löwis. Nct}t}|D]<}t|dkr|jt|,|j |>t |}t ||fS)z 3.1 Basic code point segregation) bytearraysetordappendaddsortedbytes)strbaseextendedcs 9/opt/alt/python312/lib64/python3.12/encodings/punycode.py segregater s[ ;DuH  q6C< KKA  LLO  hH ;  c@d}|D]}t||ks|dz }|S)z@Return the length of str, considering only characters below max.r)r)r maxresrs r selective_lenrs, C  q6C< 1HC Jrcht|} |dz }||k(ry||}||k(r|dz|fS||kr|dz }')aReturn 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 charindexposlrs rselective_findrsV CA  q !8 H 97C<  X QJE rcd}g}d}|D]c}dx}}t|}t||} | dz||z z} t||||\}}|dk(rn!| ||z z } |j| dz |}d} 8|}e|S)3.2 Insertion unsort codingrrrr)rrrr) r roldcharresultoldindexrrrrcurlendeltas rinsertion_unsortr'0sG FH 1vsD)dWn-&s1U37IE#{ UX% %E MM%' "HE Mrc4d|dzz|z }|dkry|dkDry|S)N$r)jbiasrs rTr.Fs+ A, C Qwq Rx Jrs$abcdefghijklmnopqrstuvwxyz0123456789ct}d} t||}||kr#|jt|t |S|jt|||z d|z zz||z d|z z}|dz }i)(3.3 Generalized variable-length integersrrr))rr.rdigitsr )Nr-r#r,ts rgenerate_generalized_integerr4Ns [F A aJ q5 MM&) $=  fQ1q5R!V"4567 UQ  Q rcz|r|dz}n|dz}|||zz }d}|dkDr|dz}|dz }|dkDr|d|z|dzzz}|S)Niri#r)&r+)r&firstnumchars divisionsr-s radaptr<[sk  #  !  Uh EI #+ R  #+ U urz2 3D Krct}d}t|D]8\}}t||}|j|t ||dk(||zdz}:t |S)z3.4 Bias adaptationHrr)r enumerater4extendr<r )baselendeltasr#r-pointsr&ss rgenerate_integersrEjsb[F D"6*  ( 5 aUFAIwv~a'78+ =rcxt|\}}t||}tt||}|r|dz|zS|S)N-)rr'rEr)textr rrBs rpunycode_encoderIusBt_ND( dH -F TF3H d{X%% Orcdd}d}d} t||}|dz }d|cxkrdkr nn|dz }n1d|cxkrd kr nn|d z }n|dk(rtd ||dz z|dfSt||} |||zz }|| kr||fS|d | z z}|dz }#t$r|dk(r td|dzdfcYSwxYw) r0rrstrictzincomplete punicode stringNAZ09z Invalid extended code point '%s'r))r IndexError UnicodeErrorr.) rextposr-errorsr#wr,rdigitr3s rdecode_generalized_numberrWs  F A A  $x'(D !  4 4 4KE T !T !2IE x A!)&(!3 45 54<  aJ%!) 196> ! aL Q-  $!"#?@@A:t# # $sB B/.B/c~d}d}d}d}|t|krt||||\}}||S||dzz }||t|dzzz }|dkDr|dk(rtd |ztd }|t|dzz}|d|t |z||dz}t ||dk(t|}|}|t|kr|S) r!rrr>rNrirKzInvalid character U+%x?)rrWrRrchrr<) r rrTrrr-rSnewposr&s rinsertion_sortr\s D C D F 3x= 1(F26@  =K uQw D A && (?!"#;d#BCCs8DSY]#DSzCI%ST 2UVq[3t95! 3x= " KrcZt|tr|jd}t|tr t |}|j d}|dk(rd}t|dj }n0t|d|d|}t||dzddj }t|||S)NasciirGrr) isinstancer encode memoryviewr rfindupperr\)rHrTrr rs rpunycode_decoderes${{7#$ #T{ **T C bytW%++-4:w/tCEF|W-335 $& 11rceZdZddZddZy)Codecc2t|}|t|fSN)rIrselfinputrTrs rraz Codec.encodese$CJrcX|dvrtd|zt||}|t|fSN)rKreplaceignorezUnsupported error handling )rRrerrjs rdecodez Codec.decodes6 8 8rs  !$, 1   <2 2 FLL &22&3223  5,,  5,, r