
    $gY              
      r   d dl m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 d dlmZ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mZ d dlmZ d dlm Z  d dl!m"Z#m$Z$m%Z% d dl&m'Z'm(Z( ddl)m*Z* ddl+m,Z,  G d dee*                   Z- ej.        d          Z/dddddddddd	Z0dS )    )annotationsN)ForeStyle)FutureThreadPoolExecutorwait)sha1)ExtraScriptValue)MkDocsConfig)PluginError)
BasePluginevent_priority)FileFiles)is_error_template)Match)ParseResulturlparseunquote)Elementtostring   )PrivacyConfig)FragmentParserc                  @   e Zd Zd Z ed          d             Z ed          d             Z ed          d             Z ed          d             Z ed          d	             Z	d*dZ
d+d,dZd-dZd.dZd/dZd0dZd1d2d Zd3d"Zd4d#Zd*d$Zd5d&Zd6d)ZdS )7PrivacyPluginc                    t          |j        pd          | _        | j        j        sd S t          | j        j                  | _        g | _        t          g           | _
        ddd| j        j        | _        d S )N zurl\((\s*http?[^)]+)\)z*[\"'](http[^\"']+\.(?:css|js(?:on)?))[\"'].css.js)r   site_urlsiteconfigenabledr   concurrencypool	pool_jobsr   assetsassets_expr_map)selfr$   s     _/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/material/plugins/privacy/plugin.py	on_configzPrivacyPlugin.on_config7   s    V_233	{" 	F 't{'>??	') Bii-@ 
  
 k) 
    ic               p   | j         j        sd S | j         j        sd S |                                D ]}d }|                     |          D ]}|                     ||          sl|                     ||d          }d|j        v rK|j        sD|	                                }||j
        vr'|j
                            t          |                     |r/| j                            |           |                    |           |j        D ]>}t          |          }|                     |          s|                     ||d           ?|j
        D ]g}t!          |t"                    rt          |          }t          |j                  }|                     |          s|                     ||d           hd S )NT
concurrentzmermaid.min.js)r$   r%   r)   media_files_parse_media_is_excluded_queuepathr"   geturlextra_javascriptappendr
   remove	extra_cssr   
isinstancestr)r+   filesr$   	initiatorfileurlr6   scripts           r,   on_fileszPrivacyPlugin.on_filesJ   s   {" 	F {! 	F **,, 	( 	(ID ((33  ((i88 ;;sF;FFD (3833FO3"zz||v'>>>"3:: 0 6 6    (""9---Y''' $ 	< 	<D4..C$$S)) <Cd;;; - 	< 	<F&#&& 2)&11 6;''C$$S)) <Cd;;;	< 	<r.   c               t   | j         j        sd S | j         j        sd S t          j        d|t          j        t          j        z            D ]l}|                     |          }t          |	                    d                    }| 
                    ||j                  s|                     ||d           md S )Nz<img[^>]+src=['\"]?http[^>]+>flagssrcTr0   )r$   r%   r)   refindallIM_parse_fragmentr   getr4   r@   r5   )r+   htmlpager$   r>   matchelrA   s           r,   on_page_contentzPrivacyPlugin.on_page_content   s    {" 	F {! 	F Z,"$+
 
 
 		< 		<E %%e,,B 266%==))C$$S$)44 <Cd;;;		< 		<r.   ic                   | j         j        sd S |                    d          sd S t          ||j        |j        d          }|                     |||          S )Nz.htmlF)r$   r%   endswithr   docs_dirsite_dir_parse_html)r+   output_contenttemplate_namer$   r?   s        r,   on_post_templatezPrivacyPlugin.on_post_template   sb    {" 	F %%g.. 	F %PP		6BBBr.   c               V    | j         j        sd S |                     ||j        |          S N)r$   r%   rW   r@   )r+   outputrO   r$   s       r,   on_post_pagezPrivacyPlugin.on_post_page   s0    {" 	F 	6:::r.   2   c                  | j         j        sd S t          | j                   | j                                         | j        D ]o}t          j        |j                  \  }}|dv r9| j        	                    | j
                            | j        |                     [|                                 pt          | j                   | j
                                         d S )Nr   )r$   r%   r   r(   clearr)   	posixpathsplitextdest_urir9   r'   submit_patch	copy_fileshutdown)r+   r$   r@   _	extensions        r,   on_post_buildzPrivacyPlugin.on_post_build   s    {" 	F 	T^ K 		! 		!D$-dm<<LAyO++%%di&6&6K' '          	T^	r.   rA   URLc                H    |j         p| j        j         }|| j        j         k    S r\   )hostnamer#   )r+   rA   rn   s      r,   _is_externalzPrivacyPlugin._is_external   s#    <549#549---r.   Nr?   File | Nonec                X   |                      |          sdS | j        j        sdS d}|r@d                    t          j        t          j        d|j         dt          j	        g          }| j        j
        s4t                              d|                                 d|            dS dS )NTr   zin 'z' zExternal file:  F)ro   r$   r)   joinr   WHITEr   DIMsrc_uri	RESET_ALLassets_fetchlogwarningr7   )r+   rA   r?   vias       r,   r4   zPrivacyPlugin._is_excluded   s      %% 	4 {! 	4  	''
EI,y(,,,  C {' 	KK>#**,,>>>>???4 ur.   fragmentr=   c                    t                      }|                    |           |                                 t          |j        t
                    r|j        S t          d|z             )Nz8Could not parse due to possible syntax error in HTML: 

)r   feedcloser<   resultr   r   )r+   r|   parsers      r,   rL   zPrivacyPlugin._parse_fragment   si    !!H fmW-- 	!=  I
 
 	
r.   r   return	list[URL]c                   t          j        |j                  \  }}|| j        vrg S t	          j        | j        |         t          j        t          j        z            }t          |j	        d          5 }d t	          j
        ||                                          D             cd d d            S # 1 swxY w Y   d S )NrE   	utf-8-sigencodingc                ,    g | ]}t          |          S  )r   ).0rA   s     r,   
