
    4pf:M                        d Z ddlmZmZmZmZ ddlT ddlmZ ddl	Z	ddl
Z
 e	j        d          Z e	j        d          Z e	j        d          Z e	j        d	          Z e	j        d
          Z e	j        d          Z e	j        d          Z e	j        d          Z e	j        d          Z e	j        d          Z e	j        d          Z e	j        de	j                  Z e	j        de	j                  Z e	j        d          Z e	j        d          Z G d de          Z G d dej                  ZdS )zLA parser for HTML and XHTML.

Backported for python-future from Python 3.3.
    )absolute_importdivisionprint_functionunicode_literals)*)_markupbaseNz[&<]z
&[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z	<[a-zA-Z]>z--\s*>z(([a-zA-Z][-.a-zA-Z0-9:_]*)(?:\s|/(?!>))*z[a-zA-Z][^	
 /> ]*zJ\s*([a-zA-Z_][-.:a-zA-Z_0-9]*)(\s*=\s*(\'[^\']*\'|"[^"]*"|[^\s"\'=<>`]*))?z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*a  
  <[a-zA-Z][-.a-zA-Z0-9:_]*          # tag name
  (?:\s+                             # whitespace before attribute name
    (?:[a-zA-Z_][-.:a-zA-Z0-9_]*     # attribute name
      (?:\s*=\s*                     # value indicator
        (?:'[^']*'                   # LITA-enclosed value
          |\"[^\"]*\"                # LIT-enclosed value
          |[^'\">\s]+                # bare value
         )
       )?
     )
   )*
  \s*                                # trailing whitespace
aF  
  <[a-zA-Z][-.a-zA-Z0-9:_]*          # tag name
  (?:[\s/]*                          # optional whitespace before attribute name
    (?:(?<=['"\s/])[^\s/>][^\s/=>]*  # attribute name
      (?:\s*=+\s*                    # value indicator
        (?:'[^']*'                   # LITA-enclosed value
          |"[^"]*"                   # LIT-enclosed value
          |(?!['"])[^>\s]*           # bare value
         )
         (?:\s*,)*                   # possibly followed by a comma
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                # trailing whitespace
z#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c                        e Zd ZdZddZd ZdS )HTMLParseErrorz&Exception raised for all parse errors.NNc                 P    |sJ || _         |d         | _        |d         | _        d S )Nr      msglinenooffset)selfr   positions      \/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/future/backports/html/parser.py__init__zHTMLParseError.__init__U   s,    


qkqk    c                 j    | j         }| j        |d| j        z  z   }| j        |d| j        dz   z  z   }|S )Nz, at line %dz, column %dr   r   )r   results     r   __str__zHTMLParseError.__str__[   sD    ;"nt{::F;"mt{Q??Fr   N)r   )__name__
__module____qualname____doc__r   r    r   r   r   r   R   s=        00" " " "    r   r   c                       e Zd ZdZdZd dZd Zd Zd Zd Z	d	Z
d
 Zd Zd Zd Zd Zd!dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd	S )"
HTMLParsera  Find tags and other markup and call handler functions.

    Usage:
        p = HTMLParser()
        p.feed(data)
        ...
        p.close()

    Start tags are handled by calling self.handle_starttag() or
    self.handle_startendtag(); end tags by self.handle_endtag().  The
    data between tags is passed from the parser to the derived class
    by calling self.handle_data() with the data as argument (the data
    may be split up in arbitrary chunks).  Entity references are
    passed by calling self.handle_entityref() with the entity
    reference as the argument.  Numeric character references are
    passed to self.handle_charref() with the string containing the
    reference as the argument.
    )scriptstyleFc                 x    |rt          j        dt          d           || _        |                                  dS )zInitialize and reset this instance.

        If strict is set to False (the default) the parser will parse invalid
        markup, otherwise it will raise an error.  Note that the strict mode
        is deprecated.
        zThe strict mode is deprecated.   )
stacklevelN)warningswarnDeprecationWarningstrictreset)r   r*   s     r   r   zHTMLParser.__init__z   sE      	<M:,< < < <

r   c                     d| _         d| _        t          | _        d| _        t
          j                            |            dS )z1Reset this instance.  Loses all unprocessed data. z???N)rawdatalasttaginteresting_normalinteresting
