ó
    ‚¤j  ã                  óê  • S SK Jr  S SK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J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JrJrJrJrJr  \(       a  \" S
\S9r\" \R<                  " SS5      5      r\" \R<                  " SS5      5      r \R<                  " SS5      r!\R<                  " SS5      RE                  5       r#\$" \R<                  " SS5      5      r%\%(       a"  \R<                  " SS5      RM                  S5      O/ r'\R<                  " SS5      r(\R<                  " SS5      r)\R<                  " SS5      r* " S S\RV                  5      r+     S             SS jjr,g) é    )ÚannotationsN)ÚCallable)Úpartial)ÚTYPE_CHECKINGÚTypeVar)ÚConfig)ÚServerFailedToStartError)ÚApp)ÚServerReloaderÚSourceFileReloaderÚSpacesReloaderÚ	get_spaceÚwatchfnÚwatchfn_spacesÚ_ServerReloaderT)ÚboundÚGRADIO_SERVER_PORTÚ7860ÚGRADIO_NUM_PORTSÚ100ÚGRADIO_SERVER_NAMEz	127.0.0.1ÚGRADIO_HOT_RELOADÚfalseÚGRADIO_WATCH_DIRSÚ Ú,ÚGRADIO_WATCH_MODULE_NAMEÚappÚGRADIO_WATCH_DEMO_NAMEÚGRADIO_WATCH_DEMO_PATHc                  óT   ^ • \ rS rSrS\4       SU 4S jjjrS rS rS rSr	U =r
$ )	ÚServeré.   Nc                óÞ   >• UR                   U l        [        TU ]  U5        X l        U R                  (       a5  [
        R                  " 5       U l        [        X0R                  5      U l	        g g ©N)
r   Úrunning_appÚsuperÚ__init__ÚreloaderÚ	threadingÚEventÚeventr   Úwatch)ÚselfÚconfigr)   r   Ú	__class__s       €Ú C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\gradio/http_server.pyr(   ÚServer.__init__/   sM   ø€ ð "Ÿ:™:ˆÔÜ‰Ñ˜Ô Ø ŒØ�=�=Ü"ŸšÓ*ˆDŒJÜ  ¯-©-Ó8ˆD�Jð ó    c                ó   • g r%   © ©r.   s    r1   Úinstall_signal_handlersÚServer.install_signal_handlers<   s   € Ør3   c                ó  • [         R                  " U R                  SS9U l        U R                  (       a>  [         R                  " U R
                  SS9U l        U R                  R                  5         U R                  R                  5         [        R                  " 5       nU R                  (       dQ  [        R                  " S5        [        R                  " 5       U-
  S:”  a  [        S5      eU R                  (       d  MP  g g )NT)ÚtargetÚdaemongü©ñÒMbP?é   z@Server failed to start. Please check that the port is available.)r*   ÚThreadÚrunÚthreadr)   r-   Úwatch_threadÚstartÚtimeÚstartedÚsleepr	   )r.   rA   s     r1   Úrun_in_threadÚServer.run_in_thread?   s¨   € Ü×&Ò&¨d¯h©h¸tÑDˆŒØ�=�=Ü )× 0Ò 0¸¿
¹
È4Ñ PˆDÔØ×Ñ×#Ñ#Ô%Ø�‰×ÑÔÜ—	’	“ˆØ—,—,Ü�JŠJ�tÔÜ�yŠy‹{˜UÑ" QÓ&Ü.ØVóð ð —,—,“,r3   c                óÎ   • SU l         U R                  (       a4  U R                  R                  5         U R                  R	                  5         U R
                  R	                  SS9  g )NTr<   )Útimeout)Úshould_exitr)   Ústopr@   Újoinr?   r6   s    r1   ÚcloseÚServer.closeM   sH   € ØˆÔØ�=�=Ø�M‰M×ÑÔ Ø×Ñ×"Ñ"Ô$Ø�‰×Ñ ÐÒ#r3   )r,   r)   r&   rI   r?   r-   r@   )r/   r   r)   z_ServerReloaderT | Noner   z"Callable[[_ServerReloaderT], None]ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r(   r7   rE   rL   Ú__static_attributes__Ú__classcell__)r0   s   @r1   r"   r"   .   sO   ø† ð -1Ø6=ð	9àð9ð *ð9ð 4ð	9ð
 
