b?1:v===b?0:(v-q)/(v-b)),_=O-(O-F)*R,A=L-(L-D)*R,S=I-(I-j)*R),w=f-(f-g)*(R=qb?1:(p-q)/(p-b)),P=x-(x-F)*R,k=T-(T-D)*R,C=E-(E-j)*R;for(var U=Math.round(Math.min(y,w)),W=Math.round(Math.max(y,w)),B=d*q+4*U,z=U;z<=W;z++){R=0>(R=(y-z)/(y-w))?0:1";case"amp":return"&";case"quot":return"\"";}return this.onResolveEntity(t)})}},{key:"_parseContent",value:function value(e,t){var r,n=t,i=[];function a(){for(;n"!==e[n]&&"/"!==e[n];){++n}for(r=e.substring(t,n),a();n"!==e[n]&&"/"!==e[n]&&"?"!==e[n];){a();for(var o,l="";nc)return null;o=e.substring(n,c),i.push({name:l,value:this._resolveEntities(o)}),n=c+1,a()}return{name:r,attributes:i,parsed:n-t}}},{key:"_parseProcessingInstruction",value:function value(e,t){var r,n=t;for(;n"!==e[n]&&"/"!==e[n];){++n}r=e.substring(t,n),function(){for(;n"!==e[n+1]);){++n}return{name:r,value:e.substring(i,n),parsed:n-t}}},{key:"parseXml",value:function value(e){for(var t=0,r;t(n=e.indexOf(">",r)))return void this.onError(o.UnterminatedElement);this.onEndElement(e.substring(r,n)),r=n+1;break;case"?":++r;var i=this._parseProcessingInstruction(e,r);if("?>"!==e.substring(r+i.parsed,r+i.parsed+2))return void this.onError(o.UnterminatedXmlDeclaration);this.onPi(i.name,i.value),r+=i.parsed+2;break;case"!":if("--"===e.substring(r+1,r+3)){if(0>(n=e.indexOf("-->",r+3)))return void this.onError(o.UnterminatedComment);this.onComment(e.substring(r+3,n)),r=n+3}else if("[CDATA["===e.substring(r+1,r+8)){if(0>(n=e.indexOf("]]>",r+8)))return void this.onError(o.UnterminatedCdat);this.onCdata(e.substring(r+8,n)),r=n+3}else{if("DOCTYPE"!==e.substring(r+1,r+8))return void this.onError(o.MalformedElement);var a=e.indexOf("[",r+8),s=!1;if(0>(n=e.indexOf(">",r+8)))return void this.onError(o.UnterminatedDoctypeDeclaration);if(0a){if(0>(n=e.indexOf("]>",r+8)))return void this.onError(o.UnterminatedDoctypeDeclaration);s=!0}var l=e.substring(r+8,n+(s?1:0));this.onDoctype(l),r=n+(s?2:1)}break;default:var u=this._parseContent(e,r);if(null===u)return void this.onError(o.MalformedElement);var c=!1;if("/>"===e.substring(r+u.parsed,r+u.parsed+2))c=!0;else if(">"!==e.substring(r+u.parsed,r+u.parsed+1))return void this.onError(o.UnterminatedElement);this.onBeginElement(u.name,u.attributes,c),r+=u.parsed+(c?2:1);}}else{for(;r[[errorBtnLabel]]