ó
    pñ:i  ã                  óø  • S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S SKJr  SS	KJr  SS
 jr\R                   " S\5        SS jr\" / \" S5      QSPSP75      R)                  5       r\" S\5      r\" S\S-   5      r\" S\S-   5      r\" S\S-   5      rSS jrSS jrS\R8                  R:                  ;  a%  \R8                  R:                  R=                  S5        S S jrS!S jr g)"é    )ÚannotationsN)Úquote)Úunquote)Ú	urlencode)Úurlsplit)Ú
urlunsplité   )Úiter_multi_itemsc                ór   • [        U R                  U R                  U R                   SS9nXR                  4$ )zJUsed in :func:`uri_to_iri` after unquoting to re-quote any
invalid bytes.
Ú ©Úsafe)r   ÚobjectÚstartÚend)ÚeÚouts     ÚP/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/werkzeug/urls.pyÚ_codec_error_url_quoter      s/   € ô �—‘˜Ÿ™ 1§5¡5Ð)°Ñ
3€CØ—‘ˆ:Ðó    úwerkzeug.url_quotec                óÀ   ^• SR                  S [        U5       5       5      n[        R                  " SU S3[        R                  5      mSU4S jjnSU  3Ul        U$ )zÅCreate a function that unquotes all percent encoded characters except those
given. This allows working with unquoted characters if possible while not changing
the meaning of a given part of a URL.
Ú|c              3  ó<   #   • U  H  n[        U5      S  v •  M     g7f)Ú02XN)Úord)Ú.0Úcs     r   Ú	<genexpr>Ú%_make_unquote_part.<locals>.<genexpr>"   s   é € Ð>²¨1œ#˜a›& ˜”²ùs   ‚z((?:%(?:z))+)c                óÞ   >• [        TR                  U 5      5      n/ nU H:  nUR                  [        USS5      5        UR                  [	        US5      5        M<     SR                  U5      $ )Nzutf-8r   r   )ÚiterÚsplitÚappendr   ÚnextÚjoin)ÚvalueÚpartsr   ÚpartÚpatterns       €r   Ú_unquote_partialÚ,_make_unquote_part.<locals>._unquote_partial%   s]   ø€ Ü�W—]‘] 5Ó)Ó*ˆØˆãˆDØ�J‰J”w˜t WÐ.BÓCÔDØ�J‰J”t˜E 2“Ö'ñ ð �w‰w�s‹|Ðr   Ú	_unquote_)r'   ÚstrÚreturnr.   )r&   ÚsortedÚreÚcompileÚIÚ__name__)ÚnameÚcharsÚchoicesr+   r*   s       @r   Ú_make_unquote_partr8      sW   ø€ ð
 �h‰hÑ>´°u´Ó>Ó>€GÜ�jŠj˜8 G 9¨DÐ1´2·4±4Ó8€G÷ð #,¨D¨6Ð 2ÐÔØÐr   é!   é%   é   ÚfragmentÚqueryz&=+#Úpathz/?#Úuserz:@/?#c                ó(  • [        U 5      n[        UR                  5      n[        UR                  5      n[        UR                  5      nUR                  (       a  [        UR                  5      nOSnSU;   a  SU S3nUR                  (       a  U SUR                   3nUR                  (       aI  [        UR                  5      nUR                  (       a  [        UR                  5      nU SU 3nU SU 3n[        UR                  XRX445      $ )aí  Convert a URI to an IRI. All valid UTF-8 characters are unquoted,
leaving all reserved and invalid characters quoted. If the URL has
a domain, it is decoded from Punycode.

>>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF")
'http://\u2603.net/p\xe5th?q=\xe8ry%DF'

:param uri: The URI to convert.

.. versionchanged:: 3.0
    Passing a tuple or bytes, and the ``charset`` and ``errors`` parameters,
    are removed.

.. versionchanged:: 2.3
    Which characters remain quoted is specific to each part of the URL.

.. versionchanged:: 0.15
    All reserved and invalid characters remain quoted. Previously,
    only some reserved characters were preserved, and invalid bytes
    were replaced instead of left quoted.

.. versionadded:: 0.6
r   Ú:Ú[Ú]Ú@)r   Ú_unquote_pathr>   Ú_unquote_queryr=   Ú_unquote_fragmentr<   ÚhostnameÚ_decode_idnaÚportÚusernameÚ_unquote_userÚpasswordr   Úscheme)Úurir(   r>   r=   r<   ÚnetlocÚauthrM   s           r   Ú
uri_to_irirR   =   sà   € ô0 �S‹M€EÜ˜Ÿ™Ó$€DÜ˜5Ÿ;™;Ó'€EÜ  §¡Ó0€Hà‡~‡~Ü˜eŸn™nÓ-‰àˆà
ˆfƒ}Ø�V�H˜A�ˆà‡z‡zØ�8˜1˜UŸZ™Z˜LÐ)ˆà‡~‡~Ü˜UŸ^™^Ó,ˆà�>�>Ü$ U§^¡^Ó4ˆHØ�V˜1˜X˜JÐ'ˆDà�6˜˜6˜(Ð#ˆä�u—|‘| V°5ÐCÓDÐDr   c                óH  • [        U 5      n[        UR                  SS9n[        UR                  SS9n[        UR                  SS9nUR
                  (       a+  UR
                  R                  S5      R                  S5      nOSnSU;   a  S	U S
3nUR                  (       a  U SUR                   3nUR                  (       aG  [        UR                  SS9nUR                  (       a  [        UR                  SS9nU SU 3nU SU 3n[        UR                  XRX445      $ )aì  Convert an IRI to a URI. All non-ASCII and unsafe characters are
quoted. If the URL has a domain, it is encoded to Punycode.

>>> iri_to_uri('http://\u2603.net/p\xe5th?q=\xe8ry%DF')
'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF'

:param iri: The IRI to convert.

.. versionchanged:: 3.0
    Passing a tuple or bytes, the ``charset`` and ``errors`` parameters,
    and the ``safe_conversion`` parameter, are removed.

.. versionchanged:: 2.3
    Which characters remain unquoted is specific to each part of the URL.

.. versionchanged:: 0.15
    All reserved characters remain unquoted. Previously, only some reserved
    characters were left unquoted.

.. versionchanged:: 0.9.6
   The ``safe_conversion`` parameter was added.

.. versionadded:: 0.6
z%!$&'()*+,/:;=@r   z%!$&'()*+,/:;=?@z%!#$&'()*+,/:;=?@ÚidnaÚasciir   rA   rB   rC   z%!$&'()*+,;=rD   )r   r   r>   r=   r<   rH   ÚencodeÚdecoderJ   rK   rM   r   rN   )Úirir(   r>   r=   r<   rP   rQ   rM   s           r   Ú
iri_to_urirY   q   s   € ô2 �S‹M€Eô �—‘Ð"3Ñ4€DÜ�%—+‘+Ð$6Ñ7€EÜ�U—^‘^Ð*=Ñ>€Hà‡~‡~Ø—‘×&Ñ& vÓ.×5Ñ5°gÓ>‰àˆà
ˆfƒ}Ø�V�H˜A�ˆà‡z‡zØ�8˜1˜UŸZ™Z˜LÐ)ˆà‡~‡~Ü�U—^‘^¨.Ñ9ˆà�>�>Ü˜UŸ^™^°.ÑAˆHØ�V˜1˜X˜JÐ'ˆDà�6˜˜6˜(Ð#ˆä�u—|‘| V°5ÐCÓDÐDr   zitms-servicesc                óˆ  •  U R                  S5      n UR                  S5      $ ! [         a    U s $ f = f! [         a     Of = f/ nUR	                  S5       HU  n UR                  UR                  S5      5        M&  ! [         a$    UR                  UR                  S5      5         MS  f = f   SR                  U5      $ )NrU   rT   ó   .Ú.)rV   ÚUnicodeEncodeErrorrW   ÚUnicodeDecodeErrorr#   r$   r&   )ÚdomainÚdatar(   r)   s       r   rI   rI   ¯   sº   € ðØ�}‰}˜WÓ%ˆð
à�{‰{˜6Ó"Ð"øô ó àŠðûô ó Ùðúð €Eà—
‘
˜4Ö ˆð	/Ø�L‰L˜Ÿ™ VÓ,Ö-øÜ!ó 	/Ø�L‰L˜Ÿ™ WÓ-×.ð	/úñ !ð �8‰8�E‹?Ðs-   ‚% ”7 ¥4³4·
AÁAÁ B Â *B.Â-B.c                ód   • [        U 5       Vs/ s H  oS   c  M
  UPM     nn[        USS9$ s  snf )Nr	   z!$'()*,/:;?@r   )r
   r   )r=   ÚxÚitemss      r   Ú
_urlencoderd   È   s4   € Ü(¨Ô/ÓDÒ/�1°Q±4�QÑ/€EÐDä�U Ñ0Ð0ùò Es   Ž	-›-)r   ÚUnicodeErrorr/   ztuple[str, int])r5   r.   r6   r.   r/   zt.Callable[[str], str])rO   r.   r/   r.   )rX   r.   r/   r.   )r_   r.   r/   r.   )r=   z1t.Mapping[str, str] | t.Iterable[tuple[str, str]]r/   r.   )!Ú
__future__r   Úcodecsr1   ÚtypingÚtÚurllib.parseÚurllibr   r   r   r   r   Údatastructuresr
   r   Úregister_errorr8   ÚbytesÚrangerW   Ú_always_unsaferG   rF   rE   rL   rR   rY   ÚparseÚuses_netlocr$   rI   rd   © r   r   Ú<module>rt      sñ   ðÝ "ã Û 	Û Û Ý Ý  Ý "Ý !Ý #å ,ôð × Ò Ð*Ð,BÔ Côñ2 Ð1™˜t›Ð1 dÐ1¨DÑ1Ó2×9Ñ9Ó;€Ù& z°>ÓBÐ Ù# G¨^¸fÑ-DÓE€Ù" 6¨>¸EÑ+AÓB€Ù" 6¨>¸GÑ+CÓD€ô1Eôh4Eðt ˜&Ÿ,™,×2Ñ2Ó2Ø
‡L�L×Ñ×#Ñ# OÔ4ôõ21r   