
    o-j0#                        d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	m
Z
 dZg dZ ee          Zeeeeeef         Zd	ed
efdZded
dfdZeded
eedz  edz  edz  edz  f         fd            Zdeded	ededed
efdZe	 ddedz  dedz  dedz  dedz  ded
efd            Zded
eeeef                  fdZdS )zURL parsing utilities.    N)	lru_cache)scheme_charsuses_netloc   )QUOTERUNQUOTER_PLUSz! 	
 )	
urlreturnc                 T   |                      t                    } t          D ]}|| v r|                     |d          } dx}x}x}}|                     d          }|dk    rP| d         t
          v rA| d|         D ]}|t
          vr n*| d|                                         | |dz   d         } }d| v }d| v }	| dd         d	k    rt          |           }
|r|	rd
}n|	rd}n|rd}nd}|D ]&}|                     |d          }|dk    r||
k     r|}
'| d|
         }| |
d         } d|v rt          d          d|v }d|v }|r|r|r|st          d          |r|	                    d          d         }|d         dk    s2|
                    d          dk    s|
                    d          dk    rt          d          |dd                             d          \  }}}|r|d         dk    rt          d          |r1|d         dk    r%t          j        d|          st          d          nd|vrt          d          |r|                     d          \  } }}|	r|                     d          \  } }}|r#|                                st          |           ||| ||fS )zSplit URL into parts. :r   r   N#?   //z/?#z/?z/#/\zTInvalid URL: backslash ('\') is not allowed in the authority component per RFC 3986.[]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
rpartitioncount	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hostinfobracketed_host_after_brackets                      K/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/yarl/_parse.py	split_urlr>      s   
 **/
0
0C' % %88++a$$C)++F+V+ehA1uuQ<''QqS 	8 	8A$$ % bqb'--//3q1uww<CFczHs

2A2w$C 	) 	KK 	KK 	KKK 	 	AXXa^^F{{v~~QuW%&&k 6>>*   &=6M 	1%6 	1	1&6	1 /000 	S ((--a0H{c!!X^^C%8%81%<%<s@S@SVW@W@W !3444/7|/E/Ec/J/J,NA}
  5q!1S!8!8 !3444  S."3s":":x 8.II E$%CDDDEN** !QRRR .==--Q +c**Q fnn&& f63x//    r-   c                    |                      dd                               dd                               dd                               dd          }t          j        d|          }||k    rd S dD ]}||v rt          d|  d	          d S )
Nr   r   r   r   r   NFKCz/?#@:znetloc 'z6' contains invalid characters under NFKC normalization)r   unicodedata	normalizer#   )r-   nnormalized_netlocr1   s       r=   r*   r*   l   s     	sB''R0088bAAII#rRRA#-fa88   !!!66 6 6 6   " r?   c                    d| vrd}d}| }n6|                      d          \  }}}|                    d          \  }}}|sd}d|v r|d         dk    s2|                    d          dk    s|                    d          dk    rt          d          |                    d          \  }}}|                    d          \  }}}	|	r|	d         dk    rt          d          |	                    d          \  }}}	n|                    d          \  }}}	|	s
|pd||pddfS 	 t	          |	          }
n# t          $ r t          d	          w xY wd|
cxk    rd
k    sn t          d          |pd||pd|
fS )z4Split netloc into username, password, host and port.r   Nr   r   r   r   r   r   z/Invalid URL: port can't be converted to integeri  zPort out of range 0-65535)r$   r&   r%   r#   int)r-   usernamepasswordr9   userinfor;   have_password	bracketedhostnameport_strports              r=   split_netlocrP      s   
 &## & 1 1# 6 6!X,4,>,>s,C,C)- 	H
hA;#!4!4q!8!8HNN3<O<ORS<S<S/000",,S111i ) 3 3C 8 8!X  	1s**/000!++C001hh ( 2 23 7 7!X B48+;tTAAL8}} L L LJKKKL4555tXx'74==s   "D2 2Er,   r.   r/   c                     |s| r	| t           v s|dd         dk    r7|r"|dd         dk    r| r
|  d| d| n|  d| }n| r	|  d| | nd| | }n	| r|  d| }|r| d| }|r| d	| n|S )
z(Unsplit a URL without any normalization.Nr   r   r   r   z://r   r   r   )USES_AUTHORITY)r,   r-   r   r.   r/   s        r=   unsplit_resultrS      s      &  V~55#bqb'T// 	P3rr7c>>28OV.......>O>O#>O>OCC17OV------=O&=O#=O=OCC	  # u"*3cH3r?   FuserrI   hostrO   encodec                     |dS |}|| d| }| ||S |/| sd} n|rt          |           } |rt          |          }|  d| } n| r|rt          |           } | r|  d| n|S )zMake netloc from parts.

    The user and password are encoded if encode is True.

    The host must already be encoded with _encode_host.
    Nr   r   r   )r   )rT   rI   rU   rO   rV   rets         r=   make_netlocrY      s     |r
Cootoo|(
 	 DD 	 $<<D 	(h''H####	 & d||"+d??S???+r?   query_stringc                     g }| s|S |                      d          D ]L}|                    d          \  }}}|                    t          |          t          |          f           M|S )zmParse a query given as a string argument.

    Works like urllib.parse.parse_qsl with keep empty values.
    &=)splitr&   appendr   )rZ   pairsk_vkr;   r   s         r=   query_to_pairsrc      sy    
 $&E !!#&& ; ;--$$1amA&&a(8(89::::Lr?   )F)__doc__r'   rB   	functoolsr   urllib.parser   r   _quotersr   r   r   r   	frozensetrR   tuplestrSplitURLTyper>   r*   rG   rP   rS   boolrY   listrc    r?   r=   <module>ro      s)     				           2 2 2 2 2 2 2 2 + + + + + + + +
D  0// ;''S#sC,-Q03 Q0< Q0 Q0 Q0 Q0h# $    , %>%>
3:sTz3:sTz9:%> %> %> %>P444#&4/24>A44 4 4 4   , ,
*,Dj, *, *	,
 , 	, , , ,B eCHo)>      r?   