+
    TŎi                         R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtH	t	 ^RI
HtHt Rt. ROt]! ]	4      t]]]]]]3,          tR R ltR	 R
 lt]R R l4       tR R lt]RR R ll4       tR R ltR# )zURL parsing utilities.N)	lru_cache)Union)scheme_charsuses_netloc)QUOTERUNQUOTER_PLUSz! 	
 c                0    V ^8  d   QhR\         R\        /# )   urlreturn)strSplitURLType)formats   "Z/Users/ahmad/.openclaw/workspace/scripts/.venv/lib/python3.14/site-packages/yarl/_parse.py__annotate__r      s     :0 :03 :0< :0    c                   V P                  \        4      p \         F  pW9   g   K  V P                  VR4      p K  	  R;p;p;rEV P	                  R4      pV^ 8  dI   V ^ ,          \
        9   d7   V ^V  F  pV\
        9  g   K   M	  V RV P                  4       W^,           R rRV 9   pRV 9   p	V R,          R8X  Ed*   \        V 4      p
V'       d   V	'       d   RpMV	'       d   R	pMV'       d   R
pMRpV F(  pV P	                  V^4      pV^ 8  g   K  W8  g   K&  Tp
K*  	  V ^V
 pW
R p RV9   pRV9   pV'       d	   V'       d   V'       d   V'       g   \        R4      hV'       d   VP                  R4      ^,          P                  R4      ^ ,          pV'       d8   V^ ,          R8X  d*   \        P                  ! RV4      '       g   \        R4      hMRV9  d   \        R4      hV'       d   V P                  R4      w  p ppV	'       d   V P                  R4      w  p ppV'       d"   VP                  4       '       g   \        V4       W#WV3# )zSplit URL into parts. :N#?Nr	   N//z/?#z/?z/#/[]zInvalid IPv6 URLvz\Av[a-fA-F0-9]+\..+\ZzIPvFuture address is invalidz.The IPv6 content between brackets is not valid)lstripWHATWG_C0_CONTROL_OR_SPACEUNSAFE_URL_BYTES_TO_REMOVEreplacefindr   lowerlen
ValueError	partitionrematchisascii_check_netloc)r
   bschemenetlocqueryfragmentichas_hashhas_question_markdelimdelim_charswdelimhas_left_brackethas_right_bracketbracketed_host_s   &                r   	split_urlr:      s   
 **/
0C'8++a$C ( *,+F+V+eA1uQ<'QqA$  bq'--/31uw<CczHs

2w$C)KKKKAXXa^F{v~  Qu&k&=6M%6&6/00#--c215??DQGN ."3s":xx 8.II$%CDD JN* !QRR==-Qc*Qfnn&&f3x//r   c                (    V ^8  d   QhR\         RR/# r	   r,   r   Nr   )r   s   "r   r   r   V   s      # $ r   c                    V P                  R R4      P                  RR4      P                  RR4      P                  RR4      p\        P                  ! RV4      pW8X  d   R# R F  pW29   g   K  \        RV  R	24      h	  R# )
@r   r   r   r   NFKCNz/?#@:znetloc 'z6' contains invalid characters under NFKC normalization)r    unicodedata	normalizer$   )r,   nnormalized_netlocr0   s   &   r   r)   r)   V   s     	sB''R088bAII#rRA#--fa8 !6( #6 6  r   c          
          V ^8  d   QhR\         R\        \        \         R3,          \        \         R3,          \        \         R3,          \        \        R3,          3,          /# r<   )r   tupler   int)r   s   "r   r   r   m   sN     > >>
5dU39-uS$Y/?sDyAQQR>r   c                *   RV 9  d   RpRpT pM2V P                  R4      w  rEpVP                  R4      w  rpV'       g   RpRV9   d>   VP                  R4      w   rWVP                  R4      w  rp	V	P                  R4      w   rYMVP                  R4      w  rp	V	'       g   T;'       g    RY(;'       g    RR3#  \        V	4      p
^ T
u;8:  d   R8:  g   M \        R4      hT;'       g    RY(;'       g    RT
3#   \         d    \        R4      hi ; i)	z4Split netloc into username, password, host and port.r?   Nr   r   r   z/Invalid URL: port can't be converted to integeri  zPort out of range 0-65535)
rpartitionr%   rG   r$   )r,   usernamepasswordhostinfouserinfor9   have_password	bracketedhostnameport_strports   &          r   split_netlocrS   l   s.   
 &%)%) & 1 1# 6X,4,>,>s,C)H
h",,S11 ) 3 3C 8X!++C01h ( 2 23 7X4+;+;tTAAL8} 455tX'7'74==	  LJKKLs   ;C; ;Dc                `    V ^8  d   QhR\         R\         R\         R\         R\         R\         /# )r	   r+   r,   r
   r-   r.   r   r=   )r   s   "r   r   r      s<     4 444#&4/24>A44r   c                D   V'       g"   V '       d   V \         9   g   VR,          R8X  dJ   V'       d)   VR,          R8w  d   V '       d   V  RV RV 2MV  RV 2pM(V '       d
   V  RV V 2MRV V 2pMV '       d   V  RV 2pV'       d   V RV 2pV'       d   V RV 2# T# )	z(Unsplit a URL without any normalization.r   r   :N   Nr   z://r   r   r   )USES_AUTHORITY)r+   r,   r
   r-   r.   s   &&&&&r   unsplit_resultrX      s     &V~5#b'T/3r7c>28VHCxq.#>OC17VHCxu-r&#=OC	#Qug"*cU!H:33r   c                    V ^8  d   QhR\         \        R3,          R\         \        R3,          R\         \        R3,          R\         \        R3,          R\        R\        /# )r	   userNrK   hostrR   encoder   )r   r   rG   bool)r   s   "r   r   r      sh     , ,
T	
,CI, T	
, T	
	,
 , 	,r   c                   Vf   R# TpVe   V RV 2pV f   Vf   V# Ve:   V '       g   Rp MV'       d   \        V 4      p V'       d   \        V4      pV  RV 2p MV '       d   V'       d   \        V 4      p V '       d   V  RV 2# T# )zMake netloc from parts.

The user and password are encoded if encode is True.

The host must already be encoded with _encode_host.
r   r   r?   )r   )rZ   rK   r[   rR   r\   rets   &&&&& r   make_netlocr`      s     |
CQtfo|(
D$<Dh'Hq
#	&d|"dV1SE?++r   c                h    V ^8  d   QhR\         R\        \        \         \         3,          ,          /# )r	   query_stringr   )r   listrF   )r   s   "r   r   r      s'       eCHo)> r   c                    . pV '       g   V# V P                  R4       F<  pVP                  R4      w  r4pVP                  \        V4      \        V4      34       K>  	  V# )zeParse a query given as a string argument.

Works like urllib.parse.parse_qsl with keep empty values.
&=)splitr%   appendr   )rb   pairsk_vkr9   r   s   &     r   query_to_pairsrl      sZ    
 $&E!!#&--$amA&a(89: ' Lr   )	
)F)__doc__r&   rA   	functoolsr   typingr   urllib.parser   r   _quotersr   r   r   r   	frozensetrW   rF   r   r   r:   r)   rS   rX   r`   rl    r   r   <module>rw      s     	    2 +
D  0 ;'S#sC,-:0z, > >B4  , ,Br   