§
    ŸöÉgƒ  ã                   ó  — d dl 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	 	 ddgZ
ded	efd
„ZddgZded	efd„Zded	efd„Zdeded	efd„Zdedee         d	efd„Z	 	 	 	 	 ddededee         dedee         dee         ded	efd„ZdS )é    N)ÚOptional)ÚunquoteÚurlparseé   )ÚWebSocketProxyExceptionÚ	parse_urlÚget_proxy_infoÚurlÚreturnc                 ó†  — d| vrt          d¦  «        ‚|                      dd¦  «        \  }} t          | d¬¦  «        }|j        r|j        }nt          d¦  «        ‚d}|j        r|j        }d}|d	k    r|sd
}n|dk    rd}|sd}nt          d|z  ¦  «        ‚|j        r|j        }nd}|j        r|d|j        › �z  }||||fS )z®
    parse url and the result is tuple of
    (hostname, port, resource path and the flag of secure mode)

    Parameters
    ----------
    url: str
        url string.
    ú:zurl is invalidr   Úhttp)Úschemezhostname is invalidr   FÚwséP   ÚwssTi»  zscheme %s is invalidú/ú?)Ú
ValueErrorÚsplitr   ÚhostnameÚportÚpathÚquery)r
   r   Úparsedr   r   Ú	is_secureÚresources          úZ/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/websocket/_url.pyr   r      s  € ð �#€~€~ÝÐ)Ñ*Ô*Ð*à—)’)˜C Ñ#Ô#�K€FˆCå�c &Ð)Ñ)Ô)€FØ„ð 0Ø”?ˆˆåÐ.Ñ/Ô/Ð/Ø€DØ„{ð ØŒ{ˆà€IØ�‚~€~Øð 	ØˆDøØ	�5ŠˆØˆ	Øð 	ØˆDøåÐ/°&Ñ8Ñ9Ô9Ð9à„{ð Ø”;ˆˆàˆà„|ð 'ØÐ&˜œÐ&Ð&Ñ&ˆà�T˜8 YÐ.Ð.ó    Ú	localhostz	127.0.0.1Úaddrc                 ó\   — 	 t          j        | ¦  «         dS # t           j        $ r Y dS w xY w)NTF)ÚsocketÚ	inet_atonÚerror)r!   s    r   Ú_is_ip_addressr&   O   sE   € ðÝÔ˜ÑÔÐð ˆtøõ Œ<ð ð ð Øˆuˆuðøøøs   ‚ ˜+ª+r   c                 ó®   — 	 |                       d¦  «        \  }}t          |¦  «        odt          |¦  «        cxk    odk     nc S # t          $ r Y dS w xY w)Nr   r   é    F)r   r&   Úintr   )r   r!   Únetmasks      r   Ú_is_subnet_addressr+   X   ss   € ðØ Ÿš sÑ+Ô+‰ˆˆgÝ˜dÑ#Ô#Ð>¨­S°©\¬\Ð(>Ð(>Ò(>Ð(>¸BÒ(>Ð(>Ð(>Ð(>Ð>øÝð ð ð Øˆuˆuðøøøs   ‚AA Á
AÁAÚipÚnetc                 ó(  — t          j        dt          j        | ¦  «        ¦  «        d         }|                     d¦  «        \  }}t          j        dt          j        |¦  «        ¦  «        d         }ddt          |¦  «        z
  z  dz  }||z  |k    S )Nz!Ir   r   l   ÿÿ r(   )ÚstructÚunpackr#   r$   r   r)   )r,   r-   ÚipaddrÚnetaddrr*   s        r   Ú_is_address_in_networkr3   `   s‚   € Ý”- ¥fÔ&6°rÑ&:Ô&:Ñ;Ô;¸AÔ>€FØ—y’y ‘~”~Ñ€GˆWÝ”= ¥vÔ'7¸Ñ'@Ô'@ÑAÔAÀ!ÔD€Gà˜b¥3 w¡<¤<Ñ/Ñ0°JÑ>€GØ�GÑ˜wÒ&Ð&r   Úno_proxyc                 óª  ‡ — |sit           j                             dt           j                             dd¦  «        ¦  «                             dd¦  «        x}r|                     d¦  «        }|st
          }d|v rdS ‰ |v rdS t          ‰ ¦  «        rt          ˆ fd„|D ¦   «         ¦  «        S d	„ |D ¦   «         D ]}‰                      |¦  «        r dS Œd