<listcomp>z.PrivacyPlugin._parse_media.<locals>.<listcomp>  s    HHHcHSMMHHHr.   )rb   rc   rd   r*   rH   compilerJ   rK   openabs_src_pathrI   read)r+   r?   ri   rj   exprfs         r,   r3   zPrivacyPlugin._parse_media  s    ))*<==9D000I z$.y924"$;OOO)([AAA 	IQHHRZaffhh-G-GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   61B44B8;B8r]   r$   r   c                     d	fdd
 fd}t          j        d||t           j        t           j        z            S )Nr@   r   c                    t          j                  r5t          j        pd          }t	          j        |j        | j                  S |                               S )N/)	r   rv   r   r"   rb   rs   r6   rA   url_relative_to)r@   baser$   r?   s     r,   resolvez*PrivacyPlugin._parse_html.<locals>.resolve  sT     !233 7 6377 ~di:::++I666r.   rP   r   c                                        |                                           }|j        dk    rt          |                    d                    }                    |          s_|                    dd          }|dk    rdS |dk    s|dk    r5                    |          }|                    d |                     |j        dk    s|j        d	k    rmt          |                    d
                    }                    |          s5                    |          }|                    d
 |                                         |          S )Nlinkhrefrelr   
preconnect
stylesheeticonrB   imgrG   )	rL   grouptagr   rM   r4   r5   set_print)	rP   rQ   rA   r   r@   r$   r?   r   r+   s	        r,   replacez*PrivacyPlugin._parse_html.<locals>.replace  sN   %%ekkmm44B vrvvf~~..((i88 
6&&++C l**!r l**cVmm#{{377vwwt}}555 v!!RVu__rvve}}--((i88 1;;sF33DFF5''$--000 ;;r??"r.   z@<(?:(?:a|link)[^>]+href|(?:script|img)[^>]+src)=['\"]?http[^>]+>rE   )r@   r   rP   r   )rH   subrJ   rK   )r+   r]   r?   r$   r   r   s   ` `` @r,   rW   zPrivacyPlugin._parse_html  s    	7 	7 	7 	7 	7 	7 	7	# 	# 	# 	# 	# 	# 	# 	# 	#: vOVRTBD[
 
 
 	
r.   rQ   r   c                    d}|j         D ],}t          |j         |         t                    s
||j         |<   -t          |d          }|                    dd                              d| dd          S )N__temp__unicoder   z />>"r   )attribr<   r=   r   r   )r+   rQ   tempnamedatas        r,   r   zPrivacyPlugin._printE  s|    I 	' 	'Dbios33 '"&	$ y111||E3''//TrBBBr.   Fc                   |                      |          }t          j        | j        j        |          }| j                            |          }|s|                     ||          }|                                |_	        t          j
        |j                  \  }}|r<|r:| j                            | j                            | j        ||                     n|                     ||           | j                            |j                  s| j                            |           |j        r|xj	        d|j         z  c_	        |S )N#)_path_from_urlrb   rs   r$   assets_fetch_dirr)   get_file_from_path_path_to_filer7   rA   rc   r6   r(   r9   r'   re   _fetchrv   r|   )	r+   rA   r$   r1   r6   fullr@   ri   rj   s	            r,   r5   zPrivacyPlugin._queueP  sI   ""3''~dk:DAA {--d33 	) %%dF33Dzz||DH %-ch77LAy *Z *%%di&6&6Kv' '     D&))) ;11$,?? )""4((( < 	+HH*CL***HH r.   r@   c                   t           j                            |j                  r| j        j        sk|j        }t                              d|j                    t          j
        |j        dd                    g d          i          }|j        d                             d          d         }t          
                    |          }|r|                    |          s||z  }|                     ||j                   ||j        k    r	 t          j        t           j                            |          |j                   nU# t(          $ rH}|j        t*          j        k    r"t                              d	|j                    ||_        Y d }~nd }~ww xY wt           j                            |j                  \  }}t           j                            |j                  rt           j                            |j                  |_        t           j                            |j                  \  }}|j                            |          s0|xj        |z  c_        |xj        |z  c_        |xj        |z  c_        |j        |_        |                     |          D ]0}	|                     |	|          s|                     |	|d
           1d S )NzDownloading external file: z
