
    wdf8                        d Z ddl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 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 ddlmZ da e
            Z eddd                                          Zej        ej        z   dz                       d          ZdddddZ e ed           edd                    D ]&Zdez                      d          e ee          <   ' ej        d          Z ej        d          ZdZ ej        dej                  Z  G d d e!          Z" e"            Z#d! Z$d" Z%d# Z&d$ Z'd% Z( G d& d'e!          Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d/d.Z0dS )0z
    werkzeug._internal
    ~~~~~~~~~~~~~~~~~~

    This module provides internally used helpers and constants.

    :copyright: 2007 Pallets
    :license: BSD-3-Clause
    N)date)datetime)chain)WeakKeyDictionary   )int_to_byte)integer_types)
iter_bytes)
range_type)	text_typei  z/=!#$%&'*+-.^_`|~:asciis   \054s   \073s   \"s   \\)   ,   ;   "   \          z\%03olatin1s   \\[0-3][0-7][0-7]s   [\\].s/   [\w\d!#%&\'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=]s   
    (?P<key>[^=;]+)
    (?:\s*=\s*
        (?P<val>
            "(?:[^\\"]|\\.)*" |
             (?:.*?)
        )
    )?
    \s*;
)flagsc                       e Zd Zd Zd ZdS )_Missingc                     dS )Nzno value selfs    W/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/werkzeug/_internal.py__repr__z_Missing.__repr__9       z    c                     dS )N_missingr   r   s    r   
__reduce__z_Missing.__reduce__<   r   r    N)__name__
__module____qualname__r   r#   r   r    r   r   r   8   s2              r    r   c                     t          | d|           }t          |t                    sJ dt          |           j        z              |S )Nenvironz/%r is not a WSGI environment (has to be a dict))getattr
isinstancedicttyper$   )objenvs     r   _get_environr/   C   sQ    
#y#
&
&Cc4    9DII<NN   Jr    c                     |                                  | }|r3t          fd|j        D                       rdS |j        sn	|j        }|3dS )znCheck if there is a handler in the logging chain that will handle
    the given logger's effective level.
    c              3   .   K   | ]}|j         k    V  d S N)level).0handlerr3   s     r   	<genexpr>z%_has_level_handler.<locals>.<genexpr>S   s*      FF'w}%FFFFFFr    TF)getEffectiveLevelanyhandlers	propagateparent)loggercurrentr3   s     @r   _has_level_handlerr>   K   sv     $$&&EG
 !FFFFW5EFFFFF 	4  	.  ! 5r    c                    t           t          j        d          a t           j        t          j        k    r$t                               t          j                   t          t                     s+t                               t          j	                                t          t           |           |                                g|R i | dS )a  Log a message to the 'werkzeug' logger.

    The logger is created the first time it is needed. If there is no
    level set, it is set to :data:`logging.INFO`. If there is no handler
    for the logger's effective level, a :class:`logging.StreamHandler`
    is added.
    Nwerkzeug)_loggerlogging	getLoggerr3   NOTSETsetLevelINFOr>   
addHandlerStreamHandlerr)   rstrip)r,   messageargskwargss       r   _logrM   ^   s     #J//=GN**W\***!'** 	8w466777GGT7>>++=d===f=====r    c                 h  	
 t          | d          r| j        } t                              |           }||S t          t          d          rt	          j        |           }nt	          j        |           }|dd         \  }}|pd}t          |          	g 
t          |          D ]e\  }}t          |t                    rt          d          	 ||	z
           }|d|f}n# t          $ r |ddf}Y nw xY w
                    |           ft          
          
	
fd	}|t          | <   |S )
z+Return a signature object for the function.im_funcNgetfullargspec   r   zCcannot parse functions that unpack tuples in the function signatureTFc                 0   g }g }i }t                    D ]\  }\  }}}	 |                    | |                    ||v r|                    |          ||<   B# t          $ rj 	 |                    |                    |                     n=# t          $ r0 |r|                    |           n|                    |           Y nw xY wY w xY w| 
d          }	|                    |	           d}	|r|                    |           i }|||||	fS )Nr   )	enumerateappendpop
IndexErrorKeyErrorextendupdate)rK   rL   new_argsmissingextraidxnamehas_defaultdefaultextra_positional	arg_count	arguments	kwarg_var
vararg_vars             r   parsez_parse_signature.<locals>.parse   s|    2;91E1E 	3 	3-C-$W3S	*** 6>>"(**T"2"2E$K  - - --OOFJJt$4$45555 - - -" - 0000t,,,	--  	

+!OO,---! 	i'LL   F 	
 		