÷9ð 9òò÷$ð $r3   r"   c                ó€  • Ub  Uc  [        S5      eU=(       d    [        nUS:X  a  SOUnUR                  S5      (       a  UR                  S5      (       a  USS nOUnUb  U/O[	        [
        [
        [        -   5      nU GHc  n	 [        R                  " 5       n
U
R                  [        R                  [        R                  S5        U
R                  [        U	45        U
R                  5         [        R                  " U U	USUUUS	9n[        5       bH  [!        U ["        [$        [&        R(                  " 5       [*        R,                  S
   S9n[/        X¼[0        S9nOw["        (       ac  [3        U ["        [4        [$        [&        R(                  " 5       [6        [*        R,                  S
   [8        R:                  " SS5      S9n[/        X¼S9nO	[/        US9nUR=                  5           O&   [?        S[C        U5       S[E        U5       S35      eUb
  SU SU	 S3nO	SU SU	 S3nXXí4$ ! [>        [@        4 a     GMº  f = f)að  Launches a local server running the provided Interface
Parameters:
    app: the FastAPI app object to run
    server_name: to make app accessible on local network, set this to "0.0.0.0". Can be set by environment variable GRADIO_SERVER_NAME.
    server_port: will start gradio app on this port (if available). Can be set by environment variable GRADIO_SERVER_PORT.
    auth: If provided, username and password (or list of username-password tuples) required to access the Blocks. Can also provide function that takes username and password and returns True if valid login.
    ssl_keyfile: If a path to a file is provided, will use this as the private key file to create a local server running on https.
    ssl_certfile: If a path to a file is provided, will use this as the signed certificate for https. Needs to be provided if ssl_keyfile is provided.
    ssl_keyfile_password: If a password is provided, will use this with the ssl certificate for https.

Returns:
    server_name: the name of the server (default is "localhost")
    port: the port number the server is running on
    path_to_local_server: the complete address that the local server can be accessed at
    server: the server object that is a subclass of uvicorn.Server (used to close the server)
z9ssl_certfile must be provided if ssl_keyfile is provided.z0.0.0.0Ú	localhostÚ[Ú]é   éÿÿÿÿÚwarning)r   ÚportÚhostÚ	log_levelÚssl_keyfileÚssl_certfileÚssl_keyfile_passwordÚ__main__)r   Ú
watch_dirsÚ	demo_nameÚ
stop_eventÚwatch_module)r/   r)   r   ÚGRADIO_WATCH_ENCODINGzutf-8)r   rd   Úwatch_module_namere   rf   Ú	demo_filerg   Úencoding)r/   r)   )r/   z!Cannot find empty port in range: Ú-z�. You can specify a different port by setting the GRADIO_SERVER_PORT environment variable or passing the `server_port` parameter to `launch()`.zhttps://Ú:Ú/zhttp://)#Ú
ValueErrorÚLOCALHOST_NAMEÚ
startswithÚendswithÚrangeÚINITIAL_PORT_VALUEÚTRY_NUM_PORTSÚsocketÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚbindrL   Úuvicornr   r   r   r   r   r*   r+   ÚsysÚmodulesr"   r   r   r   r    ÚosÚgetenvrE   ÚOSErrorr	   ÚminÚmax)r   Úserver_nameÚserver_portr`   ra   rb   Úurl_host_namer^   Úserver_portsr]   Úsr/   r)   ÚserverÚpath_to_local_servers                  r1   Ústart_serverrŠ   U   sE  € ð0 Ñ <Ñ#7ÜÐTÓUÐUà×/¤€KØ#.°)Ó#;‘KÀ€Mð
 ×Ñ˜c×"Ñ" {×';Ñ';¸C×'@Ñ'@Ø˜1˜RÐ ‰àˆð Ñ"ð 
‰äÔ%Ô'9¼MÑ'IÓJð ô ˆð2	ô —’“ˆAØ�L‰Lœ×*Ñ*¬F×,?Ñ,?ÀÔCð �F‰F”N DÐ)Ô*Ø�G‰GŒIô —^’^ØØØØ#Ø'Ø)Ø%9ñˆFô ‹{Ñ&Ü)ØÜ0Ü4Ü(ŸšÓ0Ü!$§¡¨ZÑ!8ñ�ô  Ø!¼nñ‘÷ #Ò"Ü-ØÜ0Ü&>Ü4Ü(ŸšÓ0Ü4Ü!$§¡¨ZÑ!8ÜŸYšYÐ'>ÀÓHñ	�ô   vÑA‘ä vÑ.�Ø× Ñ Ô"Ùñc ôj Ø/´°LÓ0AÐ/BÀ!ÄCÈÓDUÐCVð  Wfð  gó
ð 	
ð ÑØ!)¨-¨¸¸$¸¸qÐAÑà!(¨¨°q¸¸¸aÐ@ÐàÐ2Ð:Ð:øô Ô1Ð2ó 	Ûð	ús   ÂEH(È(H=È<H=)NNNNN)r   r
   rƒ   ú
str | Noner„   z
int | Noner`   r‹   ra   r‹   rb   r‹   rN   ztuple[str, int, str, Server])-Ú
__future__r   r~   rv   r|   r*   rB   Úcollections.abcr   Ú	functoolsr   Útypingr   r   r{   Úuvicorn.configr   Úgradio.exceptionsr	   Úgradio.routesr
   Úgradio.utilsr   r   r   r   r   r   r   Úintr   rt   ru   rp   Úlowerr   ÚboolÚshould_watchÚsplitr   r   r   r    r"   rŠ   r5   r3   r1   Ú<module>r™      s†  ðÝ "ã 	Û Û 
Û Û Ý $Ý ß )ã Ý !å 6Ý ÷÷ ö ÙÐ1¸ÑHÐñ ˜ŸšÐ#7¸Ó@ÓAÐ Ù�B—I’IÐ0°%Ó8Ó9€Ø—’Ð/°Ó=€à—I’IÐ1°7Ó;×AÑAÓCÐ á�B—I’IÐ1°2Ó6Ó7€æ5A€B‡I‚IÐ! 2Ó&×,Ñ,¨SÔ1Àrð ð Ÿ9š9Ð%?ÀÓGÐ ØŸšÐ#;¸RÓ@Ð ØŸšÐ#;¸RÓ@Ð ô$$ˆW�^‰^ô $$ðR #Ø"Ø"Ø#Ø'+ðj;Ø	ðj;àðj;ð ðj;ð ð	j;ð
 ðj;ð %ðj;ð "öj;r3   