
    b(                        S SK r S SKrS SKrS SKrS SKr\R                  (       a+  S SKr " S S\R                  5      r
\R                  " S5      rSr\R                  " S\R                  5      r\R                  " S\R                  5      rSS	 jr " S
 S\5      r " S S\R*                  5      r\R.                  " S\\5      rS\S\R6                  \R8                     S\R:                  \R8                  /\4   S\4S jr " S S5      r SSK J!r!  SSK J"r"  SSK J#r#  g! \$ a    SSK%J!r!  SSK%J"r"  SSK%J#r#   gf = f)    Nc                   "    \ rS rSrS\4S jrSrg)HasHTML
   returnc                     g N selfs    &lib/third_party/markupsafe/__init__.py__html__HasHTML.__html__   s        r	   N)__name__
__module____qualname____firstlineno__strr   __static_attributes__r	   r   r   r   r   
   s    	c 	r   r   _Pz2.1.3z
<!--.*?-->z<.*?>r   c                 J   ^  [         R                  " T 5      SU 4S jj5       nU$ )Nc                    > [        [        U5      [        U5      U R                  5      n[        X"R	                  5       U R                  5        U R                  T" U /UQ70 UD65      $ r   )_escape_argspeclist	enumerateescapeitems	__class__)r   argskwargsarg_listfuncs       r   wrapped)_simple_escaping_wrapper.<locals>.wrapped   sO    "4:yL<~~d4=(=f=>>r   )r   Markupr   z_P.argsr    z	_P.kwargsr   r%   )	functoolswraps)r"   r#   s   ` r   _simple_escaping_wrapperr(      s%    __T? ?
 Nr   c            	       X  ^  \ rS rSrSrSr S*S\R                  S\R                  \	   S\	SS4U 4S	 jjjr