s5   A
C$(BC7CCCCC)hasattrrO   _signature_cachegetinspectrP   
getargspeclenrS   r*   list	TypeErrorrV   rT   tuple)funcrf   tup
positionaldefaultsr]   r^   r`   paramrb   rc   rd   re   s            @@@@r   _parse_signatureru   t   s   tY |   &&E w()) '$T** &&25bqb'/J
Ix~2HJIIz**    	TdD!! 	U  	*sY/G 4)EE  	( 	( 	(5$'EEE	( 	i  I'
 '
 '
 '
 '
 '
 '
 '
R #TLs   C&&C87C8c                 h   t          | t                    r|                                 } n-t          | t          t          fz             rt          |           S | dd         \  }}}}}}t          ||d                                          t          z
  |z   dz
  }|dz  |z   }|dz  |z   }	|	dz  |z   }
|
S )z]Converts a timetuple, integer or datetime object into the seconds from
    epoch in utc.
    N   r      <   )	r*   r   utctimetupler	   floatintr   	toordinal
_epoch_ord)argyearmonthdayhourminuteseconddayshoursminutessecondss              r   _date_to_unixr      s     #x     	C%1	2	2 3xx-0!W*D%dFFeQ))++j83>BD2IEbj6!GlV#GNr    c                   B    e Zd ZdZdZ	 	 	 	 	 d	dZd
dZd Zd Zd Z	dS )_DictAccessorPropertyz7Baseclass for `environ_property` and `header_property`.FNc                 ^    || _         || _        || _        || _        ||| _        || _        d S r2   )r^   r`   	load_func	dump_func	read_only__doc__)r   r^   r`   r   r   r   docs          r   __init__z_DictAccessorProperty.__init__   s8     	"" &DNr    c                     || S |                      |          }| j        |vr| j        S || j                 }| j        5	 |                     |          }n# t          t
          f$ r
 | j        }Y nw xY w|S r2   )lookupr^   r`   r   
ValueErrorrn   )r   r-   r,   storagervs        r   __get__z_DictAccessorProperty.__get__   s    ;K++c""9G##<TY>%"^^B''	* " " "\"	s   A A0/A0c                     | j         rt          d          | j        |                     |          }||                     |          | j        <   d S Nzread only property)r   AttributeErrorr   r   r^   )r   r-   values      r   __set__z_DictAccessorProperty.__set__   sR    > 	7 !5666>%NN5))E&+C###r    c                     | j         rt          d          |                     |                              | j        d            d S r   )r   r   r   rU   r^   )r   r-   s     r   
__delete__z _DictAccessorProperty.__delete__   sE    > 	7 !5666CTY-----r    c                 2    d| j         j        d| j        dS )N< >)	__class__r$   r^   r   s    r   r   z_DictAccessorProperty.__repr__  s       N333TYYY??r    )NNNNNr2   )
r$   r%   r&   r   r   r   r   r   r   r   r   r    r   r   r      s        AAI
    "   , , ,. . .
@ @ @ @ @r    r   c                     t                      }d}t          j        }|j        }t	          |           D ]$}|t
          vrd} |||          } ||           %|rt          |          S t          d|z   dz             S )NTFr   )	bytearray_cookie_quoting_mapri   rX   r
   _legal_cookie_charsbytes)bbuf	all_legal_lookup_pushchars         r   _cookie_quoter     s    
++CI!%GJE1  ***I74&&Dd Szzd"###r    c                 H   t          |           dk     r| S | d d         dk    s| dd          dk    r| S | dd         } d}t          |           }t                      }|j        }d|cxk    r|k     r#n nt                              | |          }t
                              | |          }|s |s|                    | |d                     ndx}}|r|                    d          }|r|                    d          }|r:|r||k     r2 || ||                     || |dz   |dz                       |dz   }nI || ||                    |                    t          | |dz   |dz            d                     |dz   }d|cxk    r|k     n t          |          S )N   r   r   r   rQ      )