cdata_elemr   
ParserBaser+   r   s    r   r+   zHTMLParser.reset   s<    -$$T*****r   c                 N    | j         |z   | _         |                     d           dS )zFeed data to the parser.

        Call this as often as you want, with as little or as much text
        as you want (may include '\n').
        r   N)r.   goaheadr   datas     r   feedzHTMLParser.feed   s%     |d*Qr   c                 0    |                      d           dS )zHandle any buffered data.r   N)r6   r4   s    r   closezHTMLParser.close   s    Qr   c                 F    t          ||                                           N)r   getpos)r   messages     r   errorzHTMLParser.error   s    Wdkkmm444r   Nc                     | j         S )z)Return full source of start tag: '<...>'.)_HTMLParser__starttag_textr4   s    r   get_starttag_textzHTMLParser.get_starttag_text   s    ##r   c                     |                                 | _        t          j        d| j        z  t          j                  | _        d S )Nz</\s*%s\s*>)lowerr2   recompileIr1   )r   elems     r   set_cdata_modezHTMLParser.set_cdata_mode   s4    **,,:nt&FMMr   c                 ,    t           | _        d | _        d S r=   )r0   r1   r2   r4   s    r   clear_cdata_modezHTMLParser.clear_cdata_mode   s    -r   c                 	   | j         }d}t          |          }||k     ri| j                            ||          }|r|                                }n| j        rn.|}||k     r|                     |||                    |                     ||          }||k    rn|j        } |d|          rt          
                    ||          r|                     |          }n |d|          r|                     |          }n |d|          r|                     |          }n |d|          r|                     |          }ne |d|          r3| j        r|                     |          }n<|                     |          }n&|dz   |k     r|                     d           |dz   }nn|dk     r|sn| j        r|                     d           |                    d	|dz             }|dk     r%|                    d|dz             }|dk     r|dz   }n|dz  }|                     |||                    |                     ||          }n0 |d
|          rt(          
                    ||          }|rq|                                dd         }	|                     |	           |                                } |d|dz
            s|dz
  }|                     ||          }d||d          v r3|                     |dd                    |                     |d          }n\ |d|          r>t0          
                    ||          }|rj|                    d          }	|                     |	           |                                } |d|dz
            s|dz
  }|                     ||          }t4          
                    ||          }|ra|r^|                                ||d          k    r>| j        r|                     d           n!||k    r|}|                     ||dz             }nJ|dz   |k     r/|                     d           |                     ||dz             }nnJ d            ||k     i|r@||k     r:| j        s3|                     |||                    |                     ||          }||d          | _         d S )Nr   <</<!--<?<!r   zEOF in middle of constructr	   &#r%   ;&z#EOF in middle of entity or char refzinteresting.search() lied)r.   lenr1   searchstartr2   handle_data	updatepos
startswithstarttagopenmatchparse_starttagparse_endtagparse_commentparse_pir*   parse_declarationparse_html_declarationr@   findcharrefgrouphandle_charrefend	entityrefhandle_entityref
incomplete)
r   ri   r.   inr^   jr\   knames
             r   r6   zHTMLParser.goahead   sI   ,LL!ee$++GQ77E KKMM? 1uud&&wqs|444q!$$AAvvu +Jz#q!! N6%%gq11 ++A..AAZa(( ))!,,AAZ** **1--AAZa(( a((AAZa(( 	{ ; 22155 77::!eq[[$$S)))AAAq55 { A

