Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 Aøªjä,ã@sÚddlmZmZmZddlmZddlmZm Z ddl m Z ddl m Z ddl mZddl mZmZdd l mZmZmZdd l mZmZdd l mZdd lmZdd lmZeeƒZe dkrÂeZne ZGdd„deƒZdS)é)Úabsolute_importÚdivisionÚunicode_literals)Úunichr)ÚdequeÚ OrderedDict)Ú version_infoé)ÚspaceCharacters)Úentities)Ú asciiLettersÚasciiUpper2Lower)ÚdigitsÚ hexDigitsÚEOF)Ú tokenTypesÚ tagTokenTypes)ÚreplacementCharacters)ÚHTMLInputStream)ÚTrieéécsdeZdZdZd–‡fdd„ Zdd„Zdd„Zd—d d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Z!d@dA„Z"dBdC„Z#dDdE„Z$dFdG„Z%dHdI„Z&dJdK„Z'dLdM„Z(dNdO„Z)dPdQ„Z*dRdS„Z+dTdU„Z,dVdW„Z-dXdY„Z.dZd[„Z/d\d]„Z0d^d_„Z1d`da„Z2dbdc„Z3ddde„Z4dfdg„Z5dhdi„Z6djdk„Z7dldm„Z8dndo„Z9dpdq„Z:drds„Z;dtdu„Zdzd{„Z?d|d}„Z@d~d„ZAd€d�„ZBd‚dƒ„ZCd„d…„ZDd†d‡„ZEdˆd‰„ZFdŠd‹„ZGdŒd�„ZHdŽd�„ZId�d‘„ZJd’d“„ZKd”d•„ZL‡ZMS)˜Ú HTMLTokenizera  This class takes care of tokenizing HTML. * self.currentToken Holds the token that is currently being processed. * self.state Holds a reference to the method to be invoked... XXX * self.stream Points to HTMLInputStream object. Nc sFt|f|Ž|_||_d|_g|_|j|_d|_d|_t t |ƒj ƒdS)NF) rÚstreamÚparserÚ escapeFlagÚ lastFourCharsÚ dataStateÚstateÚescapeÚ currentTokenÚsuperrÚ__init__)ÚselfrrÚkwargs)Ú __class__©ú7/tmp/pip-build-_d5lkt3n/html5lib/html5lib/_tokenizer.pyr"(szHTMLTokenizer.__init__ccs\tgƒ|_xL|jƒrVx&|jjr:td|jjjdƒdœVqWx|jrR|jjƒVq>Wq WdS)zä This is where the magic happens. We do our usually processing through the states and when we have a token to return we yield the token which pauses processing until the next token is requested. Ú ParseErrorr)ÚtypeÚdataN)rÚ tokenQueuerrÚerrorsrÚpopÚpopleft)r#r&r&r'Ú__iter__7s    zHTMLTokenizer.__iter__c %Cs(t}d}|rt}d}g}|jjƒ}x(||krJ|tk rJ|j|ƒ|jjƒ}q$Wtdj|ƒ|ƒ}|tkrŒt|}|j jt ddd|idœƒ�nld|kožd kns¬|d krÐd }|j jt ddd|idœƒ�n(d |koâd kn�s�d|koüdkn�s�d|k�odkn�s�d|k�o4dkn�s�|t ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d g#ƒk�r¬|j jt ddd|idœƒy t |ƒ}Wn>t k �rö|d6}t d|d?Bƒt d7|d8@Bƒ}YnX|d9k�r$|j jt dd:d;œƒ|jj|ƒ|S)r(z'expected-tag-name-but-got-right-bracket)r)r*rRz<>ú?z'expected-tag-name-but-got-question-markzexpected-tag-namerLT)rr<ÚmarkupDeclarationOpenStaterÚcloseTagOpenStater rr Ú tagNameStater+r=rrCÚbogusCommentState)r#r*r&r&r'rnws6               zHTMLTokenizer.tagOpenStatecCsÊ|jjƒ}|tkr0td|gddœ|_|j|_n–|dkrX|jjtdddœƒ|j |_nn|t kr–|jjtdddœƒ|jjtd d dœƒ|j |_n0|jjtdd d |id œƒ|jj |ƒ|j |_dS)NrdF)r)rbr*rer|r(z*expected-closing-tag-but-got-right-bracket)r)r*z expected-closing-tag-but-got-eofrRz|tkr¸|jjtdd dœƒ|j |_n|jjtd|dœƒd S) NrŽrR)r)r*rLrlr(zinvalid-codepointu�zeof-in-script-in-scriptT) rr<r+r=rÚ scriptDataDoubleEscapedDashStaterÚ(scriptDataDoubleEscapedLessThanSignStaterr)r#r*r&r&r'r˜ùs$          z*HTMLTokenizer.scriptDataDoubleEscapedStatecCsâ|jjƒ}|dkr2|jjtdddœƒ|j|_n¬|dkrZ|jjtdddœƒ|j|_n„|dkr˜|jjtdddœƒ|jjtdddœƒ|j|_nF|t krÀ|jjtdd dœƒ|j |_n|jjtd|dœƒ|j|_d S) NrŽrR)r)r*rLrlr(zinvalid-codepointu�zeof-in-script-in-scriptT) rr<r+r=rÚ$scriptDataDoubleEscapedDashDashStaterršr˜rr)r#r*r&r&r'r™s(           z.HTMLTokenizer.scriptDataDoubleEscapedDashStatecCs|jjƒ}|dkr*|jjtdddœƒnÔ|dkrR|jjtdddœƒ|j|_n¬|dkrz|jjtdddœƒ|j|_n„|dkr¸|jjtdddœƒ|jjtdd dœƒ|j|_nF|t krà|jjtdd dœƒ|j |_n|jjtd|dœƒ|j|_d S) NrŽrR)r)r*rLr|rlr(zinvalid-codepointu�zeof-in-script-in-scriptT) rr<r+r=rršrrwr˜rr)r#r*r&r&r'r›%s,           z2HTMLTokenizer.scriptDataDoubleEscapedDashDashStatecCsP|jjƒ}|dkr8|jjtdddœƒd|_|j|_n|jj|ƒ|j |_dS)NrzrR)r)r*r2T) rr<r+r=rr„ÚscriptDataDoubleEscapeEndStaterrCr˜)r#r*r&r&r'rš>s   z6HTMLTokenizer.scriptDataDoubleEscapedLessThanSignStatecCs˜|jjƒ}|ttdƒBkrR|jjtd|dœƒ|jjƒdkrH|j |_ q”|j |_ nB|t kr€|jjtd|dœƒ|j|7_n|jj |ƒ|j |_ dS)Nrzr|rR)r)r*r—T)rzr|)rr<r r@r+r=rr„r‡r“rr˜r rC)r#r*r&r&r'rœIs    z,HTMLTokenizer.scriptDataDoubleEscapeEndStatecCs0|jjƒ}|tkr$|jjtdƒ�n|tkrJ|jdj|dgƒ|j|_nâ|dkr\|j ƒnÐ|dkrn|j |_n¾|dkrª|j jt d d d œƒ|jdj|dgƒ|j|_n‚|d kræ|j jt d dd œƒ|jdjddgƒ|j|_nF|t k�r|j jt d dd œƒ|j|_n|jdj|dgƒ|j|_dS)NTr*r2r|rzú'ú"rPrLr(z#invalid-character-in-attribute-name)r)r*rlzinvalid-codepointu�z#expected-attribute-name-but-got-eof)r�ržrPrL)rr<r ror r r=ÚattributeNameStaterrkrƒr+rrr)r#r*r&r&r'r‚Ys6              z&HTMLTokenizer.beforeAttributeNameStatecCsæ|jjƒ}d}d}|dkr&|j|_�n0|tkr^|jddd||jjtdƒ7<d}�nø|dkrld}nê|tkr~|j|_nØ|dkr�|j |_nÆ|d krÎ|j j t d d d œƒ|jdddd 7<d}nˆ|dk�r|j j t d dd œƒ|jddd|7<d}nH|t k�r8|j j t d dd œƒ|j|_n|jddd|7<d}|�râ|jdddjtƒ|jddd<xP|jddd…D]:\}}|jddd|k�r–|j j t d dd œƒP�q–W|�râ|jƒdS)NTFrPr*r rr|rzrlr(zinvalid-codepoint)r)r*u�r�ržrLz#invalid-character-in-attribute-namezeof-in-attribute-namezduplicate-attributerSrS)r�ržrLrSrSrSrSrSrS)rr<ÚbeforeAttributeValueStaterr r ror ÚafterAttributeNameStaterƒr+r=rrrrfr rk)r#r*ÚleavingThisStateÚ emitTokenrbÚ_r&r&r'rŸwsR             &  z HTMLTokenizer.attributeNameStatecCsF|jjƒ}|tkr$|jjtdƒ�n|dkr8|j|_�n |dkrJ|jƒnø|tkrp|jdj |dgƒ|j |_nÒ|dkr‚|j |_nÀ|dkr¾|j j t dd d œƒ|jdj d dgƒ|j |_n„|dk�rü|j j t ddd œƒ|jdj |dgƒ|j |_nF|tk�r&|j j t ddd œƒ|j|_n|jdj |dgƒ|j |_dS)NTrPr|r*r2rzrlr(zinvalid-codepoint)r)r*u�r�ržrLz&invalid-character-after-attribute-namezexpected-end-of-tag-but-got-eof)r�ržrL)rr<r ror rrkr r r=rŸrƒr+rrr)r#r*r&r&r'r¡­s:                z%HTMLTokenizer.afterAttributeNameStatecCsj|jjƒ}|tkr$|jjtdƒ�nB|dkr8|j|_�n.|dkrX|j|_|jj|ƒ�n|dkrl|j|_�nú|dkr”|j j t dddœƒ|j ƒnÒ|d krÖ|j j t dd dœƒ|j d dd d 7<|j|_n�|dk�r|j j t dddœƒ|j d dd |7<|j|_nL|tk�rD|j j t dddœƒ|j|_n"|j d dd |7<|j|_dS)NTržrKr�r|r(z.expected-attribute-value-but-got-right-bracket)r)r*rlzinvalid-codepointr*r u�rPrLú`z"equals-in-unquoted-attribute-valuez$expected-attribute-value-but-got-eofrS)rPrLr¥rSrS)rr<r roÚattributeValueDoubleQuotedStaterÚattributeValueUnQuotedStaterCÚattributeValueSingleQuotedStater+r=rrkr rr)r#r*r&r&r'r Ís>                 z'HTMLTokenizer.beforeAttributeValueStatecCs¼|jjƒ}|dkr|j|_nœ|dkr0|jdƒnˆ|dkrj|jjtdddœƒ|jdd dd 7<nN|t kr’|jjtdd dœƒ|j |_n&|jdd d||jj dƒ7<d S)NržrKrlr(zinvalid-codepoint)r)r*r*r u�z#eof-in-attribute-value-double-quoteTrSrS)ržrKrl) rr<ÚafterAttributeValueStaterrar+r=rr rrro)r#r*r&r&r'r¦ïs         z-HTMLTokenizer.attributeValueDoubleQuotedStatecCs¼|jjƒ}|dkr|j|_nœ|dkr0|jdƒnˆ|dkrj|jjtdddœƒ|jdd dd 7<nN|t kr’|jjtdd dœƒ|j |_n&|jdd d||jj dƒ7<d S)Nr�rKrlr(zinvalid-codepoint)r)r*r*r u�z#eof-in-attribute-value-single-quoteTrSrS)r�rKrl) rr<r©rrar+r=rr rrro)r#r*r&r&r'r¨s         z-HTMLTokenizer.attributeValueSingleQuotedStatecCs|jjƒ}|tkr|j|_�nð|dkr2|jdƒnÜ|dkrD|jƒnÊ|dkr~|jjt dd d œƒ|j d dd |7<n�|d kr¸|jjt ddd œƒ|j d dd d7<nV|t krà|jjt ddd œƒ|j |_n.|j d dd ||jj tdƒtBƒ7<dS)NrKr|ržr�rPrLr¥r(z0unexpected-character-in-unquoted-attribute-value)r)r*r*r rlzinvalid-codepointu�z eof-in-attribute-value-no-quotesT)ržr�rPrLr¥rSrSrS)rKr|ržr�rPrLr¥rl)rr<r r‚rrarkr+r=rr rrror@)r#r*r&r&r'r§s,           z)HTMLTokenizer.attributeValueUnQuotedStatecCs¢|jjƒ}|tkr|j|_n‚|dkr.|jƒnp|dkr@|j|_n^|tkrt|jj t dddœƒ|jj |ƒ|j |_n*|jj t dddœƒ|jj |ƒ|j|_dS)Nr|rzr(z$unexpected-EOF-after-attribute-value)r)r*z*unexpected-character-after-attribute-valueT) rr<r r‚rrkrƒrr+r=rrCr)r#r*r&r&r'r©.s"           z&HTMLTokenizer.afterAttributeValueStatecCsˆ|jjƒ}|dkr&d|jd<|jƒn^|tkrZ|jjtdddœƒ|jj|ƒ|j |_ n*|jjtdddœƒ|jj|ƒ|j |_ dS)Nr|Trer(z#unexpected-EOF-after-solidus-in-tag)r)r*z)unexpected-character-after-solidus-in-tag) rr<r rkrr+r=rrCrrr‚)r#r*r&r&r'rƒBs          z&HTMLTokenizer.selfClosingStartTagStatecCsD|jjdƒ}|jddƒ}|jjtd|dœƒ|jjƒ|j|_dS)Nr|rlu�ÚComment)r)r*T) rroÚreplacer+r=rr<rr)r#r*r&r&r'r�Ts   zHTMLTokenizer.bogusCommentStatecCsˆ|jjƒg}|ddkrT|j|jjƒƒ|ddkrPtdddœ|_|j|_dS�nô|ddkr¼d}x.d&D]&}|j|jjƒƒ|d'|krjd}PqjW|rºtddddddœ|_|j|_dSnŒ|d(dk�rH|jdk �rH|jj j �rH|jj j d)j |jj j k�rHd}x2d*D]*}|j|jjƒƒ|d+|k�rd}P�qW|�rH|j |_dS|jjtdddœƒx|�rz|jj|jƒƒ�q`W|j|_dS),Nr rŽrªr2)r)r*TÚdÚDÚoÚOrHÚCÚtÚTÚyÚYÚpÚPÚeÚEFÚDoctype)r)rbÚpublicIdÚsystemIdÚcorrectú[ÚAr(zexpected-dashes-or-doctyperSrSrS)r¬r­©r®r¯©rHr°©r±r²©r³r´©rµr¶©r·r¸)r¿rÀrÁrÂrÃrÄrSrSrS)r°r­r¾r²r¾r½rS)rr<r=rr ÚcommentStartStaterÚ doctypeStaterÚtreeÚ openElementsÚ namespaceÚdefaultNamespaceÚcdataSectionStater+rCr-r�)r#rGÚmatchedÚexpectedr&r&r'r~csR           z(HTMLTokenizer.markupDeclarationOpenStatecCsØ|jjƒ}|dkr|j|_n¸|dkrN|jjtdddœƒ|jdd7<n†|dkr„|jjtdd dœƒ|jj|jƒ|j|_nP|t krº|jjtdd dœƒ|jj|jƒ|j|_n|jd|7<|j |_d S) NrŽrlr(zinvalid-codepoint)r)r*r*u�r|zincorrect-commentzeof-in-commentT) rr<ÚcommentStartDashStaterr+r=rr rrÚ commentState)r#r*r&r&r'rÅ�s(          zHTMLTokenizer.commentStartStatecCsÜ|jjƒ}|dkr|j|_n¼|dkrN|jjtdddœƒ|jdd7<nŠ|dkr„|jjtdd dœƒ|jj|jƒ|j|_nT|t krº|jjtdd dœƒ|jj|jƒ|j|_n|jdd|7<|j |_d S) NrŽrlr(zinvalid-codepoint)r)r*r*u-�r|zincorrect-commentzeof-in-commentT) rr<ÚcommentEndStaterr+r=rr rrrÏ)r#r*r&r&r'rΧs(          z#HTMLTokenizer.commentStartDashStatecCs¦|jjƒ}|dkr|j|_n†|dkrN|jjtdddœƒ|jdd7<nT|tkr„|jjtdddœƒ|jj|jƒ|j |_n|jd||jj d ƒ7<d S) NrŽrlr(zinvalid-codepoint)r)r*r*u�zeof-in-commentT)rŽrl) rr<ÚcommentEndDashStaterr+r=rr rrro)r#r*r&r&r'rϾs        zHTMLTokenizer.commentStatecCs®|jjƒ}|dkr|j|_nŽ|dkrV|jjtdddœƒ|jdd7<|j|_nT|t krŒ|jjtdddœƒ|jj|jƒ|j |_n|jdd|7<|j|_d S) NrŽrlr(zinvalid-codepoint)r)r*r*u-�zeof-in-comment-end-dashT) rr<rÐrr+r=rr rÏrr)r#r*r&r&r'rÑÐs         z!HTMLTokenizer.commentEndDashStatecCs,|jjƒ}|dkr*|jj|jƒ|j|_nþ|dkrd|jjtdddœƒ|jdd7<|j|_nÄ|dkrŒ|jjtdd dœƒ|j |_nœ|d kr¾|jjtdd dœƒ|jd|7<nj|t krô|jjtdd dœƒ|jj|jƒ|j|_n4|jjtdd dœƒ|jdd|7<|j|_dS)Nr|rlr(zinvalid-codepoint)r)r*r*u--�ryz,unexpected-bang-after-double-dash-in-commentrŽz,unexpected-dash-after-double-dash-in-commentzeof-in-comment-double-dashzunexpected-char-in-commentz--T) rr<r+r=r rrrrÏÚcommentEndBangStater)r#r*r&r&r'rÐãs6               zHTMLTokenizer.commentEndStatecCsà|jjƒ}|dkr*|jj|jƒ|j|_n²|dkrN|jdd7<|j|_nŽ|dkrˆ|jjtdddœƒ|jdd 7<|j |_nT|t kr¾|jjtdd dœƒ|jj|jƒ|j|_n|jdd|7<|j |_d S) Nr|rŽr*z--!rlr(zinvalid-codepoint)r)r*u--!�zeof-in-comment-end-bang-stateT) rr<r+r=r rrrÑrrÏr)r#r*r&r&r'rÒs(         z!HTMLTokenizer.commentEndBangStatecCsŠ|jjƒ}|tkr|j|_nj|tkr\|jjtdddœƒd|j d<|jj|j ƒ|j |_n*|jjtdddœƒ|jj |ƒ|j|_dS)Nr(z!expected-doctype-name-but-got-eof)r)r*Fr¼zneed-space-after-doctypeT) rr<r ÚbeforeDoctypeNameStaterrr+r=rr rrC)r#r*r&r&r'rÆs         zHTMLTokenizer.doctypeStatecCsÜ|jjƒ}|tkrnÄ|dkrT|jjtdddœƒd|jd<|jj|jƒ|j|_n„|dkr†|jjtdddœƒd |jd <|j |_nR|t krÆ|jjtdd dœƒd|jd<|jj|jƒ|j|_n||jd <|j |_d S) Nr|r(z+expected-doctype-name-but-got-right-bracket)r)r*Fr¼rlzinvalid-codepointu�rbz!expected-doctype-name-but-got-eofT) rr<r r+r=rr rrÚdoctypeNameStater)r#r*r&r&r'rÓ*s.              z$HTMLTokenizer.beforeDoctypeNameStatecCs|jjƒ}|tkr2|jdjtƒ|jd<|j|_nØ|dkrh|jdjtƒ|jd<|jj |jƒ|j |_n¢|dkr¢|jj t dddœƒ|jdd7<|j |_nh|t krø|jj t dddœƒd |jd <|jdjtƒ|jd<|jj |jƒ|j |_n|jd|7<d S) Nrbr|rlr(zinvalid-codepoint)r)r*u�zeof-in-doctype-nameFr¼T)rr<r r rfr ÚafterDoctypeNameStaterr+r=rrrÔr)r#r*r&r&r'rÔDs,          zHTMLTokenizer.doctypeNameStatecCsR|jjƒ}|tkr�n8|dkr8|jj|jƒ|j|_�n|tkr†d|jd<|jj |ƒ|jjt dddœƒ|jj|jƒ|j|_�nÈ|d!krÊd }x$d'D]}|jjƒ}||kr˜d}Pq˜W|rÈ|j |_d SnJ|d(k�rd }x(d.D] }|jjƒ}||k�rÞd}P�qÞW|�r|j |_d S|jj |ƒ|jjt ddd|id œƒd|jd<|j |_d S)/Nr|Fr¼r(zeof-in-doctype)r)r*rµr¶TÚuÚUÚbÚBÚlÚLÚiÚIrHr°ÚsÚSr³r´r±r²r·r¸ÚmÚMz*expected-space-or-right-bracket-in-doctyper*)r)r*r4)rµr¶©rÖrשrØrÙ©rÚrÛ©rÜrÝ©rHr°)rârãräråræ)rÞrß©r³r´©rÞrß©r±r²©r·r¸©ràrá)rçrèrérêrë)rr<r r+r=r rrrrCrÚafterDoctypePublicKeywordStateÚafterDoctypeSystemKeywordStateÚbogusDoctypeState)r#r*rÌrÍr&r&r'rÕ]sT              z#HTMLTokenizer.afterDoctypeNameStatecCs¨|jjƒ}|tkr|j|_nˆ|d krP|jjtdddœƒ|jj|ƒ|j|_nT|t kr�|jjtdddœƒd|j d<|jj|j ƒ|j |_n|jj|ƒ|j|_d S) Nr�ržr(zunexpected-char-in-doctype)r)r*zeof-in-doctypeFr¼T)r�rž) rr<r Ú"beforeDoctypePublicIdentifierStaterr+r=rrCrr r)r#r*r&r&r'rì�s"           z,HTMLTokenizer.afterDoctypePublicKeywordStatecCsø|jjƒ}|tkrnà|dkr0d|jd<|j|_nÄ|dkrLd|jd<|j|_n¨|dkrŒ|jjt dddœƒd |jd <|jj|jƒ|j |_nh|t krÌ|jjt dd dœƒd |jd <|jj|jƒ|j |_n(|jjt dd dœƒd |jd <|j |_d S)Nržr2rºr�r|r(zunexpected-end-of-doctype)r)r*Fr¼zeof-in-doctypezunexpected-char-in-doctypeT) rr<r r Ú(doctypePublicIdentifierDoubleQuotedStaterÚ(doctypePublicIdentifierSingleQuotedStater+r=rrrrî)r#r*r&r&r'rï¤s4                z0HTMLTokenizer.beforeDoctypePublicIdentifierStatecCsä|jjƒ}|dkr|j|_nÄ|dkrN|jjtdddœƒ|jdd7<n’|dkrŽ|jjtdd dœƒd |jd <|jj|jƒ|j|_nR|t krÎ|jjtdd dœƒd |jd <|jj|jƒ|j|_n|jd|7<d S)Nržrlr(zinvalid-codepoint)r)r*rºu�r|zunexpected-end-of-doctypeFr¼zeof-in-doctypeT) rr<Ú!afterDoctypePublicIdentifierStaterr+r=rr rr)r#r*r&r&r'rðÁs*            z6HTMLTokenizer.doctypePublicIdentifierDoubleQuotedStatecCsä|jjƒ}|dkr|j|_nÄ|dkrN|jjtdddœƒ|jdd7<n’|dkrŽ|jjtdd dœƒd |jd <|jj|jƒ|j|_nR|t krÎ|jjtdd dœƒd |jd <|jj|jƒ|j|_n|jd|7<d S)Nr�rlr(zinvalid-codepoint)r)r*rºu�r|zunexpected-end-of-doctypeFr¼zeof-in-doctypeT) rr<ròrr+r=rr rr)r#r*r&r&r'rñÙs*            z6HTMLTokenizer.doctypePublicIdentifierSingleQuotedStatecCs |jjƒ}|tkr|j|_nì|dkr<|jj|jƒ|j|_nÌ|dkrn|jjt dddœƒd|jd<|j |_nš|dkr |jjt dddœƒd|jd<|j |_nh|t krà|jjt dd dœƒd |jd <|jj|jƒ|j|_n(|jjt dddœƒd |jd <|j |_d S) Nr|ržr(zunexpected-char-in-doctype)r)r*r2r»r�zeof-in-doctypeFr¼T)rr<r Ú-betweenDoctypePublicAndSystemIdentifiersStaterr+r=r rrÚ(doctypeSystemIdentifierDoubleQuotedStateÚ(doctypeSystemIdentifierSingleQuotedStaterrî)r#r*r&r&r'ròñs6                  z/HTMLTokenizer.afterDoctypePublicIdentifierStatecCsØ|jjƒ}|tkrnÀ|dkr4|jj|jƒ|j|_n |dkrPd|jd<|j|_n„|dkrld|jd<|j |_nh|t kr¬|jjt dddœƒd |jd <|jj|jƒ|j|_n(|jjt dd dœƒd |jd <|j |_d S) Nr|ržr2r»r�r(zeof-in-doctype)r)r*Fr¼zunexpected-char-in-doctypeT) rr<r r+r=r rrrôrõrrrî)r#r*r&r&r'rós.             z;HTMLTokenizer.betweenDoctypePublicAndSystemIdentifiersStatecCs¨|jjƒ}|tkr|j|_nˆ|d krP|jjtdddœƒ|jj|ƒ|j|_nT|t kr�|jjtdddœƒd|j d<|jj|j ƒ|j |_n|jj|ƒ|j|_d S) Nr�ržr(zunexpected-char-in-doctype)r)r*zeof-in-doctypeFr¼T)r�rž) rr<r Ú"beforeDoctypeSystemIdentifierStaterr+r=rrCrr r)r#r*r&r&r'rí)s"           z,HTMLTokenizer.afterDoctypeSystemKeywordStatecCsø|jjƒ}|tkrnà|dkr0d|jd<|j|_nÄ|dkrLd|jd<|j|_n¨|dkrŒ|jjt dddœƒd |jd <|jj|jƒ|j |_nh|t krÌ|jjt dd dœƒd |jd <|jj|jƒ|j |_n(|jjt dddœƒd |jd <|j |_d S) Nržr2r»r�r|r(zunexpected-char-in-doctype)r)r*Fr¼zeof-in-doctypeT) rr<r r rôrrõr+r=rrrrî)r#r*r&r&r'rö=s4                z0HTMLTokenizer.beforeDoctypeSystemIdentifierStatecCsä|jjƒ}|dkr|j|_nÄ|dkrN|jjtdddœƒ|jdd7<n’|dkrŽ|jjtdd dœƒd |jd <|jj|jƒ|j|_nR|t krÎ|jjtdd dœƒd |jd <|jj|jƒ|j|_n|jd|7<d S)Nržrlr(zinvalid-codepoint)r)r*r»u�r|zunexpected-end-of-doctypeFr¼zeof-in-doctypeT) rr<Ú!afterDoctypeSystemIdentifierStaterr+r=rr rr)r#r*r&r&r'rôZs*            z6HTMLTokenizer.doctypeSystemIdentifierDoubleQuotedStatecCsä|jjƒ}|dkr|j|_nÄ|dkrN|jjtdddœƒ|jdd7<n’|dkrŽ|jjtdd dœƒd |jd <|jj|jƒ|j|_nR|t krÎ|jjtdd dœƒd |jd <|jj|jƒ|j|_n|jd|7<d S)Nr�rlr(zinvalid-codepoint)r)r*r»u�r|zunexpected-end-of-doctypeFr¼zeof-in-doctypeT) rr<r÷rr+r=rr rr)r#r*r&r&r'rõrs*            z6HTMLTokenizer.doctypeSystemIdentifierSingleQuotedStatecCs–|jjƒ}|tkrn~|dkr4|jj|jƒ|j|_n^|tkrt|jjt dddœƒd|jd<|jj|jƒ|j|_n|jjt dddœƒ|j |_dS) Nr|r(zeof-in-doctype)r)r*Fr¼zunexpected-char-in-doctypeT) rr<r r+r=r rrrrrî)r#r*r&r&r'r÷Šs         z/HTMLTokenizer.afterDoctypeSystemIdentifierStatecCsZ|jjƒ}|dkr*|jj|jƒ|j|_n,|tkrV|jj|ƒ|jj|jƒ|j|_ndS)Nr|T) rr<r+r=r rrrrC)r#r*r&r&r'rî�s    zHTMLTokenizer.bogusDoctypeStatecCsüg}x€|j|jjdƒƒ|j|jjdƒƒ|jjƒ}|tkr@Pq|dksLt‚|ddd…dkrx|ddd…|d<Pq|j|ƒqWdj|ƒ}|jdƒ}|dkrÖx&t|ƒD]}|j jt d d d œƒq¬W|j dd ƒ}|rð|j jt d |d œƒ|j |_ dS)Nú]r|r éz]]r2rlrr(zinvalid-codepoint)r)r*u�rRTrSéþÿÿÿrSrúrS)r=rror<rÚAssertionErrorr?ÚcountÚranger+rr«rr)r#r*r<Ú nullCountr¤r&r&r'rË«s0        zHTMLTokenizer.cdataSectionState)N)NF)NÚ__name__Ú __module__Ú __qualname__Ú__doc__r"r/rJr`rarkrrmrsrqrurwrxrnrr€rrr…r†rtr‰rŠrvr‹r�rŒr�r“r‘r�r’r”r–r•r˜r™r›ršrœr‚rŸr¡r r¦r¨r§r©rƒr�r~rÅrÎrÏrÑrÐrÒrÆrÓrÔrÕrìrïrðrñròrórírörôrõr÷rîrËÚ __classcell__r&r&)r%r'rs” H P#         6 "-3rN)rr) Ú __future__rrrÚsixrrAÚ collectionsrrÚsysrÚ constantsr r r r rrrrrrÚ _inputstreamrÚ_trierrTÚdictrgÚobjectrr&r&r&r'Ús