S )Nr4   ÚNO_PROXYÚ ú ú,Ú*Tc                 óN   •— g | ]!}t          |¦  «        ¯t          ‰|¦  «        ‘Œ"S © )r+   r3   )Ú.0Úsubnetr   s     €r   ú
<listcomp>z%_is_no_proxy_host.<locals>.<listcomp>x   sA   ø€ ð ð ð àÝ% fÑ-Ô-ðÝ& x°Ñ8Ô8ðð ð r   c                 ó<   — g | ]}|                      d ¦  «        ¯|‘ŒS )ú.)Ú
startswith)r=   Údomains     r   r?   z%_is_no_proxy_host.<locals>.<listcomp>~   s+   € ÐKÐKÐK˜f°F×4EÒ4EÀcÑ4JÔ4JÐK�6ÐKÐKÐKr   F)	ÚosÚenvironÚgetÚreplacer   ÚDEFAULT_NO_PROXY_HOSTr&   ÚanyÚendswith)r   r4   ÚvrC   s   `   r   Ú_is_no_proxy_hostrL   i   s  ø€ Øð $Ý”
—’˜z­2¬:¯>ª>¸*ÀbÑ+IÔ+IÑJÔJ×RÒRØ�ñ
ô 
ð 
ˆ1ð 	$ð —w’w˜s‘|”|ˆHØð )Ý(ˆà
ˆh€€ØˆtØ�8ÐÐØˆtÝ�hÑÔð 
Ýðð ð ð à&ðñ ô ñ
ô 
ð 	
ð LÐK¨ÐKÑKÔKð ð ˆØ×Ò˜VÑ$Ô$ð 	Ø�4�4ð	àˆ5r   r   r   Ú
proxy_hostÚ
proxy_portÚ
proxy_authÚ
proxy_typec                 óØ  — t          | |¦  «        rdS |r|st          d¦  «        ‚|}|}|||fS |rdnd}	t          j                             |	t          j                             |	                     ¦   «         d¦  «        ¦  «                             dd¦  «        }
|
rOt          |
¦  «        }|j        r(t          |j        ¦  «        t          |j
        ¦  «        fnd}|j        |j        |fS dS )aœ  
    Try to retrieve proxy host and port from environment
    if not provided in options.
    Result is (proxy_host, proxy_port, proxy_auth).
    proxy_auth is tuple of username and password
    of proxy authentication information.

    Parameters
    ----------
    hostname: str
        Websocket server name.
    is_secure: bool
        Is the connection secure? (wss) looks for "https_proxy" in env
        instead of "http_proxy"
    proxy_host: str
        http proxy host name.
    proxy_port: str or int
        http proxy port.
    no_proxy: list
        Whitelisted host names that don't use the proxy.
    proxy_auth: tuple
        HTTP proxy auth information. Tuple of username and password. Default is None.
    proxy_type: str
        Specify the proxy protocol (http, socks4, socks4a, socks5, socks5h). Default is "http".
        Use socks4a or socks5h if you want to send DNS requests through the proxy.
    )Nr   Nz+Cannot use port 0 when proxy_host specifiedÚhttps_proxyÚ
http_proxyr7   r8   N)rL   r   rD   rE   rF   ÚupperrG   r   Úusernamer   Úpasswordr   r   )r   r   rM   rN   rO   r4   rP   r   ÚauthÚenv_keyÚvalueÚproxys               r   r	   r	   „   s  € õF ˜ 8Ñ,Ô,ð Øˆ}àð &Øð 	YÝ)Ð*WÑXÔXÐXØˆØˆØ˜4 Ð%Ð%à(Ð:ˆmˆm¨l€GÝŒJ�NŠN˜7¥B¤J§N¢N°7·=²=±?´?ÀBÑ$GÔ$GÑHÔH×PÒPØˆRñô €Eð ð 0Ý˜‘”ˆð Œ~ð�W�U”^Ñ$Ô$¥g¨e¬nÑ&=Ô&=Ð>Ð>àð 	ð
 Œ~˜uœz¨4Ð/Ð/àˆ=r   )Nr   NNr   )rD   r#   r/   Útypingr   Úurllib.parser   r   Ú_exceptionsr   Ú__all__ÚstrÚtupler   rH   Úboolr&   r+   r3   ÚlistrL   r)   r	   r<   r   r   ú<module>rc      sÄ  ðØ 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð& Ð(Ð
)€ð+/�3ð +/˜5ð +/ð +/ð +/ð +/ð\ % kÐ2Ð ð˜ð  ð ð ð ð ð ð ¨ð ð ð ð ð'˜sð '¨ð '°ð 'ð 'ð 'ð 'ð ð ¨x¸¬~ð À$ð ð ð ð ð< !%ØØ"&Ø#Øð:ð :Øð:àð:ð ˜”ð:ð ð	:ð
 ˜”ð:ð �tŒnð:ð ð:ð ð:ð :ð :ð :ð :ð :r   