#?@@@S!a%00A1uu#LLa!e44q55 !AAQ$$WQqS\222NN1a((D!$$ -6gq11  ;;==2.D''---		A%:c1Q3// "Eq!,,Agabbk))((1666 NN1a00C## 6!33  ;;q>>D))$///		A%:c1Q3// "Eq!,,A"((!44  9u{{}};;; 9 JJ'LMMMM Avv$% $q!a% 8 8A!eq[[ $$S)))q!a%00AA55555u !eex  	%1q555WQqS\***q!$$Aqrr{r   c                    | j         }|||dz            dk    s
J d            |||dz            dk    r|                     |          S |||dz            dk    r|                     |          S |||dz                                            d	k    rF|                    d
|dz             }|dk    rdS |                     ||dz   |                    |dz   S |                     |          S )Nr%   rR   z+unexpected call to parse_html_declaration()   rP      z<![	   z	<!doctyper	   rT   r   )r.   ra   parse_marked_sectionrE   re   handle_declparse_bogus_comment)r   rm   r.   gtposs       r   rd   z!HTMLParser.parse_html_declaration  s   ,q1u~%%% )C%%%1QqS5>V##%%a(((QqsU^u$$,,Q///QqsU^!!##{22LLac**E{{rWQqSY/0007N++A...r   r   c                     | j         }|||dz            dv s
J d            |                    d|dz             }|dk    rdS |r |                     ||dz   |                    |dz   S )Nr%   )rR   rO   z"unexpected call to parse_comment()r	   rT   r   )r.   re   handle_comment)r   rm   reportr.   poss        r   rx   zHTMLParser.parse_bogus_comment-  s    ,q1u~--- 1B---ll3!$$"992 	2!C 0111Qwr   c                    | j         }|||dz            dk    s
J d            t                              ||dz             }|sdS |                                }|                     ||dz   |                    |                                }|S )Nr%   rQ   zunexpected call to parse_pi()rT   )r.   picloserX   rY   	handle_piri   )r   rm   r.   r^   ro   s        r   rb   zHTMLParser.parse_pi9  s    ,q1u~%%%'F%%%w!,, 	2KKMMwqsAv'''IIKKr   c                    d | _         |                     |          }|dk     r|S | j        }|||         | _         g }t                              ||dz             }|s
J d            |                                }|                    d                                          x| _        }||k     r| j	        rt                              ||          }nt                              ||          }|sn|                    ddd          \  }	}
}|
sd }nI|d d         dcxk    r|dd          k    s"n |d d         dcxk    r|dd          k    rn n
|dd         }|r|                     |          }|                    |	                                |f           |                                }||k     |||                                         }|d	vr|                                 \  }}d
| j         v rM|| j                             d
          z   }t#          | j                   | j                             d
          z
  }n|t#          | j                   z   }| j	        r(|                     d|||         d d                    |                     |||                    |S |                    d          r|                     ||           n4|                     ||           || j        v r|                     |           |S )Nr   r   z#unexpected call to parse_starttag()r%   rt   'rT   ")r	   />
zjunk characters in start tag:    r   )rB   check_for_whole_start_tagr.   tagfindr^   ri   rg   rE   r/   r*   attrfindattrfind_tolerantunescapeappendstripr>   countrW   rfindr@   rZ   endswithhandle_startendtaghandle_starttagCDATA_CONTENT_ELEMENTSrJ   )r   rm   endposr.   attrsr^   rp   tagmattrnamerest	attrvalueri   r   r   s                  r   r_   zHTMLParser.parse_starttagE  sF   #//22A::M,&qx0 gqs++;;;;;;IIKK"[[^^11333s&jj{ 8NN7A..%++GQ77 ()1a(8(8%HdI , 		2A2$8888)BCC.88882A2#777723377777%adO	 5 MM)44	LL(..**I6777A! &jj$ ah%%''k!!![[]]NFFt+++$"6"<"<T"B"BBT122/55d;;<  #d&:";";;{ 8


%ah/447 8 8 8WQvX.///M<< 	)##C////  e,,,d111##C(((r   c                    | j         }| j        rt                              ||          }nt                              ||          }|r|                                }|||dz            }|dk    r|dz   S |dk    ru|                    d|          r|dz   S |                    d|          rdS | j        r.|                     ||dz              |                     d           ||k    r|S |dz   S |dk    rdS |d	v rdS | j        r+|                     ||           |                     d
           ||k    r|S |dz   S t          d          )Nr   r	   /r   r%   rT   zmalformed empty start tagr-   z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzmalformed start tagzwe should not get here!)
