Ë
    š„j²  ã                   óô  — d Z ddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZ dd	lm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 ddlmZm Z  ddlm!Z" ddlm#Z$ ddlm%Z%m&Z& ddl'm(Z(m)Z)  e*e«      Z+ e*e«      Z,d„ Z-d)d„Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6 G d„ de«      Z7e7Z8 G d „ d!ejr                  jt                  «      Z;d"„ Z<d#„ Z=d*d$„Z>d*d%„Z?d&„ Z@d'„ ZAd(„ ZBy)+zGNo longer used and new code should not use. Exists only for API compat.é    Né   )ÚPopenÚdecode_base_nÚpreferredencoding©Útraverse_objé   )ÚcertifiÚ
websockets)Úmake_ssl_context)ÚHTTPHandler)Úescape_rfc3986)Únormalize_url)Úrandom_user_agentÚstd_headers)ÚYoutubeDLCookieJar)Ú
PUTRequest)ÚSUPPORTED_ENCODINGSÚHEADRequest)ÚProxyHandler)ÚRedirectHandler)Úmake_socks_conn_classÚupdate_Request)Ú	HTTPErrorÚnetwork_exceptionsc                 óF   — ddl m}  || |«      }|j                  |«       |S )Nr	   )Úload_plugins)Úpluginsr   Úupdate)ÚnameÚsuffixÚ	namespacer   Úrets        úK/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/utils/_legacy.pyr   r   #   s$   € Ý&Ù
�t˜VÓ
$€CØ×Ñ�SÔØ€Jó    c                 ó"   — t        | ||dd¬«      S )NT)Ú	casesenseÚis_user_inputÚtraverse_stringr   )ÚdictnÚkeysr'   s      r$   Útraverse_dictr,   *   s   € Ü˜˜t¨yÈÐ^bÔcÐcr%   c                 ó   — t        | |¬«      S )N)Útable)r   )ÚvalueÚdigitss     r$   Údecode_baser1   .   s   € Ü˜ fÔ-Ð-r%   c                  ó*   — t        j                   «       S )z$ Returns the platform name as a str )Úplatform© r%   r$   Úplatform_namer5   2   s   € ä×ÑÓÐr%   c                  ó¦   — t         j                  dk(  r%t        j                  «       d   dk\  rt        «       } nt        j                  «       } | €d} | S )NÚwin32r   é   zutf-8)Úsysr3   Úgetwindowsversionr   Úgetfilesystemencoding)Úencodings    r$   Úget_subprocess_encodingr=   7   sK   € Ü
‡|�|�wÒ¤3×#8Ñ#8Ó#:¸1Ñ#=ÀÒ#Bô %Ó&‰ä×,Ñ,Ó.ˆØÐØˆØ€Or%   c                 óB  ‡‡‡ — | dd  }| d d dk7  s|dd dk7  rt        d«      ‚dddd	œŠˆfd
„}g }|rA ||d d «      }|dd  }|d d }|dd  }|d | }||d  }|dd  }|j                  |||dœ«       |rŒA|d   d   } ||d d «      } ||dd «      }	d}
|D ]  }|d   dk(  sŒ|
|d   z  }
Œ |
st        d«      ‚t        t        j                  |
«      «      }|dz  Š g Šˆˆ fd„}t        |	«      D �])  }|d‰ z   z  }||   }g }‰j                  |«       t        ‰ «      D ]ø  }|d|z   |z      }|‰ z  |z   }d}d}|dkD  r ||dz
  «      }|dkD  r ||‰ z
  «      }|dk(  r	||z   dz  }n |dk(  r	||z   dz  }n’|dk(  r|||z   dz	  z   dz  }n~|dk(  ry|}|}d}|dkD  r|dkD  r ||‰ z
  dz
  «      }||z   |z
  }t        ||z
  «      }t        ||z
  «      }t        ||z
  «      }||k  r||k  r	||z   dz  }n||k  r	||z   dz  }n||z   dz  }|j                  |«       Œú �Œ, ||	‰fS )Né   s   ‰PNG