rl   r   rX   	_octal_research	_quote_restartrT   r|   r   )	r   inr   r   o_matchq_matchjks	            r   _cookie_unquoter     s   
1vvzz!u}}"##$	!B$A	AAA	BIE
q****1*****""1a((""1a(( 	w 	IIae
A 	!a  A 	!a  A 	G 	q1uuE!AaC&MMME!AEAEM"###AAAE!AaC&MMMIIc!AEAEM*A..///AA% q****1****( 99r    c              #   r  K   d}t          |           }||k     rt                              | dz   |          }|sdS |                    d                                          }|                    d          pd}|                    d          }t          |          t          |          fV  ||k     dS dS )z8Lowlevel cookie parsing facility that operates on bytes.r   r   keyvalr    N)rl   
_cookie_rer   groupstripendr   )r   r   r   matchr   r   s         r   _cookie_parse_implr   ;  s      	AAA
a%%!!!d(A.. 	Ekk%  &&((E"")cIIaLLc""OE$:$::::: a%%%%%%r    c                 T   t          | t                    s|                     d           | S 	 |                     d          S # t          $ r Y nw xY w|                     d          }t          |          D ]\  }}|                    d          ||<   d                    |          S )Nr   .idna   .)r*   r   decodeencodeUnicodeErrorsplitrS   joindomainpartsr]   parts       r   _encode_idnar   L  s    fi(( g}}W%%%    LLEu%% ) )	T[[((c

99Us   A 
AAc                    t          | t                    r)	 |                     d          } n# t          $ r | cY S w xY w|                     d          }t          |          D ]G\  }}	 |                    d          ||<   # t          $ r |                    dd          ||<   Y Dw xY wd                    |          S )Nr   r   r   ignorer   )r*   r   r   r   r   rS   r   r   r   s       r   _decode_idnar   _  s     &)$$ 	]]7++FF 	 	 	MMM	 LLEu%% 8 8	T	8V,,E#JJ 	8 	8 	8Wh77E#JJJ	8 88E??s   - <<)B#B('B(c                     | d S t          |           } d| v r|                     dd          d         } d| v r| S t          d          )N   :r   r   r   a'  Setting 'domain' for a cookie on a server running locally (ex: localhost) is not supported by complying browsers. You should have something like: '127.0.0.1 localhost dev.localhost' on your hosts file and then point your server to run on 'dev.localhost' and also set 'domain' for 'dev.localhost')r   r   r   )r   s    r   _make_cookie_domainr   v  s`    ~t&!!Fv~~dA&&q)v~~
	D  r    c                      d }d                     d  |d                                          D                        fd}|S )z0Like the name says.  But who knows how it works?c                     dd l }dd l}|                    |                    |                                         d          S )Nr   r   )base64zlib
decompress	b64decoder   )gyverr   r   s      r   bzzzzzzzz_easteregg.<locals>.bzzzzzzz  sB    v//6677>>wGGGr    
c                 >    g | ]}|d t          |          z
  dz  z   S )M   r   )rl   )r4   xs     r   
<listcomp>z_easteregg.<locals>.<listcomp>  s<     $	
 $	
 $	
 c!ff$$$	
 $	
 $	
r    s#	  
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
7f2zLkGNv8b191cD/3vs9Q833z8tc                     dfd	}%|                      d          dk    r | |          S  |ddg           dz                      d          gS )	Nc                 H    |                     d            | ||          S )N)zX-Powered-ByWerkzeug)rT   )statusheadersexc_infostart_responses      r   injecting_start_responsezA_easteregg.<locals>.easteregged.<locals>.injecting_start_response  s*    NN7888!>&'8<<<r    QUERY_STRINGmacgybarchakkuz200 OK)zContent-Typez	text/htmla  
<!DOCTYPE html>
<html>
<head>
<title>About Werkzeug</title>
<style type="text/css">
  body { font: 15px Georgia, serif; text-align: center; }
  a { color: #333; text-decoration: none; }
  h1 { font-size: 30px; margin: 20px 0 10px 0; }
  p { margin: 0 0 30px 0; }
  pre { font: 11px 'Consolas', 'Monaco', monospace; line-height: 0.95; }
</style>
</head>
<body>
<h1><a href="http://werkzeug.pocoo.org/">Werkzeug</a></h1>
<p>the Swiss Army knife of Python web development.</p>
<pre>%s


</pre>
</body>
</html>r   r2   )ri   r   )r(   r   r   appr   s    ` r   eastereggedz_easteregg.<locals>.easteregged  s    	= 	= 	= 	= 	= 	= ?w{{>::>NNN3w 8999  ,I+JKKK& '( fX-
 	
r    )r   
splitlines)r   r   r   r   s   `  @r   
_eastereggr     s    H H H JJ$	
 $	
X ! !B jllG$	
 $	
 $	
& &EP
 
 
 
 
 
B r    r2   )1r   rj   rB   restringr   r   	itertoolsr   weakrefr   _compatr   r	   r
   r   r   rA   rh   r}   r~   ascii_lettersdigitsr   r   r   _icompiler   r   _legal_cookie_chars_reVERBOSEr   objectr   r"   r/   r>   rM   ru   r   r   r   r   r   r   r   r   r   r   r    r   <module>r     s!      				                    % % % % % %             " " " " " "                   $$&& T$1''))

6=(+@@&//  &XVGTT 
%

2

3 4 4
5
5 L LB,4rM+A+A(+K+KB((BJ,--	BJy!!	L RZ	 *  
    v    8::    &> > >,K K K\   1@ 1@ 1@ 1@ 1@F 1@ 1@ 1@h$ $ $"! ! !H; ; ;"  &  .  "R R R R R Rr    