User-Agentrr   )z)Mozilla/5.0 (Windows NT 10.0; Win64; x64)z&AppleWebKit/537.36 (KHTML, like Gecko)z"Chrome/98.0.4758.102 Safari/537.36)headerszcontent-type;r   zCouldn't create symbolic link: Tr0   ) osr6   isfiler   r$   cachery   inforA   requestsrM   rs   r   split
extensionsrT   _save_to_filecontentsymlinkbasenameOSErrorerrnoEEXISTrz   rv   rc   realpathabs_dest_pathrd   r3   r4   r5   )
r+   r@   r$   r6   resmimerj   eri   rA   s
             r,   r   zPrivacyPlugin._fetch|  s    w~~d/00 *	-8I *	-$D HH=48==>>>,tx chh ( ( (  4   C ;~.44S99!<D"t,,I "y!9!9 "	! tS[111t(((-Jrw//55t7HIIII 
- 
- 
-w%,..LdlLL   )-D%%%%%%
- w''(9::97>>$+,, 	0 " 0 01B C CD7++D,=>>LAy %..y99 0	) *""i/"" = $$T** 	< 	<C$$S$// <Cd;;;	< 	<s   7E 
F>FFc           	         t          j        d          5 }d fd}t          j        j                  \  }}t          j         j        |         t
          j        t
          j	        z            } 
                    j        |                    ||                                                     d d d            d S # 1 swxY w Y   d S )Nr   r   rP   r   c                T   |                      d          }                    t          |                    }t          j        j        j        |          }j                            |          }|s}t          j
        t          j                            j        j        |                    }t          j        t          j        |          |          }j                            |          }|s.t                              d           t!          j        d           |j                            d          r2t          j        j                                        |j                  }n|                              }|                                                      ||          S )Nr   zxFile not found. This is likely a bug in the built-in privacy plugin. Please create an issue with a minimal reproduction.r!   )r   r   r   rb   rs   r$   r   r)   r   r   readlinkr6   	cache_dirdirnamery   errorsysexitrA   rT   r#   r7   r   r   )	rP   valuer6   r   r@   r   rA   r?   r+   s	          r,   r   z%PrivacyPlugin._patch.<locals>.replace  s`   A **8E??;; ~dk&BDII {55d;; @;rw||DK4I4'P'PQQD$>)*;D*A*A4HHD  ;99$??D   II(  
 HQKKK 8$$U++ :#.)9)9););TXFFCC ..y99C {{}},,UC888r.   r   )r   r   rb   rc   rd   rH   r   r*   rJ   rK   r   r   r   r   )r+   r?   r   r   ri   rj   r   s   ``     r,   rf   zPrivacyPlugin._patch  s   )([AAA 2	Q%9 %9 %9 %9 %9 %9 %9P %-i.@AALAy:d29=rtbd{KKD '!&&((++  _2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	 2	s   BCC	Cc                   t          j        |j                  }t          j        dd|          }|j        rat          j        |          \  }}t          |j                            d                    	                                d d         }| d| | }|
                    ddd|          }|                                dd          S )	Nz/\.z/_utf-8   .r   )schemequeryr|   r6      )rb   normpathr6   rH   r   r   rc   r	   encode	hexdigest_replacer7   )r+   rA   r6   r   rj   digests         r,   r   zPrivacyPlugin._path_from_url  s    !#(++vfdD)) 9 	1'066OD) #)**73344>>@@!DF00V0Y00D llBr$lOOzz||ABBr.   r6   c                    t          t          j        | j        j        t          |                    t          j                            | j        j	                  |j
        d          S )NF)r   rb   rs   r$   r   r   r   r6   abspathr   rV   )r+   r6   r$   s      r,   r   zPrivacyPlugin._path_to_file  sL    N4;7GGGOODK122O	
 
 	
