+
    }i%                        ^ RI Ht ^ RIHt ^ RIHtHtHtHt ]	! R4      t
RR R lltRR R lltR	 R
 ltR R ltR R ltR# )    )annotations)time)ParseResultquoteurlparse
urlunparse0123456789ABCDEFabcdefc               $    V ^8  d   QhRRRRRR/# )   time_periodstr	separatorreturnztuple[time, time] )formats   "`/Users/ahmad/.openclaw/workspace/my-crawler/.venv/lib/python3.14/site-packages/protego/_utils.py__annotate__r   	   s"        C  C  BS      c                    V P                  V4      w  r#\        \        VR,          4      \        VRR 4      4      p\        \        VR,          4      \        VRR 4      4      pWE3# )zFParse a string with a time period into a tuple of start and end times.Nr   NN)splitr   int)r   r   start_time_strend_time_str
start_timeend_times   &&    r   _parse_time_periodr   	   sb    #.#4#4Y#? Nc.,-s>"#3F/GHJCR()3|BC/@+ABHr   c               (    V ^8  d   QhRRRRRRRR/# )r   urlr   ignoreerrorsr   r   )r   s   "r   r   r      s(     ; ;# ;s ; ;S ;r   c                   RV 9  d   V # V Uu0 uF  p\        V4      R kK  	  ppV P                  R4      pV^ ,          P                  R4      .pVR,           F  p\        V4      ^8  d   \	        VR,          4      P                  \        4      '       dk   VR,          P                  4       pVR,          p	W9  d=   VP                  \        P                  V4      V	P                  R4      ,           4       K  W,           pVP                  RVP                  R4      ,           4       K  	  RP                  V4      P                  RV4      # u upi )	z9Replace %xy escapes by their single-character equivalent.%02Xzutf-8:   NNr   :r   NN   %r   )ordr   encodelensetissubset_HEX_DIGITSupperappendbytesfromhexjoindecode)
r    r!   r"   c
ignore_setpartsparts_encodedparthexcodeleftovers
   &&&       r   _unquoter;      s   
#~
 ,226aSVCL/6J2IIcNE"'(//'":!;Mb		t9>c$r(m44[AA2hnn&GBxH($$U]]7%;hoog>V%VW%D 	TDKK$889  88M"))'6::' 3s   Ec                    V ^8  d   QhRRRR/# )r   charr   r   r   )r   s   "r   r   r   .   s      S S r   c                     R\        V 4      R 2# )z!Escape char as RFC 2396 specifiesr$   r%   )r(   )r=   s   &r   
_hexescaper?   .   s    s4yor   c                    V ^8  d   QhRRRR/# )r   pathr   r   r   )r   s   "r   r   r   3   s      c c r   c                    \        V 4      p\        VP                  RR7      p \        V RR7      p \	        RRWP
                  VP                  VP                  4      p\        V4      p T ;'       g    R# )zReturn percent encoded path.z/%r!   safe /)	r   r;   rA   r   r   paramsqueryfragmentr   )rA   r6   s   & r   _quote_pathrK   3   s[    TNEEJJt,DD!DBllEKKPEeD;;3r   c                    V ^8  d   QhRRRR/# )r   patternr   r   r   )r   s   "r   r   r   >   s      C C r   c                   V P                  R4      '       d
   RV ,           p V P                  R4      '       d
   RV ,           p RpV R,          R8X  g   V R,          R8X  g   V R,          R8X  d   V R,          pV RR p \        V 4      p\        VP                  RR	7      p \	        V R
R7      p \        RRW,           VP                  VP                  VP                  4      p\        V4      # )https://rG   z//rF   ?;$Nz/*$%rC   z/*%=rD   )rO   zhttp://)

startswithr   r;   rA   r   r   rH   rI   rJ   r   )rM   	last_charr6   s   &  r   _quote_patternrV   >   s    122-$. Ir{cWR[C/72;#3EBK	#2,WEuzz&1GG&)G
B#U\\5;;E er   N)-)rF   replace)
__future__r   datetimer   urllib.parser   r   r   r   r+   r-   r   r;   r?   rK   rV   r   r   r   <module>r\      s5    "  A A*+ ;:
r   