S+S
 jrS\R                  \	S4   SS4U 4S jjrS\R                  \	S4   SS4S jrS,U 4S jjr\rS\R                  SS4U 4S jjrS\	4U 4S jjrS\R&                  \R                  \	S4      SS4U 4S jjr\	R(                  R                  \l         S-S\R                  \	   S\S\R,                  S   4U 4S jjjr\	R.                  R                  \l         S-S\R                  \	   S\S\R,                  S   4U 4S jjjr\	R0                  R                  \l         S.S\S\R,                  S   4U 4S jjjr\	R4                  R                  \l        S\	4S jrS\	4S jr\S\R                  SS4S j5       r\" \	R@                  5      r \" \	RB                  5      r!\" \	RD                  5      r"\" \	RF                  5      r#\" \	RH                  5      r$\" \	RJ                  5      r%\" \	RL                  5      r&\" \	RN                  5      r'\" \	RP                  5      r(\" \	RR                  5      r)\" \	RT                  5      r*\" \	RV                  5      r+\" \	RX                  5      r,\" \	RZ                  5      r-\" \	R\                  5      r.\" \	R^                  5      r/\" \	R`                  5      r0\1Rd                  S:  a$  \" \	Rf                  5      r3\" \	Rh                  5      r4S\	S\Rj                  S    4U 4S! jjr6S\	S\Rj                  S    4U 4S" jjr7S#\R                  S$\R                  SS4S% jr8S&\Rr                  \	\R                  4   SS4S' jr:S(\	SS4S) jr;Sr<U =r=$ )/r%   !   aB  A string that is ready to be safely inserted into an HTML or XML
document, either because it was escaped or because it was marked
safe.

Passing an object to the constructor converts it to text and wraps
it to mark it safe without escaping. To escape the text, use the
:meth:`escape` class method instead.

>>> Markup("Hello, <em>World</em>!")
Markup('Hello, <em>World</em>!')
>>> Markup(42)
Markup('42')
>>> Markup.escape("Hello, <em>World</em>!")
Markup('Hello &lt;em&gt;World&lt;/em&gt;!')

This implements the ``__html__()`` interface that some frameworks
use. Passing an object that implements ``__html__()`` will wrap the
output of that method, marking it safe.

>>> class Foo:
...     def __html__(self):
...         return '<a href="/foo">foo</a>'
...
>>> Markup(Foo())
Markup('<a href="/foo">foo</a>')

This is a subclass of :class:`str`. It has the same methods, but
escapes their arguments and returns a ``Markup`` instance.

>>> Markup("<em>%s</em>") % ("foo & bar",)
Markup('<em>foo &amp; bar</em>')
>>> Markup("<em>Hello</em> ") + "<foo>"
Markup('<em>Hello</em> &lt;foo&gt;')
r	   baseencodingerrorsr   te.Selfc                    > [        US5      (       a  UR                  5       nUc  [        TU ]  X5      $ [        TU ]  XX#5      $ Nr   )hasattrr   super__new__)clsr+   r,   r-   r   s       r   r3   Markup.__new__G   sC     4$$==?D7?3--ws(;;r   c                     U $ r   r	   r
   s    r   r   Markup.__html__R   s    r   otherr   c                    > [        U[        5      (       d  [        US5      (       a-  U R                  [        TU ]  U R                  U5      5      5      $ [        $ r0   )
isinstancer   r1   r   r2   __add__r   NotImplemented)r   r8   r   s     r   r;   Markup.__add__U   sC    eS!!WUJ%?%?>>%'/$++e2D"EFFr   c                     [        U[        5      (       d  [        US5      (       a   U R                  U5      R	                  U 5      $ [
        $ r0   )r:   r   r1   r   r;   r<   )r   r8   s     r   __radd__Markup.__radd__[   s;    eS!!WUJ%?%?;;u%--d33r   c                 v   > [        U[        5      (       a  U R                  [        TU ]  U5      5      $ [
        $ r   )r:   intr   r2   __mul__r<   )r   numr   s     r   rC   Markup.__mul__a   s.    c3>>%'/#"677r   argc                 R  >^  [        U[        5      (       a  [        U 4S jU 5       5      nO][        [        U5      S5      (       a,  [        U[        5      (       d  [        UT R                  5      nO[        UT R                  5      4nT R                  [        TT ]%  U5      5      $ )Nc              3   P   >#    U  H  n[        UTR                  5      v   M     g 7fr   )_MarkupEscapeHelperr   ).0xr   s     r   	<genexpr>!Markup.__mod__.<locals>.<genexpr>l   s      IS+At{{;;Ss   #&__getitem__)
r:   tupler1   typer   rI   r   r   r2   __mod__)r   rF   r   s   ` r   rQ   Markup.__mod__i   sz    c5!!ISIICT#Y..z#s7K7K%c4;;7C 'sDKK8:C~~egoc233r   c                 T   > U R                   R                   S[        TU ]  5        S3$ )N())r   r   r2   __repr__)r   r   s    r   rV   Markup.__repr__v   s*    ..))*!EG,<,>+?qAAr   seqc                 h   > U R                  [        TU ]	  [        U R                  U5      5      5      $ r   )r   r2   joinmapr   )r   rX   r   s     r   rZ   Markup.joiny   s&    ~~egl3t{{C+@ABBr   sepmaxsplitc                 j   > [         TU ]  X5       Vs/ s H  o0R                  U5      PM     sn$ s  snf r   )r2   splitr   r   r]   r^   vr   s       r   r`   Markup.split~   s/     ,17=+GH+Gaq!+GHHH   0c                 j   > [         TU ]  X5       Vs/ s H  o0R                  U5      PM     sn$ s  snf r   )r2   rsplitr   ra   s       r   rf   Markup.rsplit   s/     ,17>#+HI+Haq!+HIIIrd   keependsc                 j   > [         TU ]  U5       Vs/ s H  o R                  U5      PM     sn$ s  snf r   )r2   
splitlinesr   )r   rh   rb   r   s      r   rj   Markup.splitlines   s0     ,17+=h+GH+Gaq!+GHHHrd   c                 0    SSK Jn  U" [        U 5      5      $ )u   Convert escaped markup back into a text string. This replaces
HTML entities with the characters they represent.

>>> Markup("Main &raquo; <em>About</em>").unescape()
'Main » <em>About</em>'
r   )unescape)htmlrm   r   )r   rm   s     r   rm   Markup.unescape   s     	"D	""r   c                     [         R                  SU 5      n[        R                  SU5      nSR                  UR	                  5       5      nU R                  U5      R                  5       $ )u   :meth:`unescape` the markup, remove tags, and normalize
whitespace to single spaces.

>>> Markup("Main &raquo;        <em>About</em>").striptags()
'Main » About'
  )_strip_comments_resub_strip_tags_rerZ   r`   r   rm   )r   values     r   	striptagsMarkup.striptags   sT     #&&r40""2u-'~~e$--//r   sc                 J    [        U5      nUR                  U La  U " U5      $ U$ )zdEscape a string. Calls :func:`escape` and ensures that for
subclasses the correct type is returned.
)r   r   )r4   ry   rvs      r   r   Markup.escape   s'    
 AY<<s"r7N	r   )   	   )r.   r.   r.   c                    > [         TU ]  U R                  U5      5      u  p#nU R                  nU" U5      U" U5      U" U5      4$ r   )r2   	partitionr   r   r   r]   lry   rr4   r   s         r   r   Markup.partition   sA    '#DKK$45ann1vs1vs1v%%r   c                    > [         TU ]  U R                  U5      5      u  p#nU R                  nU" U5      U" U5      U" U5      4$ r   )r2   
rpartitionr   r   r   s         r   r   Markup.rpartition   sA    '$T[[%56ann1vs1vs1v%%r   r   r    c                 n    [        U R                  5      nU R                  UR                  XU5      5      $ r   EscapeFormatterr   r   vformat)r   r   r    	formatters       r   formatMarkup.format   s,    #DKK0	~~i//FCDDr   r[   c                 p    [        U R                  5      nU R                  UR                  U SU5      5      $ )Nr	   r   )r   r[   r   s      r   
format_mapMarkup.format_map   s0     $DKK0	~~i//b#>??r   format_specc                 *    U(       a  [        S5      eU $ )Nz,Unsupported format specification for Markup.)
ValueError)r   r   s     r   __html_format__Markup.__html_format__   s    KLLr   )rq   Nstrict)r   r.   )rD   zte.SupportsIndexr   r.   )N)F)>r   r   r   r   __doc__	__slots__tAnyOptionalr   r3   r   Unionr;   r?   rC   __rmul__rQ   rV   IterablerZ   rB   Listr`   rf   boolrj   rm   rw   classmethodr   r(   rN   
capitalizetitlelowerupperreplaceljustrjustlstriprstripcenterstrip	translate
expandtabsswapcasezfillcasefoldsysversion_inforemoveprefixremovesuffixTupler   r   r   Mappingr   r   r   __classcell__r   s   @r   r%   r%   !   s   !F I PX	<55	<)*C	<IL	<		< 	<QWWS)^4  aggc9n5 )  H4155 4Y 4B# BC