r.   r*   locatestarttagendr^   locatestarttagend_tolerantri   r\   r[   r@   AssertionError)r   rm   r.   r   ro   nexts         r   r   z$HTMLParser.check_for_whole_start_tag~  s   ,; 	=!''33AA*00!<<A !	A1QqS5>Ds{{1us{{%%dA.. !q5L%%c1-- 2; <NN1a!e,,,JJ:;;;q55Hq5Lrzzr 5 6 6 r{ 2q!$$$

01111uu1u6777r   c                    | j         }|||dz            dk    s
J d            t                              ||dz             }|sdS |                                }t                              ||          }|s | j        |                     |||                    |S | j        r | 	                    d|||                    t                              ||dz             }|s+|||dz            dk    r|dz   S |                     |          S |                                                                }|                    d	|                                          }|                     |           |dz   S |                    d                                          }| j        *|| j        k    r|                     |||                    |S |                     |                                           |                                  |S )
Nr%   rO   zunexpected call to parse_endtagr   rT   zbad end tag: rt   z</>r	   )r.   	endendtagrX   ri   
endtagfindr^   r2   rZ   r*   r@   tagfind_tolerantrx   rg   rE   re   handle_endtagrL   )r   rm   r.   r^   ry   	namematchtagnamerI   s           r   r`   zHTMLParser.parse_endtag  s   ,q1u~%%%'H%%%  !A#.. 	2		  !,, 	*  5!1222{ D


%0@0@BCCC(..w!<<I 71QqS5>U**Q3J33A666oo''--//G
 LLimmoo66Ew'''7N{{1~~##%%?&t&&  5!12224::<<(((r   c                 \    |                      ||           |                     |           d S r=   )r   r   r   r   r   s      r   r   zHTMLParser.handle_startendtag  s2    S%(((3r   c                     d S r=   r   r   s      r   r   zHTMLParser.handle_starttag      r   c                     d S r=   r   )r   r   s     r   r   zHTMLParser.handle_endtag  r   r   c                     d S r=   r   r   rq   s     r   rh   zHTMLParser.handle_charref  r   r   c                     d S r=   r   r   s     r   rk   zHTMLParser.handle_entityref  r   r   c                     d S r=   r   r7   s     r   rZ   zHTMLParser.handle_data  r   r   c                     d S r=   r   r7   s     r   r{   zHTMLParser.handle_comment  r   r   c                     d S r=   r   )r   decls     r   rw   zHTMLParser.handle_decl  r   r   c                     d S r=   r   r7   s     r   r   zHTMLParser.handle_pi  r   r   c                 H    | j         r|                     d|           d S d S )Nzunknown declaration: )r*   r@   r7   s     r   unknown_declzHTMLParser.unknown_decl  s5    ; 	<JJJDD:;;;;;	< 	<r   c                 @    d|vr|S d }t          j        d||          S )NrV   c                 R   |                                  d         } 	 | d         dk    rq| dd          } | d         dv r,t          | dd                              d          d          }n"t          |                     d                    }t          |          S 	 ddlm} | |v r||          S |                     d          rd| z   S t          d	t          |                     D ]+}| d |         |v r|| d |                  | |d          z   c S ,d| z   S # t          $ r d
| z   cY S w xY w)Nr   #r   )xXrU      )html5rV   r%   rS   )
groupsintrstripchrfuture.backports.html.entitiesr   r   rangerW   
ValueError)scr   r   s       r   replaceEntitiesz,HTMLParser.unescape.<locals>.replaceEntities  s^   

1A#Q43;;!""Aty((!""S 1 1266..q66M  A@@@@@:: 8OZZ__ #7Nq#a&&)) # #A!u~~$QrrU|ae3333 & 7N       ax s   A<D D&%D&z&&(#?[xX]?(?:[0-9a-fA-F]+;|\w{1,32};?)))rF   sub)r   r   r   s      r   r   zHTMLParser.unescape  s=    a<<H	# 	# 	#0 v?%q* * 	*r   )F)r   ) r   r   r   r   r   r   r+   r9   r;   r@   rB   rC   rJ   rL   r6   rd   rx   rb   r_   r   r`   r   r   r   rh   rk   rZ   r{   rw   r   r   r   r   r   r   r!   r!   d   s        & 1   + + +    5 5 5 O$ $ $N N N  c# c# c#P/ / /*	 	 	 		 	 	5 5 5r(8 (8 (8V' ' 'T     
                < < <
* * * * *r   r!   ) r   
__future__r   r   r   r   future.builtinsfuture.backportsr   rF   r'   rG   r0   rl   rj   rf   r]   r   commentcloser   r   r   r   VERBOSEr   r   r   r   	Exceptionr   r3   r!   r   r   r   <module>r      s%   : : : : : : : : : : : :     ( ( ( ( ( ( 				   RZ'' RZ%%
BJ>??	
"*@
A
Arz+&&
"*S//rz)$$
"*?
@
@ 2:;<<  2:,- - BJ=> >  BJ   Z   (RZ ) Z   BJsOO	 RZ=>>
    Y   $t* t* t* t* t*' t* t* t* t* t*r   