r.   r   str | bytesc                2   t          j        t           j                            |          d           t	          |t
                    rt          |d          }t          |d          5 }|                    |           d d d            d S # 1 swxY w Y   d S )NT)exist_okr   wb)	r   makedirsr6   r   r<   r=   bytesr   write)r+   r6   r   r   s       r,   r   zPrivacyPlugin._save_to_file  s    
BGOOD))d;;;;gs## 	.GW--G$ 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   )BBB)rA   rl   r\   )rA   rl   r?   rp   )r|   r=   )r?   r   r   r   )r]   r=   r?   r   r$   r   )rQ   r   )F)rA   rl   r$   r   )r@   r   r$   r   )r?   r   )r6   r=   r$   r   )r6   r=   r   r   )__name__
__module____qualname__r-   r   rC   rR   rZ   r^   rk   ro   r4   rL   r3   rW   r   r5   r   rf   r   r   r   r   r.   r,   r   r   4   s       
 
 
& ^D2< 2< 2<p ^D< < <* ^C
C 
C 
C ^C; ; ; ^B  <. . . .
    8
 
 
 
(I I I I+
 +
 +
 +
fC C C C) ) ) ) )XD< D< D< D<N3 3 3 3t       &
 
 
 
     r.   r   zmkdocs.material.privacyr!   z.avifz.gifz.jpgz.pngz.svgz.webpr    )	zapplication/javascriptz
image/avifz	image/gifz
image/jpegz	image/pngzimage/svg+xmlz
image/webpztext/javascriptztext/css)1
__future__r   r   loggingr   rb   rH   r   r   coloramar   r   concurrent.futuresr   r   r   hashlibr	   mkdocs.config.config_optionsr
   mkdocs.config.defaultsr   mkdocs.exceptionsr   mkdocs.pluginsr   r   mkdocs.structure.filesr   r   mkdocs.utilsr   r   urllib.parser   rl   r   r   xml.etree.ElementTreer   r   r$   r   r   r   r   	getLoggerry   r   r   r.   r,   <module>r      s  * # " " " " "   				     				  



                 ? ? ? ? ? ? ? ? ? ?       9 9 9 9 9 9 / / / / / / ) ) ) ) ) ) 5 5 5 5 5 5 5 5 . . . . . . . . * * * * * *       > > > > > > > > > > 3 3 3 3 3 3 3 3 ! ! ! ! ! ! " " " " " "j j j j jJ}- j j jb g122 $
 



r.   