1773	>#:; C	 C 88##DL <>I::c?I58I	
		I I
 II%%EM <>J::c?J58J	
		J J
 ZZ''FN  %II	
		I I
 //J	## 	#03 0 	quu 	 	 	 +3??;K)#..9J$SYY/E$SYY/E$SYY/E&s{{3G$SYY/E$SYY/E%cjj1F%cjj1F%cjj1F$SYY/E(7I)#..9J'5H$SYY/E'5H
6!/0@0@A/0@0@A&S &QWW-L%M &
&c &agg.M&N &
EAEE EQUU Ey E@99S!%%Z(@	@3 9  r   r%   c                      ^  \ rS rSrSrS\R                  \R                  /\4   SS4U 4S jjr	S\R                  S\
S\
4S	 jrSrU =r$ )
r      r   r   r   Nc                 .   > Xl         [        TU ]	  5         g r   )r   r2   __init__)r   r   r   s     r   r   EscapeFormatter.__init__   s    r   rv   r   c                 V   [        US5      (       a  UR                  U5      nOm[        US5      (       a3  U(       a  [        SU S[        U5       S35      eUR	                  5       nO)[
        R                  R                  X[        U5      5      n[        U R                  U5      5      $ )Nr   r   zFormat specifier z given, but z{ does not define __html_format__. A class that defines __html__ must define __html_format__ to work with format specifiers.)
r1   r   r   rP   r   string	Formatterformat_fieldr   r   )r   rv   r   r{   s       r   r   EscapeFormatter.format_field   s    5+,,&&{3BUJ'' '}Le NG G 
 !B !!..tC<LMB4;;r?##r   )r   r   r   r   r   r   Callabler   r%   r   r   r   r   r   r   s   @r   r   r      sQ    Iqzz155'6/: t $!%% $c $c $ $r   r   _ListOrDictobjiterabler   c                     U H7  u  p4[        U[        5      (       d  [        US5      (       d  M-  U" U5      X'   M9     U $ )z,Helper for various string-wrapped functions.r   )r:   r   r1   )r   r   r   keyrv   s        r   r   r     s;     
eS!!WUJ%?%?e}CH  Jr   c                       \ rS rSrSrSrS\R                  S\R                  \R                  /\	4   SS4S jr
S	\R                  SS
4S jrS\4S jrS\4S jrS\4S jrS\4S jrSrg)rI   i  z"Helper for :meth:`Markup.__mod__`.r   r   r   r   r   Nc                     Xl         X l        g r   r   )r   r   r   s      r   r   _MarkupEscapeHelper.__init__  s    r   itemr.   c                 T    U R                  U R                  U   U R                  5      $ r   )r   r   r   )r   r   s     r   rN   _MarkupEscapeHelper.__getitem__  s    ~~dhhtndkk::r   c                 J    [        U R                  U R                  5      5      $ r   )r   r   r   r
   s    r   __str___MarkupEscapeHelper.__str__  s    4;;txx())r   c                 \    [        U R                  [        U R                  5      5      5      $ r   )r   r   reprr   r
   s    r   rV   _MarkupEscapeHelper.__repr__  s    4;;tDHH~.//r   c                 ,    [        U R                  5      $ r   )rB   r   r
   s    r   __int___MarkupEscapeHelper.__int__!  s    488}r   c                 ,    [        U R                  5      $ r   )floatr   r
   s    r   	__float___MarkupEscapeHelper.__float__$  s    TXXr   )r   r   )r   r   r   r   r   r   r   r   r   r%   r   rN   r   r   rV   rB   r   r   r   r   r	   r   r   rI   rI     s    ,!IAEE 1::quugvo+F 4 ; ;) ;* *0# 0 5 r   rI      r   )escape_silent)soft_str)r"   zt.Callable[_P, str]r   zt.Callable[_P, Markup])&r&   rer   r   typingr   TYPE_CHECKINGtyping_extensionsteProtocolr   	ParamSpecr   __version__compileDOTALLrs   ru   r(   r   r%   r   r   TypeVarr   dictr   r   r   r   r   rI   	_speedupsr   r   r   ImportError_nativer	   r   r   <module>r      s    	  
 ??""++  
d	B ZZryy9 Hbii0DS DN$f&& $2 iitT2	 !

155 1;<::quugvo;V 4.+9/ .)7-.s   D" "D=<D=