§
    _Pƒii  ã                  óÆ   — d dl mZ d dlZd dlZd dlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZmZ g d	¢Zej         G d
„ d¦  «        ¦   «         Zdd„Zdd„Zefdd„ZdS )é    )ÚannotationsNé   )ÚHeaders)ÚInvalidProxy)Úbuild_authorization_basicÚ
build_host)Ú
USER_AGENT)ÚDELIMSÚWebSocketURI)Ú	get_proxyÚparse_proxyÚProxyc                  óf   — e Zd ZU dZded<   ded<   ded<   dZded	<   dZded
<   edd„¦   «         ZdS )r   að  
    Proxy address.

    Attributes:
        scheme: ``"socks5h"``, ``"socks5"``, ``"socks4a"``, ``"socks4"``,
            ``"https"``, or ``"http"``.
        host: Normalized to lower case.
        port: Always set even if it's the default.
        username: Available when the proxy address contains `User Information`_.
        password: Available when the proxy address contains `User Information`_.

    .. _User Information: https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1

    ÚstrÚschemeÚhostÚintÚportNú
str | NoneÚusernameÚpasswordÚreturnútuple[str, str] | Nonec                óB   — | j         €d S | j        €J ‚| j         | j        fS )N)r   r   )Úselfs    úd/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/websockets/proxy.pyÚ	user_infozProxy.user_info(   s,   € àŒ=Ð Ø4ØŒ}Ð(Ð(Ð(Ø”˜tœ}Ð-Ð-ó    )r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   Úpropertyr   © r   r   r   r      s}   € € € € € € ðð ð €K€KKØ€I€IIØ€I€IIØ€HÐÐÐÑØ€HÐÐÐÑàð.ð .ð .ñ „Xð.ð .ð .r   r   Úproxyr   r   c                óB  — t           j                             | ¦  «        }|j        dvrt	          | d|j        › d¦  «        ‚|j        €t	          | d¦  «        ‚|j        dvrt	          | d¦  «        ‚|j        dk    rt	          | d	¦  «        ‚|j        dk    rt	          | d
¦  «        ‚|j        }|j        }|j	        p|j        dk    rdnd}|j
        }|j        }||€t	          | d¦  «        ‚	 |                      d¦  «         n‰# t          $ r| |                     d¦  «                             ¦   «         }|P|€J ‚t           j                             |t           ¬¦  «        }t           j                             |t           ¬¦  «        }Y nw xY wt#          |||||¦  «        S )z°
    Parse and validate a proxy.

    Args:
        proxy: proxy.

    Returns:
        Parsed proxy.

    Raises:
        InvalidProxy: If ``proxy`` isn't a valid proxy.

    )Úsocks5hÚsocks5Úsocks4aÚsocks4ÚhttpsÚhttpzscheme z isn't supportedNzhostname isn't provided)Ú ú/zpath is meaninglessr.   zquery is meaninglesszfragment is meaninglessr,   i»  éP   z"username provided without passwordÚasciiÚidna)Úsafe)ÚurllibÚparseÚurlparser   r   ÚhostnameÚpathÚqueryÚfragmentr   r   r   ÚencodeÚUnicodeEncodeErrorÚdecodeÚquoter
   r   )r&   Úparsedr   r   r   r   r   s          r   r   r   0   sÇ  € õ Œ\×"Ò" 5Ñ)Ô)€FØ„}ÐWÐWÐWÝ˜5Ð"K¨F¬MÐ"KÐ"KÐ"KÑLÔLÐLØ„ÐÝ˜5Ð";Ñ<Ô<Ð<Ø„{˜)Ð#Ð#Ý˜5Ð"7Ñ8Ô8Ð8Ø„|rÒÐÝ˜5Ð"8Ñ9Ô9Ð9Ø„˜"ÒÐÝ˜5Ð";Ñ<Ô<Ð<àŒ]€FØŒ?€DØŒ;ÐC &¤-°7Ò":Ð":˜3˜3À€DØŒ€HØŒ€Hð Ð Ð 0Ý˜5Ð"FÑGÔGÐGð	AØŠWÑÔÐÐøÝð Að Að Að {Š{˜6Ñ"Ô"×)Ò)Ñ+Ô+ˆØÐØÐ'Ð'Ð'Ý”|×)Ò)¨(½Ð)Ñ@Ô@ˆHÝ”|×)Ò)¨(½Ð)Ñ@Ô@ˆHøøðAøøøõ ˜˜t X¨xÑ8Ô8Ð8s   Ã/D ÄBFÆ
FÚurir   r   c                óR  — t           j                             | j        › d| j        › ¦  «        rdS t           j                             ¦   «         }| j        rg d¢}ng d¢}|D ]E}|                     |¦  «        }|,|dk    r"|                     d¦  «        rd|dd…         z   }|c S ŒFdS )	zU
    Return the proxy to use for connecting to the given WebSocket URI, if any.

    ú:N)ÚwssÚsocksr,   )ÚwsrD   r,   r-   rD   zhttp://z
socks5h://é   )	r4   ÚrequestÚproxy_bypassr   r   Ú
getproxiesÚsecureÚgetÚ
startswith)r@   ÚproxiesÚschemesr   r&   s        r   r   r   b   sÕ   € õ
 „~×"Ò" c¤hÐ#;Ð#;°´Ð#;Ð#;Ñ<Ô<ð Øˆtõ Œn×'Ò'Ñ)Ô)€GØ
„zð 3Ø+Ð+Ð+ˆˆà2Ð2Ð2ˆàð ð ˆØ—’˜FÑ#Ô#ˆØÐØ˜Ò Ð  U×%5Ò%5°iÑ%@Ô%@Ð Ø$ u¨Q¨R¨R¤yÑ0ØˆLˆLˆLð ð
 ˆtr   Úws_uriÚuser_agent_headerÚbytesc                ój  — t          |j        |j        |j        d¬¦  «        }t	          ¦   «         }t          |j        |j        |j        ¦  «        |d<   |||d<   | j        &| j        €J ‚t          | j        | j        ¦  «        |d<   d|› d                     ¦   «         | 	                    ¦   «         z   S )NT)Úalways_include_portÚHostz
User-AgentzProxy-AuthorizationzCONNECT z HTTP/1.1
)
r   r   r   rJ   r   r   r   r   r;   Ú	serialize)r&   rO   rP   r   Úheaderss        r   Úprepare_connect_requestrW   †   s¹   € õ
 f”k 6¤;°´ÐSWÐXÑXÔX€DÝ‰iŒi€GÝ  ¤¨f¬k¸6¼=ÑIÔI€GˆFOØÐ$Ø 1ˆÑØ„~Ð!ØŒ~Ð)Ð)Ð)Ý)BØŒN˜EœNñ*
ô *
ˆÐ%Ñ&ð *dÐ)Ð)Ð)×0Ò0Ñ2Ô2°W×5FÒ5FÑ5HÔ5HÑHÐHr   )r&   r   r   r   )r@   r   r   r   )r&   r   rO   r   rP   r   r   rQ   )Ú
__future__r   ÚdataclassesÚurllib.parser4   Úurllib.requestÚdatastructuresr   Ú
exceptionsr   rV   r   r   Úhttp11r	   r@   r
   r   Ú__all__Ú	dataclassr   r   r   rW   r%   r   r   ú<module>ra      s?  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ð 0Ð
/Ð
/€ð Ôð.ð .ð .ð .ð .ñ .ô .ñ Ôð.ð</9ð /9ð /9ð /9ðd!ð !ð !ð !ðN %/ðIð Ið Ið Ið Ið Ið Ir   