é   s   IHDRzNot a valid PNG file.z>Bz>Hz>I)r   r	   r@   c                 óN   •— t        j                  ‰t        | «         | «      d   S )Nr   )ÚstructÚunpackÚlen)ÚxÚint_maps    €r$   ú<lambda>zdecode_png.<locals>.<lambda>N   s   ø€ œvŸ}™}¨W´S¸³V©_¸aÓ@ÀÑC€ r%   )ÚtypeÚlengthÚdatar   rJ   r%   rH   s   IDATzUnable to read PNG data.é   c                 ó(   •— | ‰z  }| ‰z  }‰|   |   S ©Nr4   )ÚidxrE   ÚyÚpixelsÚstrides      €€r$   Ú
_get_pixelzdecode_png.<locals>._get_pixelw   s#   ø€ Ø�&‰LˆØ�6‰MˆØ�a‰y˜‰|Ðr%   r   r	   éÿ   )ÚOSErrorÚappendÚ	bytearrayÚzlibÚ
decompressÚrangeÚabs)!Úpng_dataÚheaderÚunpack_integerÚchunksrI   Ú
chunk_typeÚ
chunk_dataÚihdrÚwidthÚheightÚidatÚchunkÚdecompressed_datarR   rO   Úbase_posÚfilter_typeÚcurrent_rowrE   ÚcolorÚbasexÚleftÚupÚaÚbÚcÚpÚpaÚpbÚpcrF   rP   rQ   s!                                 @@@r$   Ú
decode_pngru   F   s  ú€ à�a�bˆ\€Fà��€|Ð1Ò1°V¸A¸a°[ÀGÒ5KÜÐ-Ó.Ð.à˜4 DÑ)€GÛC€Nà€Fá
Ù  r¨ 
Ó+ˆØ˜˜�ˆà˜B˜Q�Zˆ
Ø˜˜�ˆà˜G˜V�_ˆ
Ø˜˜�ˆà˜˜�ˆà�‰ØØØñ
ô 	ò ð$ �!‰9�VÑ€Dá˜4  ˜8Ó$€EÙ˜D  1˜IÓ&€Fà€Dàò "ˆØ�‰=˜GÓ#Ø�E˜&‘MÑ!‰Dð"ñ ÜÐ0Ó1Ð1ä!¤$§/¡/°$Ó"7Ó8Ðà�Q‰Y€FØ€Fõô
 �6‹]ó .&ˆØ˜˜F™
Ñ#ˆØ'¨Ñ1ˆàˆà�‰�kÔ"ä�v“ò &	&ˆAØ% a¨(¡l°QÑ&6Ñ7ˆEØ˜‘J ‘NˆEØˆDØˆBà�1ŠuÙ! %¨!¡)Ó,�Ø�1ŠuÙ ¨¡Ó/�à˜aÒØ ™¨Ñ-‘Ø Ò!Ø ™ tÑ+‘Ø Ò!Ø 4¨"¡9°Ñ"2Ñ3°tÑ;‘Ø Ò!Ø�Ø�Ø�à�q’5˜Q šUÙ" 5¨6¡>°AÑ#5Ó6�Aà˜‘E˜A‘I�ä˜˜Q™“Z�Ü˜˜Q™“Z�Ü˜˜Q™“Z�à˜’8  b¢Ø" Q™Y¨$Ñ.‘EØ˜2’XØ" Q™Y¨$Ñ.‘Eà" Q™Y¨$Ñ.�Eà×Ñ˜uÕ%òM&	&ð.&ð` �&˜&Ð Ð r%   c                  óž   — dD ]H  } | t         j                  j                  vsŒ t         j                  j                  j                  | «       ŒJ y )N)ÚsocksÚsocks4Úsocks4aÚsocks5)ÚurllibÚparseÚuses_netlocrU   )Úschemes    r$   Úregister_socks_protocolsr   ¯   s=   € ð ;ò 4ˆØœŸ™×1Ñ1Ò1Ü�L‰L×$Ñ$×+Ñ+¨FÕ3ñ4r%   c                 ó’   — | }d|v r:|j                  «       D ��ci c]  \  }}|j                  «       dk7  sŒ||“Œ }}}|d= |S c c}}w )NzYoutubedl-no-compressionzaccept-encoding)ÚitemsÚlower)ÚheadersÚfiltered_headersÚkÚvs       r$   Úhandle_youtubedl_headersr‡   ¸   sY   € ØÐà!Ð%5Ñ5Ø-=×-CÑ-CÓ-E×h¡T Q¨ÈÏÉËÐVgÓIg˜A˜q™DÐhÐÑhØÐ7Ð8àÐùó is
   šA¶Ac                 ón   — t        | t        j                  j                  «      r| j	                  «       S | S rM   )Ú
isinstancer{   ÚrequestÚRequestÚget_full_url)Úreqs    r$   Úrequest_to_urlrŽ   Â   s*   € Ü�#”v—~‘~×-Ñ-Ô.Ø×ÑÓ!Ð!àˆ
r%   c                 óä   — ddl m}m}  |t         || «      «      «      \  } }|�*t	        |«      dk\  r|d   n|j                  di «      }||d<   t        j                  j                  | g|¢­i |¤ŽS )Nr	   )Úextract_basic_authÚsanitize_urlr   rƒ   ÚAuthorization)	Úutilsr�   r‘   Ú
escape_urlrD   Ú
setdefaultr{   rŠ   r‹   )ÚurlÚargsÚkwargsr�   r‘   Úauth_headerrƒ   s          r$   Úsanitized_Requestrš   É   so   € ß8Ù)¬*±\À#Ó5FÓ*GÓHÑ€CˆØÐÜ  ›Y¨!š^�$�q’'°×1BÑ1BÀ9ÈbÓ1QˆØ#.ˆ�Ñ Ü�>‰>×!Ñ! #Ð7¨Ò7°Ñ7Ð7r%   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚYoutubeDLHandlerc                 ó2   •— || _         t        ‰| �  |i |¤Ž y rM   )Ú_paramsÚsuperÚ__init__)ÚselfÚparamsr—   r˜   Ú	__class__s       €r$   r    zYoutubeDLHandler.__init__Ó   s   ø€ ØˆŒÜ‰Ñ˜$Ð) &Ó)r%   )Ú__name__Ú
__module__Ú__qualname__r    Ú__classcell__)r£   s   @r$   rœ   rœ   Ò   s   ø„ ÷*ð *r%   rœ   c                   ó^   — e Zd Zdd„Zd„ Zej                  j                  j                  Z	eZ
y)ÚYoutubeDLCookieProcessorNc                 óX   — t         j                  j                  j                  | |«       y rM   )r{   rŠ   ÚHTTPCookieProcessorr    )r¡   Ú	cookiejars     r$   r    z!YoutubeDLCookieProcessor.__init__Ü   s   € Ü�‰×*Ñ*×3Ñ3°D¸)ÕDr%   c                 óX   — t         j                  j                  j                  | ||«      S rM   )r{   rŠ   r«   Úhttp_response)r¡   rŠ   Úresponses      r$   r®   z&YoutubeDLCookieProcessor.http_responseß   s!   € Ü�~‰~×1Ñ1×?Ñ?ÀÀgÈxÓXÐXr%   rM   )r¤   r¥   r¦   r    r®   r{   rŠ   r«   Úhttp_requestÚhttps_requestÚhttps_responser4   r%   r$   r©   r©   Û   s*   „ óEòYð —N‘N×6Ñ6×CÑC€MØ"�Nr%   r©   c                 óø   — t        | fdt        | j                  d«       | j                  d«      | j                  d«      | j                  d«      | j                  d«      d| j                  dg «      v¬	«      i|¤ŽS )
NÚcontextÚnocheckcertificateÚclient_certificateÚclient_certificate_keyÚclient_certificate_passwordÚlegacyserverconnectz
no-certifiÚcompat_opts)Úverifyr¶   r·   r¸   Úlegacy_supportÚuse_certifi)ÚYoutubeDLHTTPSHandlerr   Úget)r¢   r˜   s     r$   Úmake_HTTPS_handlerrÀ   æ   s   € Ü  ñ Ô1AØ—:‘:Ð2Ó3Ð3Ø!Ÿ:™:Ð&:Ó;Ø%Ÿz™zÐ*BÓCØ$*§J¡JÐ/LÓ$MØ—z‘zÐ"7Ó8Ø ¨¯
©
°=À"Ó(EÐEô2ð ð 
ñð r%   c                 ó4   — t        j                  | g|¢­i |¤ŽS rM   )r   Úcommunicate_or_kill)rq   r—   r˜   s      r$   Úprocess_communicate_or_killrÃ   ñ   s   € Ü×$Ñ$ QÐ8¨Ò8°Ñ8Ð8r%   c                 ó*   — t        | t        «      sJ ‚| S rM   )r‰   Ústr)ÚsÚfor_subprocesss     r$   ÚencodeFilenamerÈ   õ   s   € Ü�aœÔÐÐØ€Hr%   c                 ó   — | S rM   r4   )ro   rÇ   s     r$   ÚdecodeFilenamerÊ   ú   ó   € Ø€Hr%   c                 ó   — | S rM   r4   )ro   s    r$   ÚdecodeArgumentrÍ   þ   rË   r%   c                 ó„   — | €| S t        | t        «      r| j                  t        «       «      } t        | t        «      sJ ‚| S rM   )r‰   ÚbytesÚdecoder   rÅ   )Úoptvals    r$   ÚdecodeOptionrÒ     s=   € Ø€~ØˆÜ�&œ%Ô Ø—‘Ô0Ó2Ó3ˆä�fœcÔ"Ð"Ð"Ø€Mr%   c                 ó   — t        | «      S rM   )rÅ   )Úerrs    r$   Úerror_to_compat_strrÕ     s   € Üˆs‹8€Or%   )T)F)CÚ__doc__r3   rB   r9   Úurllib.errorr{   Úurllib.parseÚurllib.requestrW   Ú_utilsr   r   r   Ú	traversalr   Údependenciesr
   r   Únetworking._helperr   Únetworking._urllibr   Ú
networkingr   r   r”   r   r   Úcookiesr   r   r   r   r   ÚPerRequestProxyHandlerr   ÚYoutubeDLRedirectHandlerr   r   Únetworking.exceptionsr   r   ÚboolÚhas_certifiÚhas_websocketsr   r,   r1   r5   r=   ru   r   r‡   rŽ   rš   rœ   r¾   rŠ   r«   r©   rÀ   rÃ   rÈ   rÊ   rÍ   rÒ   rÕ   r4   r%   r$   ú<module>rç      sé   ðÙ MÛ Û Û 
Û Û Û Û ç ;Ñ ;Ý #ß .Ý 1Ý ,õ 'Ý 3ß 6Ý (Ý +ß AÝ GÝ L÷÷ Bá�7‹m€Ù�jÓ!€òódò.òò
	òf!òR4òòò8ô*�{ô *ð )Ð ô#˜vŸ~™~×AÑAô #òò9óó
òòór%   