1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js Wed Jun 04 10:24:28 2014 +0200
1.3 @@ -0,0 +1,24054 @@
1.4 +/*
1.5 + * Envjs core-env.1.2.13
1.6 + * Pure JavaScript Browser Environment
1.7 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.8 + * Copyright 2008-2010 John Resig, under the MIT License
1.9 + */
1.10 +
1.11 +load("nashorn:mozilla_compat.js");
1.12 +
1.13 +var Envjs = function(){
1.14 + var i,
1.15 + name,
1.16 + override = function(){
1.17 + for(i=0;i<arguments.length;i++){
1.18 + for ( name in arguments[i] ) {
1.19 + var g = arguments[i].__lookupGetter__(name),
1.20 + s = arguments[i].__lookupSetter__(name);
1.21 + if ( g || s ) {
1.22 + if ( g ) { Envjs.__defineGetter__(name, g); }
1.23 + if ( s ) { Envjs.__defineSetter__(name, s); }
1.24 + } else {
1.25 + Envjs[name] = arguments[i][name];
1.26 + }
1.27 + }
1.28 + }
1.29 + };
1.30 + if(arguments.length === 1 && typeof(arguments[0]) == 'string'){
1.31 + window.location = arguments[0];
1.32 + }else if (arguments.length === 1 && typeof(arguments[0]) == "object"){
1.33 + override(arguments[0]);
1.34 + }else if(arguments.length === 2 && typeof(arguments[0]) == 'string'){
1.35 + override(arguments[1]);
1.36 + window.location = arguments[0];
1.37 + }
1.38 + return;
1.39 +},
1.40 +__this__ = this;
1.41 +
1.42 +//eg "Mozilla"
1.43 +Envjs.appCodeName = "Envjs";
1.44 +
1.45 +//eg "Gecko/20070309 Firefox/2.0.0.3"
1.46 +Envjs.appName = "Resig/20070309 PilotFish/1.2.13";
1.47 +
1.48 +Envjs.version = "1.6";//?
1.49 +Envjs.revision = '';
1.50 +/*
1.51 + * Envjs core-env.1.2.13
1.52 + * Pure JavaScript Browser Environment
1.53 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.54 + * Copyright 2008-2010 John Resig, under the MIT License
1.55 + */
1.56 +
1.57 +//CLOSURE_START
1.58 +(function(){
1.59 +
1.60 +
1.61 +
1.62 +
1.63 +
1.64 +/**
1.65 + * @author john resig
1.66 + */
1.67 +// Helper method for extending one object with another.
1.68 +function __extend__(a,b) {
1.69 + for ( var i in b ) {
1.70 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.71 + if ( g || s ) {
1.72 + if ( g ) { a.__defineGetter__(i, g); }
1.73 + if ( s ) { a.__defineSetter__(i, s); }
1.74 + } else {
1.75 + a[i] = b[i];
1.76 + }
1.77 + } return a;
1.78 +}
1.79 +
1.80 +/**
1.81 + * Writes message to system out
1.82 + * @param {String} message
1.83 + */
1.84 +Envjs.log = function(message){};
1.85 +
1.86 +/**
1.87 + * Constants providing enumerated levels for logging in modules
1.88 + */
1.89 +Envjs.DEBUG = 1;
1.90 +Envjs.INFO = 2;
1.91 +Envjs.WARN = 3;
1.92 +Envjs.ERROR = 3;
1.93 +Envjs.NONE = 3;
1.94 +
1.95 +/**
1.96 + * Writes error info out to console
1.97 + * @param {Error} e
1.98 + */
1.99 +Envjs.lineSource = function(e){};
1.100 +
1.101 +
1.102 +/**
1.103 + * TODO: used in ./event/eventtarget.js
1.104 + * @param {Object} event
1.105 + */
1.106 +Envjs.defaultEventBehaviors = {};
1.107 +
1.108 +
1.109 +/**
1.110 + * describes which script src values will trigger Envjs to load
1.111 + * the script like a browser would
1.112 + */
1.113 +Envjs.scriptTypes = {
1.114 + "text/javascript" :false,
1.115 + "text/envjs" :true
1.116 +};
1.117 +
1.118 +/**
1.119 + * will be called when loading a script throws an error
1.120 + * @param {Object} script
1.121 + * @param {Object} e
1.122 + */
1.123 +Envjs.onScriptLoadError = function(script, e){
1.124 + console.log('error loading script %s %s', script, e);
1.125 +};
1.126 +
1.127 +
1.128 +/**
1.129 + * load and execute script tag text content
1.130 + * @param {Object} script
1.131 + */
1.132 +Envjs.loadInlineScript = function(script){
1.133 + var tmpFile;
1.134 + tmpFile = Envjs.writeToTempFile(script.text, 'js') ;
1.135 + load(tmpFile);
1.136 +};
1.137 +
1.138 +/**
1.139 + * Should evaluate script in some context
1.140 + * @param {Object} context
1.141 + * @param {Object} source
1.142 + * @param {Object} name
1.143 + */
1.144 +Envjs.eval = function(context, source, name){};
1.145 +
1.146 +
1.147 +/**
1.148 + * Executes a script tag
1.149 + * @param {Object} script
1.150 + * @param {Object} parser
1.151 + */
1.152 +Envjs.loadLocalScript = function(script){
1.153 + //console.log("loading script %s", script);
1.154 + var types,
1.155 + src,
1.156 + i,
1.157 + base,
1.158 + filename,
1.159 + xhr;
1.160 +
1.161 + if(script.type){
1.162 + types = script.type.split(";");
1.163 + for(i=0;i<types.length;i++){
1.164 + if(Envjs.scriptTypes[types[i]]){
1.165 + //ok this script type is allowed
1.166 + break;
1.167 + }
1.168 + if(i+1 == types.length){
1.169 + //console.log('wont load script type %s', script.type);
1.170 + return false;
1.171 + }
1.172 + }
1.173 + }
1.174 +
1.175 + try{
1.176 + //console.log('handling inline scripts');
1.177 + if(!script.src.length){
1.178 + Envjs.loadInlineScript(script);
1.179 + return true;
1.180 + }
1.181 + }catch(e){
1.182 + //Envjs.error("Error loading script.", e);
1.183 + Envjs.onScriptLoadError(script, e);
1.184 + return false;
1.185 + }
1.186 +
1.187 +
1.188 + //console.log("loading allowed external script %s", script.src);
1.189 +
1.190 + //lets you register a function to execute
1.191 + //before the script is loaded
1.192 + if(Envjs.beforeScriptLoad){
1.193 + for(src in Envjs.beforeScriptLoad){
1.194 + if(script.src.match(src)){
1.195 + Envjs.beforeScriptLoad[src](script);
1.196 + }
1.197 + }
1.198 + }
1.199 + base = "" + script.ownerDocument.location;
1.200 + //filename = Envjs.uri(script.src.match(/([^\?#]*)/)[1], base );
1.201 + //console.log('loading script from base %s', base);
1.202 + filename = Envjs.uri(script.src, base);
1.203 + try {
1.204 + xhr = new XMLHttpRequest();
1.205 + xhr.open("GET", filename, false/*syncronous*/);
1.206 + //console.log("loading external script %s", filename);
1.207 + xhr.onreadystatechange = function(){
1.208 + //console.log("readyState %s", xhr.readyState);
1.209 + if(xhr.readyState === 4){
1.210 + Envjs.eval(
1.211 + script.ownerDocument.ownerWindow,
1.212 + xhr.responseText,
1.213 + filename
1.214 + );
1.215 + }
1.216 + };
1.217 + xhr.send(null, false);
1.218 + } catch(e) {
1.219 + console.log("could not load script %s \n %s", filename, e );
1.220 + Envjs.onScriptLoadError(script, e);
1.221 + return false;
1.222 + }
1.223 + //lets you register a function to execute
1.224 + //after the script is loaded
1.225 + if(Envjs.afterScriptLoad){
1.226 + for(src in Envjs.afterScriptLoad){
1.227 + if(script.src.match(src)){
1.228 + Envjs.afterScriptLoad[src](script);
1.229 + }
1.230 + }
1.231 + }
1.232 + return true;
1.233 +};
1.234 +
1.235 +
1.236 +/**
1.237 + * An 'image' was requested by the document.
1.238 + *
1.239 + * - During inital parse of a <link>
1.240 + * - Via an innerHTML parse of a <link>
1.241 + * - A modificiation of the 'src' attribute of an Image/HTMLImageElement
1.242 + *
1.243 + * NOTE: this is optional API. If this doesn't exist then the default
1.244 + * 'loaded' event occurs.
1.245 + *
1.246 + * @param node {Object} the <img> node
1.247 + * @param node the src value
1.248 + * @return 'true' to indicate the 'load' succeed, false otherwise
1.249 + */
1.250 +Envjs.loadImage = function(node, src) {
1.251 + return true;
1.252 +};
1.253 +
1.254 +
1.255 +/**
1.256 + * A 'link' was requested by the document. Typically this occurs when:
1.257 + * - During inital parse of a <link>
1.258 + * - Via an innerHTML parse of a <link>
1.259 + * - A modificiation of the 'href' attribute on a <link> node in the tree
1.260 + *
1.261 + * @param node {Object} is the link node in question
1.262 + * @param href {String} is the href.
1.263 + *
1.264 + * Return 'true' to indicate that the 'load' was successful, or false
1.265 + * otherwise. The appropriate event is then triggered.
1.266 + *
1.267 + * NOTE: this is optional API. If this doesn't exist then the default
1.268 + * 'loaded' event occurs
1.269 + */
1.270 +Envjs.loadLink = function(node, href) {
1.271 + return true;
1.272 +};
1.273 +
1.274 +(function(){
1.275 +
1.276 +
1.277 +/*
1.278 + * cookie handling
1.279 + * Private internal helper class used to save/retreive cookies
1.280 + */
1.281 +
1.282 +/**
1.283 + * Specifies the location of the cookie file
1.284 + */
1.285 +Envjs.cookieFile = function(){
1.286 + return 'file://'+Envjs.homedir+'/.cookies';
1.287 +};
1.288 +
1.289 +/**
1.290 + * saves cookies to a local file
1.291 + * @param {Object} htmldoc
1.292 + */
1.293 +Envjs.saveCookies = function(){
1.294 + var cookiejson = JSON.stringify(Envjs.cookies.peristent,null,'\t');
1.295 + //console.log('persisting cookies %s', cookiejson);
1.296 + Envjs.writeToFile(cookiejson, Envjs.cookieFile());
1.297 +};
1.298 +
1.299 +/**
1.300 + * loads cookies from a local file
1.301 + * @param {Object} htmldoc
1.302 + */
1.303 +Envjs.loadCookies = function(){
1.304 + var cookiejson,
1.305 + js;
1.306 + try{
1.307 + cookiejson = Envjs.readFromFile(Envjs.cookieFile())
1.308 + js = JSON.parse(cookiejson, null, '\t');
1.309 + }catch(e){
1.310 + //console.log('failed to load cookies %s', e);
1.311 + js = {};
1.312 + }
1.313 + return js;
1.314 +};
1.315 +
1.316 +Envjs.cookies = {
1.317 + persistent:{
1.318 + //domain - key on domain name {
1.319 + //path - key on path {
1.320 + //name - key on name {
1.321 + //value : cookie value
1.322 + //other cookie properties
1.323 + //}
1.324 + //}
1.325 + //}
1.326 + //expire - provides a timestamp for expiring the cookie
1.327 + //cookie - the cookie!
1.328 + },
1.329 + temporary:{//transient is a reserved word :(
1.330 + //like above
1.331 + }
1.332 +};
1.333 +
1.334 +var __cookies__;
1.335 +
1.336 +//HTMLDocument cookie
1.337 +Envjs.setCookie = function(url, cookie){
1.338 + var i,
1.339 + index,
1.340 + name,
1.341 + value,
1.342 + properties = {},
1.343 + attr,
1.344 + attrs;
1.345 + url = Envjs.urlsplit(url);
1.346 + if(cookie)
1.347 + attrs = cookie.split(";");
1.348 + else
1.349 + return;
1.350 +
1.351 + //for now the strategy is to simply create a json object
1.352 + //and post it to a file in the .cookies.js file. I hate parsing
1.353 + //dates so I decided not to implement support for 'expires'
1.354 + //(which is deprecated) and instead focus on the easier 'max-age'
1.355 + //(which succeeds 'expires')
1.356 + cookie = {};//keyword properties of the cookie
1.357 + cookie['domain'] = url.hostname;
1.358 + cookie['path'] = url.path||'/';
1.359 + for(i=0;i<attrs.length;i++){
1.360 + index = attrs[i].indexOf("=");
1.361 + if(index > -1){
1.362 + name = __trim__(attrs[i].slice(0,index));
1.363 + value = __trim__(attrs[i].slice(index+1));
1.364 + if(name=='max-age'){
1.365 + //we'll have to when to check these
1.366 + //and garbage collect expired cookies
1.367 + cookie[name] = parseInt(value, 10);
1.368 + } else if( name == 'domain' ){
1.369 + if(__domainValid__(url, value)){
1.370 + cookie['domain'] = value;
1.371 + }
1.372 + } else if( name == 'path' ){
1.373 + //not sure of any special logic for path
1.374 + cookie['path'] = value;
1.375 + } else {
1.376 + //its not a cookie keyword so store it in our array of properties
1.377 + //and we'll serialize individually in a moment
1.378 + properties[name] = value;
1.379 + }
1.380 + }else{
1.381 + if( attrs[i] == 'secure' ){
1.382 + cookie[attrs[i]] = true;
1.383 + }
1.384 + }
1.385 + }
1.386 + if(!('max-age' in cookie)){
1.387 + //it's a transient cookie so it only lasts as long as
1.388 + //the window.location remains the same (ie in-memory cookie)
1.389 + __mergeCookie__(Envjs.cookies.temporary, cookie, properties);
1.390 + }else{
1.391 + //the cookie is persistent
1.392 + __mergeCookie__(Envjs.cookies.persistent, cookie, properties);
1.393 + Envjs.saveCookies();
1.394 + }
1.395 +};
1.396 +
1.397 +function __domainValid__(url, value){
1.398 + var i,
1.399 + domainParts = url.hostname.split('.').reverse(),
1.400 + newDomainParts = value.split('.').reverse();
1.401 + if(newDomainParts.length > 1){
1.402 + for(i=0;i<newDomainParts.length;i++){
1.403 + if(!(newDomainParts[i] == domainParts[i])){
1.404 + return false;
1.405 + }
1.406 + }
1.407 + return true;
1.408 + }
1.409 + return false;
1.410 +};
1.411 +
1.412 +Envjs.getCookies = function(url){
1.413 + //The cookies that are returned must belong to the same domain
1.414 + //and be at or below the current window.location.path. Also
1.415 + //we must check to see if the cookie was set to 'secure' in which
1.416 + //case we must check our current location.protocol to make sure it's
1.417 + //https:
1.418 + var persisted;
1.419 + url = Envjs.urlsplit(url);
1.420 + if(!__cookies__){
1.421 + try{
1.422 + __cookies__ = true;
1.423 + try{
1.424 + persisted = Envjs.loadCookies();
1.425 + }catch(e){
1.426 + //fail gracefully
1.427 + //console.log('%s', e);
1.428 + }
1.429 + if(persisted){
1.430 + __extend__(Envjs.cookies.persistent, persisted);
1.431 + }
1.432 + //console.log('set cookies for doc %s', doc.baseURI);
1.433 + }catch(e){
1.434 + console.log('cookies not loaded %s', e)
1.435 + };
1.436 + }
1.437 + var temporary = __cookieString__(Envjs.cookies.temporary, url),
1.438 + persistent = __cookieString__(Envjs.cookies.persistent, url);
1.439 + //console.log('temporary cookies: %s', temporary);
1.440 + //console.log('persistent cookies: %s', persistent);
1.441 + return temporary + persistent;
1.442 +};
1.443 +
1.444 +function __cookieString__(cookies, url) {
1.445 + var cookieString = "",
1.446 + domain,
1.447 + path,
1.448 + name,
1.449 + i=0;
1.450 + for (domain in cookies) {
1.451 + // check if the cookie is in the current domain (if domain is set)
1.452 + // console.log('cookie domain %s', domain);
1.453 + if (domain == "" || domain == url.hostname) {
1.454 + for (path in cookies[domain]) {
1.455 + // console.log('cookie domain path %s', path);
1.456 + // make sure path is at or below the window location path
1.457 + if (path == "/" || url.path.indexOf(path) > -1) {
1.458 + for (name in cookies[domain][path]) {
1.459 + // console.log('cookie domain path name %s', name);
1.460 + cookieString +=
1.461 + ((i++ > 0)?'; ':'') +
1.462 + name + "=" +
1.463 + cookies[domain][path][name].value;
1.464 + }
1.465 + }
1.466 + }
1.467 + }
1.468 + }
1.469 + return cookieString;
1.470 +};
1.471 +
1.472 +function __mergeCookie__(target, cookie, properties){
1.473 + var name, now;
1.474 + if(!target[cookie.domain]){
1.475 + target[cookie.domain] = {};
1.476 + }
1.477 + if(!target[cookie.domain][cookie.path]){
1.478 + target[cookie.domain][cookie.path] = {};
1.479 + }
1.480 + for(name in properties){
1.481 + now = new Date().getTime();
1.482 + target[cookie.domain][cookie.path][name] = {
1.483 + "value":properties[name],
1.484 + "secure":cookie.secure,
1.485 + "max-age":cookie['max-age'],
1.486 + "date-created":now,
1.487 + "expiration":(cookie['max-age']===0) ?
1.488 + 0 :
1.489 + now + cookie['max-age']
1.490 + };
1.491 + //console.log('cookie is %o',target[cookie.domain][cookie.path][name]);
1.492 + }
1.493 +};
1.494 +
1.495 +})();//end cookies
1.496 +/*
1.497 + http://www.JSON.org/json2.js
1.498 + 2008-07-15
1.499 +
1.500 + Public Domain.
1.501 +
1.502 + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
1.503 +
1.504 + See http://www.JSON.org/js.html
1.505 +
1.506 +
1.507 + This code should be minified before deployment.
1.508 + See http://javascript.crockford.com/jsmin.html
1.509 +
1.510 + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
1.511 + NOT CONTROL.
1.512 +*/
1.513 +try{ JSON; }catch(e){
1.514 +JSON = function () {
1.515 +
1.516 + function f(n) {
1.517 + // Format integers to have at least two digits.
1.518 + return n < 10 ? '0' + n : n;
1.519 + }
1.520 +
1.521 + Date.prototype.toJSON = function (key) {
1.522 +
1.523 + return this.getUTCFullYear() + '-' +
1.524 + f(this.getUTCMonth() + 1) + '-' +
1.525 + f(this.getUTCDate()) + 'T' +
1.526 + f(this.getUTCHours()) + ':' +
1.527 + f(this.getUTCMinutes()) + ':' +
1.528 + f(this.getUTCSeconds()) + 'Z';
1.529 + };
1.530 +
1.531 + String.prototype.toJSON = function (key) {
1.532 + return String(this);
1.533 + };
1.534 + Number.prototype.toJSON =
1.535 + Boolean.prototype.toJSON = function (key) {
1.536 + return this.valueOf();
1.537 + };
1.538 +
1.539 + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
1.540 + escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
1.541 + gap,
1.542 + indent,
1.543 + meta = { // table of character substitutions
1.544 + '\b': '\\b',
1.545 + '\t': '\\t',
1.546 + '\n': '\\n',
1.547 + '\f': '\\f',
1.548 + '\r': '\\r',
1.549 + '"' : '\\"',
1.550 + '\\': '\\\\'
1.551 + },
1.552 + rep;
1.553 +
1.554 +
1.555 + function quote(string) {
1.556 +
1.557 + escapeable.lastIndex = 0;
1.558 + return escapeable.test(string) ?
1.559 + '"' + string.replace(escapeable, function (a) {
1.560 + var c = meta[a];
1.561 + if (typeof c === 'string') {
1.562 + return c;
1.563 + }
1.564 + return '\\u' + ('0000' +
1.565 + (+(a.charCodeAt(0))).toString(16)).slice(-4);
1.566 + }) + '"' :
1.567 + '"' + string + '"';
1.568 + }
1.569 +
1.570 +
1.571 + function str(key, holder) {
1.572 +
1.573 + var i, // The loop counter.
1.574 + k, // The member key.
1.575 + v, // The member value.
1.576 + length,
1.577 + mind = gap,
1.578 + partial,
1.579 + value = holder[key];
1.580 +
1.581 + if (value && typeof value === 'object' &&
1.582 + typeof value.toJSON === 'function') {
1.583 + value = value.toJSON(key);
1.584 + }
1.585 + if (typeof rep === 'function') {
1.586 + value = rep.call(holder, key, value);
1.587 + }
1.588 +
1.589 + switch (typeof value) {
1.590 + case 'string':
1.591 + return quote(value);
1.592 +
1.593 + case 'number':
1.594 + return isFinite(value) ? String(value) : 'null';
1.595 +
1.596 + case 'boolean':
1.597 + case 'null':
1.598 +
1.599 + return String(value);
1.600 +
1.601 + case 'object':
1.602 +
1.603 + if (!value) {
1.604 + return 'null';
1.605 + }
1.606 + gap += indent;
1.607 + partial = [];
1.608 +
1.609 + if (typeof value.length === 'number' &&
1.610 + !(value.propertyIsEnumerable('length'))) {
1.611 +
1.612 + length = value.length;
1.613 + for (i = 0; i < length; i += 1) {
1.614 + partial[i] = str(i, value) || 'null';
1.615 + }
1.616 +
1.617 + v = partial.length === 0 ? '[]' :
1.618 + gap ? '[\n' + gap +
1.619 + partial.join(',\n' + gap) + '\n' +
1.620 + mind + ']' :
1.621 + '[' + partial.join(',') + ']';
1.622 + gap = mind;
1.623 + return v;
1.624 + }
1.625 +
1.626 + if (rep && typeof rep === 'object') {
1.627 + length = rep.length;
1.628 + for (i = 0; i < length; i += 1) {
1.629 + k = rep[i];
1.630 + if (typeof k === 'string') {
1.631 + v = str(k, value);
1.632 + if (v) {
1.633 + partial.push(quote(k) + (gap ? ': ' : ':') + v);
1.634 + }
1.635 + }
1.636 + }
1.637 + } else {
1.638 +
1.639 + for (k in value) {
1.640 + if (Object.hasOwnProperty.call(value, k)) {
1.641 + v = str(k, value);
1.642 + if (v) {
1.643 + partial.push(quote(k) + (gap ? ': ' : ':') + v);
1.644 + }
1.645 + }
1.646 + }
1.647 + }
1.648 +
1.649 + v = partial.length === 0 ? '{}' :
1.650 + gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
1.651 + mind + '}' : '{' + partial.join(',') + '}';
1.652 + gap = mind;
1.653 + return v;
1.654 + }
1.655 + }
1.656 +
1.657 + return {
1.658 + stringify: function (value, replacer, space) {
1.659 +
1.660 + var i;
1.661 + gap = '';
1.662 + indent = '';
1.663 +
1.664 + if (typeof space === 'number') {
1.665 + for (i = 0; i < space; i += 1) {
1.666 + indent += ' ';
1.667 + }
1.668 +
1.669 + } else if (typeof space === 'string') {
1.670 + indent = space;
1.671 + }
1.672 +
1.673 + rep = replacer;
1.674 + if (replacer && typeof replacer !== 'function' &&
1.675 + (typeof replacer !== 'object' ||
1.676 + typeof replacer.length !== 'number')) {
1.677 + throw new Error('JSON.stringify');
1.678 + }
1.679 +
1.680 + return str('', {'': value});
1.681 + },
1.682 +
1.683 +
1.684 + parse: function (text, reviver) {
1.685 + var j;
1.686 + function walk(holder, key) {
1.687 + var k, v, value = holder[key];
1.688 + if (value && typeof value === 'object') {
1.689 + for (k in value) {
1.690 + if (Object.hasOwnProperty.call(value, k)) {
1.691 + v = walk(value, k);
1.692 + if (v !== undefined) {
1.693 + value[k] = v;
1.694 + } else {
1.695 + delete value[k];
1.696 + }
1.697 + }
1.698 + }
1.699 + }
1.700 + return reviver.call(holder, key, value);
1.701 + }
1.702 +
1.703 + cx.lastIndex = 0;
1.704 + if (cx.test(text)) {
1.705 + text = text.replace(cx, function (a) {
1.706 + return '\\u' + ('0000' +
1.707 + (+(a.charCodeAt(0))).toString(16)).slice(-4);
1.708 + });
1.709 + }
1.710 +
1.711 +
1.712 + if (/^[\],:{}\s]*$/.
1.713 +test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
1.714 +replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
1.715 +replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
1.716 +
1.717 + j = eval('(' + text + ')');
1.718 +
1.719 + return typeof reviver === 'function' ?
1.720 + walk({'': j}, '') : j;
1.721 + }
1.722 +
1.723 + throw new SyntaxError('JSON.parse');
1.724 + }
1.725 + };
1.726 +}();
1.727 +
1.728 +}
1.729 +
1.730 +/**
1.731 + * synchronizes thread modifications
1.732 + * @param {Function} fn
1.733 + */
1.734 +Envjs.sync = function(fn){};
1.735 +
1.736 +/**
1.737 + * sleep thread for specified duration
1.738 + * @param {Object} millseconds
1.739 + */
1.740 +Envjs.sleep = function(millseconds){};
1.741 +
1.742 +/**
1.743 + * Interval to wait on event loop when nothing is happening
1.744 + */
1.745 +Envjs.WAIT_INTERVAL = 20;//milliseconds
1.746 +
1.747 +/*
1.748 + * Copyright (c) 2010 Nick Galbreath
1.749 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
1.750 + *
1.751 + * Permission is hereby granted, free of charge, to any person
1.752 + * obtaining a copy of this software and associated documentation
1.753 + * files (the "Software"), to deal in the Software without
1.754 + * restriction, including without limitation the rights to use,
1.755 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
1.756 + * copies of the Software, and to permit persons to whom the
1.757 + * Software is furnished to do so, subject to the following
1.758 + * conditions:
1.759 + *
1.760 + * The above copyright notice and this permission notice shall be
1.761 + * included in all copies or substantial portions of the Software.
1.762 + *
1.763 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1.764 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
1.765 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1.766 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
1.767 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
1.768 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1.769 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
1.770 + * OTHER DEALINGS IN THE SOFTWARE.
1.771 + */
1.772 +
1.773 +/*
1.774 + * url processing in the spirit of python's urlparse module
1.775 + * see `pydoc urlparse` or
1.776 + * http://docs.python.org/library/urlparse.html
1.777 + *
1.778 + * urlsplit: break apart a URL into components
1.779 + * urlunsplit: reconsistute a URL from componets
1.780 + * urljoin: join an absolute and another URL
1.781 + * urldefrag: remove the fragment from a URL
1.782 + *
1.783 + * Take a look at the tests in urlparse-test.html
1.784 + *
1.785 + * On URL Normalization:
1.786 + *
1.787 + * urlsplit only does minor normalization the components Only scheme
1.788 + * and hostname are lowercased urljoin does a bit more, normalizing
1.789 + * paths with "." and "..".
1.790 +
1.791 + * urlnormalize adds additional normalization
1.792 + *
1.793 + * * removes default port numbers
1.794 + * http://abc.com:80/ -> http://abc.com/, etc
1.795 + * * normalizes path
1.796 + * http://abc.com -> http://abc.com/
1.797 + * and other "." and ".." cleanups
1.798 + * * if file, remove query and fragment
1.799 + *
1.800 + * It does not do:
1.801 + * * normalizes escaped hex values
1.802 + * http://abc.com/%7efoo -> http://abc.com/%7Efoo
1.803 + * * normalize '+' <--> '%20'
1.804 + *
1.805 + * Differences with Python
1.806 + *
1.807 + * The javascript urlsplit returns a normal object with the following
1.808 + * properties: scheme, netloc, hostname, port, path, query, fragment.
1.809 + * All properties are read-write.
1.810 + *
1.811 + * In python, the resulting object is not a dict, but a specialized,
1.812 + * read-only, and has alternative tuple interface (e.g. obj[0] ==
1.813 + * obj.scheme). It's not clear why such a simple function requires
1.814 + * a unique datastructure.
1.815 + *
1.816 + * urlunsplit in javascript takes an duck-typed object,
1.817 + * { scheme: 'http', netloc: 'abc.com', ...}
1.818 + * while in * python it takes a list-like object.
1.819 + * ['http', 'abc.com'... ]
1.820 + *
1.821 + * For all functions, the javascript version use
1.822 + * hostname+port if netloc is missing. In python
1.823 + * hostname+port were always ignored.
1.824 + *
1.825 + * Similar functionality in different languages:
1.826 + *
1.827 + * http://php.net/manual/en/function.parse-url.php
1.828 + * returns assocative array but cannot handle relative URL
1.829 + *
1.830 + * TODO: test allowfragments more
1.831 + * TODO: test netloc missing, but hostname present
1.832 + */
1.833 +
1.834 +var urlparse = {};
1.835 +
1.836 +// Unlike to be useful standalone
1.837 +//
1.838 +// NORMALIZE PATH with "../" and "./"
1.839 +// http://en.wikipedia.org/wiki/URL_normalization
1.840 +// http://tools.ietf.org/html/rfc3986#section-5.2.3
1.841 +//
1.842 +urlparse.normalizepath = function(path)
1.843 +{
1.844 + if (!path || path === '/') {
1.845 + return '/';
1.846 + }
1.847 +
1.848 + var parts = path.split('/');
1.849 +
1.850 + var newparts = [];
1.851 + // make sure path always starts with '/'
1.852 + if (parts[0]) {
1.853 + newparts.push('');
1.854 + }
1.855 +
1.856 + for (var i = 0; i < parts.length; ++i) {
1.857 + if (parts[i] === '..') {
1.858 + if (newparts.length > 1) {
1.859 + newparts.pop();
1.860 + } else {
1.861 + newparts.push(parts[i]);
1.862 + }
1.863 + } else if (parts[i] != '.') {
1.864 + newparts.push(parts[i]);
1.865 + }
1.866 + }
1.867 +
1.868 + path = newparts.join('/');
1.869 + if (!path) {
1.870 + path = '/';
1.871 + }
1.872 + return path;
1.873 +};
1.874 +
1.875 +//
1.876 +// Does many of the normalizations that the stock
1.877 +// python urlsplit/urlunsplit/urljoin neglects
1.878 +//
1.879 +// Doesn't do hex-escape normalization on path or query
1.880 +// %7e -> %7E
1.881 +// Nor, '+' <--> %20 translation
1.882 +//
1.883 +urlparse.urlnormalize = function(url)
1.884 +{
1.885 + var parts = urlparse.urlsplit(url);
1.886 + switch (parts.scheme) {
1.887 + case 'file':
1.888 + // files can't have query strings
1.889 + // and we don't bother with fragments
1.890 + parts.query = '';
1.891 + parts.fragment = '';
1.892 + break;
1.893 + case 'http':
1.894 + case 'https':
1.895 + // remove default port
1.896 + if ((parts.scheme === 'http' && parts.port == 80) ||
1.897 + (parts.scheme === 'https' && parts.port == 443)) {
1.898 + parts.port = null;
1.899 + // hostname is already lower case
1.900 + parts.netloc = parts.hostname;
1.901 + }
1.902 + break;
1.903 + default:
1.904 + // if we don't have specific normalizations for this
1.905 + // scheme, return the original url unmolested
1.906 + return url;
1.907 + }
1.908 +
1.909 + // for [file|http|https]. Not sure about other schemes
1.910 + parts.path = urlparse.normalizepath(parts.path);
1.911 +
1.912 + return urlparse.urlunsplit(parts);
1.913 +};
1.914 +
1.915 +urlparse.urldefrag = function(url)
1.916 +{
1.917 + var idx = url.indexOf('#');
1.918 + if (idx == -1) {
1.919 + return [ url, '' ];
1.920 + } else {
1.921 + return [ url.substr(0,idx), url.substr(idx+1) ];
1.922 + }
1.923 +};
1.924 +
1.925 +urlparse.urlsplit = function(url, default_scheme, allow_fragments)
1.926 +{
1.927 + var leftover;
1.928 +
1.929 + if (typeof allow_fragments === 'undefined') {
1.930 + allow_fragments = true;
1.931 + }
1.932 +
1.933 + // scheme (optional), host, port
1.934 + var fullurl = /^([A-Za-z]+)?(:?\/\/)([0-9.\-A-Za-z]*)(?::(\d+))?(.*)$/;
1.935 + // path, query, fragment
1.936 + var parse_leftovers = /([^?#]*)?(?:\?([^#]*))?(?:#(.*))?$/;
1.937 +
1.938 + var o = {};
1.939 +
1.940 + var parts = url.match(fullurl);
1.941 + if (parts) {
1.942 + o.scheme = parts[1] || default_scheme || '';
1.943 + o.hostname = parts[3].toLowerCase() || '';
1.944 + o.port = parseInt(parts[4],10) || '';
1.945 + // Probably should grab the netloc from regexp
1.946 + // and then parse again for hostname/port
1.947 +
1.948 + o.netloc = parts[3];
1.949 + if (parts[4]) {
1.950 + o.netloc += ':' + parts[4];
1.951 + }
1.952 +
1.953 + leftover = parts[5];
1.954 + } else {
1.955 + o.scheme = default_scheme || '';
1.956 + o.netloc = '';
1.957 + o.hostname = '';
1.958 + leftover = url;
1.959 + }
1.960 + o.scheme = o.scheme.toLowerCase();
1.961 +
1.962 + parts = leftover.match(parse_leftovers);
1.963 +
1.964 + o.path = parts[1] || '';
1.965 + o.query = parts[2] || '';
1.966 +
1.967 + if (allow_fragments) {
1.968 + o.fragment = parts[3] || '';
1.969 + } else {
1.970 + o.fragment = '';
1.971 + }
1.972 +
1.973 + return o;
1.974 +};
1.975 +
1.976 +urlparse.urlunsplit = function(o) {
1.977 + var s = '';
1.978 + if (o.scheme) {
1.979 + s += o.scheme + '://';
1.980 + }
1.981 +
1.982 + if (o.netloc) {
1.983 + if (s == '') {
1.984 + s += '//';
1.985 + }
1.986 + s += o.netloc;
1.987 + } else if (o.hostname) {
1.988 + // extension. Python only uses netloc
1.989 + if (s == '') {
1.990 + s += '//';
1.991 + }
1.992 + s += o.hostname;
1.993 + if (o.port) {
1.994 + s += ':' + o.port;
1.995 + }
1.996 + }
1.997 +
1.998 + if (o.path) {
1.999 + s += o.path;
1.1000 + }
1.1001 +
1.1002 + if (o.query) {
1.1003 + s += '?' + o.query;
1.1004 + }
1.1005 + if (o.fragment) {
1.1006 + s += '#' + o.fragment;
1.1007 + }
1.1008 + return s;
1.1009 +};
1.1010 +
1.1011 +urlparse.urljoin = function(base, url, allow_fragments)
1.1012 +{
1.1013 + if (typeof allow_fragments === 'undefined') {
1.1014 + allow_fragments = true;
1.1015 + }
1.1016 +
1.1017 + var url_parts = urlparse.urlsplit(url);
1.1018 +
1.1019 + // if url parts has a scheme (i.e. absolute)
1.1020 + // then nothing to do
1.1021 + if (url_parts.scheme) {
1.1022 + if (! allow_fragments) {
1.1023 + return url;
1.1024 + } else {
1.1025 + return urlparse.urldefrag(url)[0];
1.1026 + }
1.1027 + }
1.1028 + var base_parts = urlparse.urlsplit(base);
1.1029 +
1.1030 + // copy base, only if not present
1.1031 + if (!base_parts.scheme) {
1.1032 + base_parts.scheme = url_parts.scheme;
1.1033 + }
1.1034 +
1.1035 + // copy netloc, only if not present
1.1036 + if (!base_parts.netloc || !base_parts.hostname) {
1.1037 + base_parts.netloc = url_parts.netloc;
1.1038 + base_parts.hostname = url_parts.hostname;
1.1039 + base_parts.port = url_parts.port;
1.1040 + }
1.1041 +
1.1042 + // paths
1.1043 + if (url_parts.path.length > 0) {
1.1044 + if (url_parts.path.charAt(0) == '/') {
1.1045 + base_parts.path = url_parts.path;
1.1046 + } else {
1.1047 + // relative path.. get rid of "current filename" and
1.1048 + // replace. Same as var parts =
1.1049 + // base_parts.path.split('/'); parts[parts.length-1] =
1.1050 + // url_parts.path; base_parts.path = parts.join('/');
1.1051 + var idx = base_parts.path.lastIndexOf('/');
1.1052 + if (idx == -1) {
1.1053 + base_parts.path = url_parts.path;
1.1054 + } else {
1.1055 + base_parts.path = base_parts.path.substr(0,idx) + '/' +
1.1056 + url_parts.path;
1.1057 + }
1.1058 + }
1.1059 + }
1.1060 +
1.1061 + // clean up path
1.1062 + base_parts.path = urlparse.normalizepath(base_parts.path);
1.1063 +
1.1064 + // copy query string
1.1065 + base_parts.query = url_parts.query;
1.1066 +
1.1067 + // copy fragments
1.1068 + if (allow_fragments) {
1.1069 + base_parts.fragment = url_parts.fragment;
1.1070 + } else {
1.1071 + base_parts.fragment = '';
1.1072 + }
1.1073 +
1.1074 + return urlparse.urlunsplit(base_parts);
1.1075 +};
1.1076 +
1.1077 +/**
1.1078 + * getcwd - named after posix call of same name (see 'man 2 getcwd')
1.1079 + *
1.1080 + */
1.1081 +Envjs.getcwd = function() {
1.1082 + return '.';
1.1083 +};
1.1084 +
1.1085 +/**
1.1086 + * resolves location relative to doc location
1.1087 + *
1.1088 + * @param {Object} path Relative or absolute URL
1.1089 + * @param {Object} base (semi-optional) The base url used in resolving "path" above
1.1090 + */
1.1091 +Envjs.uri = function(path, base) {
1.1092 + //console.log('constructing uri from path %s and base %s', path, base);
1.1093 +
1.1094 + // Semi-common trick is to make an iframe with src='javascript:false'
1.1095 + // (or some equivalent). By returning '', the load is skipped
1.1096 + if (path.indexOf('javascript') === 0) {
1.1097 + return '';
1.1098 + }
1.1099 +
1.1100 + // if path is absolute, then just normalize and return
1.1101 + if (path.match('^[a-zA-Z]+://')) {
1.1102 + return urlparse.urlnormalize(path);
1.1103 + }
1.1104 +
1.1105 + // interesting special case, a few very large websites use
1.1106 + // '//foo/bar/' to mean 'http://foo/bar'
1.1107 + if (path.match('^//')) {
1.1108 + path = 'http:' + path;
1.1109 + }
1.1110 +
1.1111 + // if base not passed in, try to get it from document
1.1112 + // Ideally I would like the caller to pass in document.baseURI to
1.1113 + // make this more self-sufficient and testable
1.1114 + if (!base && document) {
1.1115 + base = document.baseURI;
1.1116 + }
1.1117 +
1.1118 + // about:blank doesn't count
1.1119 + if (base === 'about:blank'){
1.1120 + base = '';
1.1121 + }
1.1122 +
1.1123 + // if base is still empty, then we are in QA mode loading local
1.1124 + // files. Get current working directory
1.1125 + if (!base) {
1.1126 + base = 'file://' + Envjs.getcwd() + '/';
1.1127 + }
1.1128 + // handles all cases if path is abosulte or relative to base
1.1129 + // 3rd arg is "false" --> remove fragments
1.1130 + var newurl = urlparse.urlnormalize(urlparse.urljoin(base, path, false));
1.1131 +
1.1132 + return newurl;
1.1133 +};
1.1134 +
1.1135 +
1.1136 +
1.1137 +/**
1.1138 + * Used in the XMLHttpRquest implementation to run a
1.1139 + * request in a seperate thread
1.1140 + * @param {Object} fn
1.1141 + */
1.1142 +Envjs.runAsync = function(fn){};
1.1143 +
1.1144 +
1.1145 +/**
1.1146 + * Used to write to a local file
1.1147 + * @param {Object} text
1.1148 + * @param {Object} url
1.1149 + */
1.1150 +Envjs.writeToFile = function(text, url){};
1.1151 +
1.1152 +
1.1153 +/**
1.1154 + * Used to write to a local file
1.1155 + * @param {Object} text
1.1156 + * @param {Object} suffix
1.1157 + */
1.1158 +Envjs.writeToTempFile = function(text, suffix){};
1.1159 +
1.1160 +/**
1.1161 + * Used to read the contents of a local file
1.1162 + * @param {Object} url
1.1163 + */
1.1164 +Envjs.readFromFile = function(url){};
1.1165 +
1.1166 +/**
1.1167 + * Used to delete a local file
1.1168 + * @param {Object} url
1.1169 + */
1.1170 +Envjs.deleteFile = function(url){};
1.1171 +
1.1172 +/**
1.1173 + * establishes connection and calls responsehandler
1.1174 + * @param {Object} xhr
1.1175 + * @param {Object} responseHandler
1.1176 + * @param {Object} data
1.1177 + */
1.1178 +Envjs.connection = function(xhr, responseHandler, data){};
1.1179 +
1.1180 +
1.1181 +__extend__(Envjs, urlparse);
1.1182 +
1.1183 +/**
1.1184 + * Makes an object window-like by proxying object accessors
1.1185 + * @param {Object} scope
1.1186 + * @param {Object} parent
1.1187 + */
1.1188 +Envjs.proxy = function(scope, parent, aliasList){};
1.1189 +
1.1190 +Envjs.javaEnabled = false;
1.1191 +
1.1192 +Envjs.homedir = '';
1.1193 +Envjs.tmpdir = '';
1.1194 +Envjs.os_name = '';
1.1195 +Envjs.os_arch = '';
1.1196 +Envjs.os_version = '';
1.1197 +Envjs.lang = '';
1.1198 +Envjs.platform = '';
1.1199 +
1.1200 +/**
1.1201 + *
1.1202 + * @param {Object} frameElement
1.1203 + * @param {Object} url
1.1204 + */
1.1205 +Envjs.loadFrame = function(frame, url){
1.1206 + try {
1.1207 + if(frame.contentWindow){
1.1208 + //mark for garbage collection
1.1209 + frame.contentWindow = null;
1.1210 + }
1.1211 +
1.1212 + //create a new scope for the window proxy
1.1213 + //platforms will need to override this function
1.1214 + //to make sure the scope is global-like
1.1215 + frame.contentWindow = (function(){return this;})();
1.1216 + new Window(frame.contentWindow, window);
1.1217 +
1.1218 + //I dont think frames load asynchronously in firefox
1.1219 + //and I think the tests have verified this but for
1.1220 + //some reason I'm less than confident... Are there cases?
1.1221 + frame.contentDocument = frame.contentWindow.document;
1.1222 + frame.contentDocument.async = false;
1.1223 + if(url){
1.1224 + //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
1.1225 + frame.contentWindow.location = url;
1.1226 + }
1.1227 + } catch(e) {
1.1228 + console.log("failed to load frame content: from %s %s", url, e);
1.1229 + }
1.1230 +};
1.1231 +
1.1232 +
1.1233 +// The following are in rhino/window.js
1.1234 +// TODO: Envjs.unloadFrame
1.1235 +// TODO: Envjs.proxy
1.1236 +
1.1237 +/**
1.1238 + * @author john resig & the envjs team
1.1239 + * @uri http://www.envjs.com/
1.1240 + * @copyright 2008-2010
1.1241 + * @license MIT
1.1242 + */
1.1243 +//CLOSURE_END
1.1244 +}());
1.1245 +/*
1.1246 + * Envjs rhino-env.1.2.13
1.1247 + * Pure JavaScript Browser Environment
1.1248 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.1249 + * Copyright 2008-2010 John Resig, under the MIT License
1.1250 + */
1.1251 +
1.1252 +var __context__ = Packages.jdk.nashorn.internal.runtime.Context.getContext();
1.1253 +
1.1254 +Envjs.platform = "Nashorn";
1.1255 +Envjs.revision = "0.1";
1.1256 +
1.1257 +/*
1.1258 + * Envjs rhino-env.1.2.13
1.1259 + * Pure JavaScript Browser Environment
1.1260 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.1261 + * Copyright 2008-2010 John Resig, under the MIT License
1.1262 + */
1.1263 +
1.1264 +//CLOSURE_START
1.1265 +(function(){
1.1266 +
1.1267 +
1.1268 +
1.1269 +
1.1270 +
1.1271 +/**
1.1272 + * @author john resig
1.1273 + */
1.1274 +// Helper method for extending one object with another.
1.1275 +function __extend__(a,b) {
1.1276 + for ( var i in b ) {
1.1277 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.1278 + if ( g || s ) {
1.1279 + if ( g ) { a.__defineGetter__(i, g); }
1.1280 + if ( s ) { a.__defineSetter__(i, s); }
1.1281 + } else {
1.1282 + a[i] = b[i];
1.1283 + }
1.1284 + } return a;
1.1285 +}
1.1286 +
1.1287 +/**
1.1288 + * Writes message to system out.
1.1289 + *
1.1290 + * Some sites redefine 'print' as in 'window.print', so instead of
1.1291 + * printing to stdout, you are popping open a new window, which might
1.1292 + * call print, etc, etc,etc This can cause infinite loops and can
1.1293 + * exhausing all memory.
1.1294 + *
1.1295 + * By defining this upfront now, Envjs.log will always call the native 'print'
1.1296 + * function
1.1297 + *
1.1298 + * @param {Object} message
1.1299 + */
1.1300 +Envjs.log = print;
1.1301 +
1.1302 +Envjs.lineSource = function(e){
1.1303 + return e&&e.rhinoException?e.rhinoException.lineSource():"(line ?)";
1.1304 +};
1.1305 +/**
1.1306 + * load and execute script tag text content
1.1307 + * @param {Object} script
1.1308 + */
1.1309 +Envjs.loadInlineScript = function(script){
1.1310 + if(script.ownerDocument.ownerWindow){
1.1311 + Envjs.eval(
1.1312 + script.ownerDocument.ownerWindow,
1.1313 + script.text,
1.1314 + 'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
1.1315 + );
1.1316 + }else{
1.1317 + Envjs.eval(
1.1318 + __this__,
1.1319 + script.text,
1.1320 + 'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
1.1321 + );
1.1322 + }
1.1323 + //console.log('evaluated at scope %s \n%s',
1.1324 + // script.ownerDocument.ownerWindow.guid, script.text);
1.1325 +};
1.1326 +
1.1327 +
1.1328 +Envjs.eval = function(context, source, name){
1.1329 + __context__.eval(context, source, null, name, false);
1.1330 +};
1.1331 +
1.1332 +
1.1333 +/**
1.1334 + * Rhino provides a very succinct 'sync'
1.1335 + * @param {Function} fn
1.1336 + */
1.1337 +Envjs.sync = function(fn){
1.1338 + //console.log('Threadless platform, sync is safe');
1.1339 + return fn;
1.1340 +};
1.1341 +Envjs.spawn = function(fn){
1.1342 + //console.log('Threadless platform, spawn shares main thread.');
1.1343 + return fn();
1.1344 +};
1.1345 +
1.1346 +/**
1.1347 + * sleep thread for specified duration
1.1348 + * @param {Object} millseconds
1.1349 + */
1.1350 +Envjs.sleep = function(millseconds){
1.1351 + try{
1.1352 + java.lang.Thread.sleep(millseconds);
1.1353 + }catch(e){
1.1354 + console.log('Threadless platform, cannot sleep.');
1.1355 + }
1.1356 +};
1.1357 +
1.1358 +/**
1.1359 + * provides callback hook for when the system exits
1.1360 + */
1.1361 +Envjs.onExit = function(callback){
1.1362 + // TODO add exit listener
1.1363 +};
1.1364 +
1.1365 +/**
1.1366 + * Get 'Current Working Directory'
1.1367 + */
1.1368 +Envjs.getcwd = function() {
1.1369 + return java.lang.System.getProperty('user.dir');
1.1370 +}
1.1371 +
1.1372 +/**
1.1373 + *
1.1374 + * @param {Object} fn
1.1375 + * @param {Object} onInterupt
1.1376 + */
1.1377 +Envjs.runAsync = function(fn, onInterupt){
1.1378 + ////Envjs.debug("running async");
1.1379 + var running = true,
1.1380 + run;
1.1381 +
1.1382 + try{
1.1383 + run = Envjs.sync(function(){
1.1384 + fn();
1.1385 + Envjs.wait();
1.1386 + });
1.1387 + Envjs.spawn(run);
1.1388 + }catch(e){
1.1389 + console.log("error while running async operation", e);
1.1390 + try{if(onInterrupt)onInterrupt(e)}catch(ee){};
1.1391 + }
1.1392 +};
1.1393 +
1.1394 +/**
1.1395 + * Used to write to a local file
1.1396 + * @param {Object} text
1.1397 + * @param {Object} url
1.1398 + */
1.1399 +Envjs.writeToFile = function(text, url){
1.1400 + //Envjs.debug("writing text to url : " + url);
1.1401 + var out = new java.io.FileWriter(
1.1402 + new java.io.File(
1.1403 + new java.net.URI(url.toString())));
1.1404 + out.write( text, 0, text.length );
1.1405 + out.flush();
1.1406 + out.close();
1.1407 +};
1.1408 +
1.1409 +/**
1.1410 + * Used to write to a local file
1.1411 + * @param {Object} text
1.1412 + * @param {Object} suffix
1.1413 + */
1.1414 +Envjs.writeToTempFile = function(text, suffix){
1.1415 + //Envjs.debug("writing text to temp url : " + suffix);
1.1416 + // Create temp file.
1.1417 + var temp = java.io.File.createTempFile("envjs-tmp", suffix);
1.1418 +
1.1419 + // Delete temp file when program exits.
1.1420 + temp.deleteOnExit();
1.1421 +
1.1422 + // Write to temp file
1.1423 + var out = new java.io.FileWriter(temp);
1.1424 + out.write(text, 0, text.length);
1.1425 + out.close();
1.1426 + return temp.getAbsolutePath().toString()+'';
1.1427 +};
1.1428 +
1.1429 +
1.1430 +/**
1.1431 + * Used to read the contents of a local file
1.1432 + * @param {Object} url
1.1433 + */
1.1434 +Envjs.readFromFile = function( url ){
1.1435 + var fileReader = new java.io.FileReader(
1.1436 + new java.io.File(
1.1437 + new java.net.URI( url )));
1.1438 +
1.1439 + var stringwriter = new java.io.StringWriter(),
1.1440 + buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024),
1.1441 + length;
1.1442 +
1.1443 + while ((length = fileReader.read(buffer, 0, 1024)) != -1) {
1.1444 + stringwriter.write(buffer, 0, length);
1.1445 + }
1.1446 +
1.1447 + stringwriter.close();
1.1448 + return stringwriter.toString()+"";
1.1449 +};
1.1450 +
1.1451 +
1.1452 +/**
1.1453 + * Used to delete a local file
1.1454 + * @param {Object} url
1.1455 + */
1.1456 +Envjs.deleteFile = function(url){
1.1457 + var file = new java.io.File( new java.net.URI( url ) );
1.1458 + file["delete"]();
1.1459 +};
1.1460 +
1.1461 +/**
1.1462 + * establishes connection and calls responsehandler
1.1463 + * @param {Object} xhr
1.1464 + * @param {Object} responseHandler
1.1465 + * @param {Object} data
1.1466 + */
1.1467 +Envjs.connection = function(xhr, responseHandler, data){
1.1468 + var url = new java.net.URL(xhr.url),
1.1469 + connection,
1.1470 + header,
1.1471 + outstream,
1.1472 + buffer,
1.1473 + length,
1.1474 + binary = false,
1.1475 + name, value,
1.1476 + contentEncoding,
1.1477 + instream,
1.1478 + responseXML,
1.1479 + i;
1.1480 + if ( /^file\:/.test(url) ) {
1.1481 + try{
1.1482 + if ( "PUT" == xhr.method || "POST" == xhr.method ) {
1.1483 + data = data || "" ;
1.1484 + Envjs.writeToFile(data, url);
1.1485 + xhr.readyState = 4;
1.1486 + //could be improved, I just cant recall the correct http codes
1.1487 + xhr.status = 200;
1.1488 + xhr.statusText = "";
1.1489 + } else if ( xhr.method == "DELETE" ) {
1.1490 + Envjs.deleteFile(url);
1.1491 + xhr.readyState = 4;
1.1492 + //could be improved, I just cant recall the correct http codes
1.1493 + xhr.status = 200;
1.1494 + xhr.statusText = "";
1.1495 + } else {
1.1496 + connection = url.openConnection();
1.1497 + connection.connect();
1.1498 + //try to add some canned headers that make sense
1.1499 +
1.1500 + try{
1.1501 + if(xhr.url.match(/html$/)){
1.1502 + xhr.responseHeaders["Content-Type"] = 'text/html';
1.1503 + }else if(xhr.url.match(/.xml$/)){
1.1504 + xhr.responseHeaders["Content-Type"] = 'text/xml';
1.1505 + }else if(xhr.url.match(/.js$/)){
1.1506 + xhr.responseHeaders["Content-Type"] = 'text/javascript';
1.1507 + }else if(xhr.url.match(/.json$/)){
1.1508 + xhr.responseHeaders["Content-Type"] = 'application/json';
1.1509 + }else{
1.1510 + xhr.responseHeaders["Content-Type"] = 'text/plain';
1.1511 + }
1.1512 + //xhr.responseHeaders['Last-Modified'] = connection.getLastModified();
1.1513 + //xhr.responseHeaders['Content-Length'] = headerValue+'';
1.1514 + //xhr.responseHeaders['Date'] = new Date()+'';*/
1.1515 + }catch(e){
1.1516 + console.log('failed to load response headers',e);
1.1517 + }
1.1518 + }
1.1519 + }catch(e){
1.1520 + console.log('failed to open file %s %s', url, e);
1.1521 + connection = null;
1.1522 + xhr.readyState = 4;
1.1523 + xhr.statusText = "Local File Protocol Error";
1.1524 + xhr.responseText = "<html><head/><body><p>"+ e+ "</p></body></html>";
1.1525 + }
1.1526 + } else {
1.1527 + connection = url.openConnection();
1.1528 + connection.setRequestMethod( xhr.method );
1.1529 +
1.1530 + // Add headers to Java connection
1.1531 + for (header in xhr.headers){
1.1532 + connection.addRequestProperty(header+'', xhr.headers[header]+'');
1.1533 + }
1.1534 +
1.1535 + //write data to output stream if required
1.1536 + if(data){
1.1537 + if(data instanceof Document){
1.1538 + if ( xhr.method == "PUT" || xhr.method == "POST" ) {
1.1539 + connection.setDoOutput(true);
1.1540 + outstream = connection.getOutputStream(),
1.1541 + xml = (new XMLSerializer()).serializeToString(data);
1.1542 + buffer = new java.lang.String(xml).getBytes('UTF-8');
1.1543 + outstream.write(buffer, 0, buffer.length);
1.1544 + outstream.close();
1.1545 + }
1.1546 + }else if(data.length&&data.length>0){
1.1547 + if ( xhr.method == "PUT" || xhr.method == "POST" ) {
1.1548 + connection.setDoOutput(true);
1.1549 + outstream = connection.getOutputStream();
1.1550 + buffer = new java.lang.String(data).getBytes('UTF-8');
1.1551 + outstream.write(buffer, 0, buffer.length);
1.1552 + outstream.close();
1.1553 + }
1.1554 + }
1.1555 + connection.connect();
1.1556 + }else{
1.1557 + connection.connect();
1.1558 + }
1.1559 + }
1.1560 +
1.1561 + if(connection){
1.1562 + try{
1.1563 + length = connection.getHeaderFields().size();
1.1564 + // Stick the response headers into responseHeaders
1.1565 + for (i = 0; i < length; i++) {
1.1566 + name = connection.getHeaderFieldKey(i);
1.1567 + value = connection.getHeaderField(i);
1.1568 + if (name)
1.1569 + xhr.responseHeaders[name+''] = value+'';
1.1570 + }
1.1571 + }catch(e){
1.1572 + console.log('failed to load response headers \n%s',e);
1.1573 + }
1.1574 +
1.1575 + xhr.readyState = 4;
1.1576 + xhr.status = parseInt(connection.responseCode,10) || undefined;
1.1577 + xhr.statusText = connection.responseMessage || "";
1.1578 +
1.1579 + contentEncoding = connection.getContentEncoding() || "utf-8";
1.1580 + instream = null;
1.1581 + responseXML = null;
1.1582 +
1.1583 + try{
1.1584 + //console.log('contentEncoding %s', contentEncoding);
1.1585 + if( contentEncoding.equalsIgnoreCase("gzip") ||
1.1586 + contentEncoding.equalsIgnoreCase("decompress")){
1.1587 + //zipped content
1.1588 + binary = true;
1.1589 + outstream = new java.io.ByteArrayOutputStream();
1.1590 + buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
1.1591 + instream = new java.util.zip.GZIPInputStream(connection.getInputStream())
1.1592 + }else{
1.1593 + //this is a text file
1.1594 + outstream = new java.io.StringWriter();
1.1595 + buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024);
1.1596 + instream = new java.io.InputStreamReader(connection.getInputStream());
1.1597 + }
1.1598 + }catch(e){
1.1599 + if (connection.getResponseCode() == 404){
1.1600 + console.log('failed to open connection stream \n %s %s',
1.1601 + e.toString(), e);
1.1602 + }else{
1.1603 + console.log('failed to open connection stream \n %s %s',
1.1604 + e.toString(), e);
1.1605 + }
1.1606 + instream = connection.getErrorStream();
1.1607 + }
1.1608 +
1.1609 + while ((length = instream.read(buffer, 0, 1024)) != -1) {
1.1610 + outstream.write(buffer, 0, length);
1.1611 + }
1.1612 +
1.1613 + outstream.close();
1.1614 + instream.close();
1.1615 +
1.1616 + if(binary){
1.1617 + xhr.responseText = new String(outstream.toByteArray(), 'UTF-8')+'';
1.1618 + }else{
1.1619 + xhr.responseText = outstream.toString()+'';
1.1620 + }
1.1621 +
1.1622 + }
1.1623 + if(responseHandler){
1.1624 + //Envjs.debug('calling ajax response handler');
1.1625 + responseHandler();
1.1626 + }
1.1627 +};
1.1628 +
1.1629 +//Since we're running in rhino I guess we can safely assume
1.1630 +//java is 'enabled'. I'm sure this requires more thought
1.1631 +//than I've given it here
1.1632 +Envjs.javaEnabled = true;
1.1633 +
1.1634 +Envjs.homedir = java.lang.System.getProperty("user.home");
1.1635 +Envjs.tmpdir = java.lang.System.getProperty("java.io.tmpdir");
1.1636 +Envjs.os_name = java.lang.System.getProperty("os.name");
1.1637 +Envjs.os_arch = java.lang.System.getProperty("os.arch");
1.1638 +Envjs.os_version = java.lang.System.getProperty("os.version");
1.1639 +Envjs.lang = java.lang.System.getProperty("user.lang");
1.1640 +
1.1641 +
1.1642 +/**
1.1643 + *
1.1644 + * @param {Object} frameElement
1.1645 + * @param {Object} url
1.1646 + */
1.1647 +Envjs.loadFrame = function(frame, url){
1.1648 + try {
1.1649 + if(frame.contentWindow){
1.1650 + //mark for garbage collection
1.1651 + frame.contentWindow = null;
1.1652 + }
1.1653 +
1.1654 + //create a new scope for the window proxy
1.1655 + frame.contentWindow = Envjs.proxy();
1.1656 + new Window(frame.contentWindow, window);
1.1657 +
1.1658 + //I dont think frames load asynchronously in firefox
1.1659 + //and I think the tests have verified this but for
1.1660 + //some reason I'm less than confident... Are there cases?
1.1661 + frame.contentDocument = frame.contentWindow.document;
1.1662 + frame.contentDocument.async = false;
1.1663 + if(url){
1.1664 + //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
1.1665 + frame.contentWindow.location = url;
1.1666 + }
1.1667 + } catch(e) {
1.1668 + console.log("failed to load frame content: from %s %s", url, e);
1.1669 + }
1.1670 +};
1.1671 +
1.1672 +/**
1.1673 + * unloadFrame
1.1674 + * @param {Object} frame
1.1675 + */
1.1676 +Envjs.unloadFrame = function(frame){
1.1677 + var all, length, i;
1.1678 + try{
1.1679 + //TODO: probably self-referencing structures within a document tree
1.1680 + //preventing it from being entirely garbage collected once orphaned.
1.1681 + //Should have code to walk tree and break all links between contained
1.1682 + //objects.
1.1683 + frame.contentDocument = null;
1.1684 + if(frame.contentWindow){
1.1685 + frame.contentWindow.close();
1.1686 + }
1.1687 + gc();
1.1688 + }catch(e){
1.1689 + console.log(e);
1.1690 + }
1.1691 +};
1.1692 +
1.1693 +/**
1.1694 + * Makes an object window-like by proxying object accessors
1.1695 + * @param {Object} scope
1.1696 + * @param {Object} parent
1.1697 + */
1.1698 +Envjs.proxy = function(scope, parent) {
1.1699 + try{
1.1700 + if(scope+'' == '[object global]'){
1.1701 + return scope
1.1702 + }else{
1.1703 + return __context__.createGlobal();
1.1704 + }
1.1705 + }catch(e){
1.1706 + console.log('failed to init standard objects %s %s \n%s', scope, parent, e);
1.1707 + }
1.1708 +
1.1709 +};
1.1710 +
1.1711 +/**
1.1712 + * @author john resig & the envjs team
1.1713 + * @uri http://www.envjs.com/
1.1714 + * @copyright 2008-2010
1.1715 + * @license MIT
1.1716 + */
1.1717 +//CLOSURE_END
1.1718 +}());
1.1719 +
1.1720 +/**
1.1721 + * @author envjs team
1.1722 + */
1.1723 +var Console,
1.1724 + console;
1.1725 +
1.1726 +/*
1.1727 + * Envjs console.1.2.13
1.1728 + * Pure JavaScript Browser Environment
1.1729 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.1730 + * Copyright 2008-2010 John Resig, under the MIT License
1.1731 + */
1.1732 +
1.1733 +//CLOSURE_START
1.1734 +(function(){
1.1735 +
1.1736 +
1.1737 +
1.1738 +
1.1739 +
1.1740 +/**
1.1741 + * @author envjs team
1.1742 + * borrowed 99%-ish with love from firebug-lite
1.1743 + *
1.1744 + * http://wiki.commonjs.org/wiki/Console
1.1745 + */
1.1746 +Console = function(module){
1.1747 + var $level,
1.1748 + $logger,
1.1749 + $null = function(){};
1.1750 +
1.1751 +
1.1752 + if(Envjs[module] && Envjs[module].loglevel){
1.1753 + $level = Envjs.module.loglevel;
1.1754 + $logger = {
1.1755 + log: function(level){
1.1756 + logFormatted(arguments, (module)+" ");
1.1757 + },
1.1758 + debug: $level>1 ? $null: function() {
1.1759 + logFormatted(arguments, (module)+" debug");
1.1760 + },
1.1761 + info: $level>2 ? $null:function(){
1.1762 + logFormatted(arguments, (module)+" info");
1.1763 + },
1.1764 + warn: $level>3 ? $null:function(){
1.1765 + logFormatted(arguments, (module)+" warning");
1.1766 + },
1.1767 + error: $level>4 ? $null:function(){
1.1768 + logFormatted(arguments, (module)+" error");
1.1769 + }
1.1770 + };
1.1771 + } else {
1.1772 + $logger = {
1.1773 + log: function(level){
1.1774 + logFormatted(arguments, "");
1.1775 + },
1.1776 + debug: $null,
1.1777 + info: $null,
1.1778 + warn: $null,
1.1779 + error: $null
1.1780 + };
1.1781 + }
1.1782 +
1.1783 + return $logger;
1.1784 +};
1.1785 +
1.1786 +console = new Console("console",1);
1.1787 +
1.1788 +function logFormatted(objects, className)
1.1789 +{
1.1790 + var html = [];
1.1791 +
1.1792 + var format = objects[0];
1.1793 + var objIndex = 0;
1.1794 +
1.1795 + if (typeof(format) != "string")
1.1796 + {
1.1797 + format = "";
1.1798 + objIndex = -1;
1.1799 + }
1.1800 +
1.1801 + var parts = parseFormat(format);
1.1802 + for (var i = 0; i < parts.length; ++i)
1.1803 + {
1.1804 + var part = parts[i];
1.1805 + if (part && typeof(part) == "object")
1.1806 + {
1.1807 + var object = objects[++objIndex];
1.1808 + part.appender(object, html);
1.1809 + }
1.1810 + else {
1.1811 + appendText(part, html);
1.1812 + }
1.1813 + }
1.1814 +
1.1815 + for (var i = objIndex+1; i < objects.length; ++i)
1.1816 + {
1.1817 + appendText(" ", html);
1.1818 +
1.1819 + var object = objects[i];
1.1820 + if (typeof(object) == "string") {
1.1821 + appendText(object, html);
1.1822 + } else {
1.1823 + appendObject(object, html);
1.1824 + }
1.1825 + }
1.1826 +
1.1827 + Envjs.log(html.join(' '));
1.1828 +}
1.1829 +
1.1830 +function parseFormat(format)
1.1831 +{
1.1832 + var parts = [];
1.1833 +
1.1834 + var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
1.1835 + var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
1.1836 +
1.1837 + for (var m = reg.exec(format); m; m = reg.exec(format))
1.1838 + {
1.1839 + var type = m[8] ? m[8] : m[5];
1.1840 + var appender = type in appenderMap ? appenderMap[type] : appendObject;
1.1841 + var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
1.1842 +
1.1843 + parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
1.1844 + parts.push({appender: appender, precision: precision});
1.1845 +
1.1846 + format = format.substr(m.index+m[0].length);
1.1847 + }
1.1848 +
1.1849 + parts.push(format);
1.1850 +
1.1851 + return parts;
1.1852 +}
1.1853 +
1.1854 +function escapeHTML(value)
1.1855 +{
1.1856 + return value;
1.1857 +}
1.1858 +
1.1859 +function objectToString(object)
1.1860 +{
1.1861 + try
1.1862 + {
1.1863 + return object+"";
1.1864 + }
1.1865 + catch (exc)
1.1866 + {
1.1867 + return null;
1.1868 + }
1.1869 +}
1.1870 +
1.1871 +// ********************************************************************************************
1.1872 +
1.1873 +function appendText(object, html)
1.1874 +{
1.1875 + html.push(escapeHTML(objectToString(object)));
1.1876 +}
1.1877 +
1.1878 +function appendNull(object, html)
1.1879 +{
1.1880 + html.push(escapeHTML(objectToString(object)));
1.1881 +}
1.1882 +
1.1883 +function appendString(object, html)
1.1884 +{
1.1885 + html.push(escapeHTML(objectToString(object)));
1.1886 +}
1.1887 +
1.1888 +function appendInteger(object, html)
1.1889 +{
1.1890 + html.push(escapeHTML(objectToString(object)));
1.1891 +}
1.1892 +
1.1893 +function appendFloat(object, html)
1.1894 +{
1.1895 + html.push(escapeHTML(objectToString(object)));
1.1896 +}
1.1897 +
1.1898 +function appendFunction(object, html)
1.1899 +{
1.1900 + var reName = /function ?(.*?)\(/;
1.1901 + var m = reName.exec(objectToString(object));
1.1902 + var name = m ? m[1] : "function";
1.1903 + html.push(escapeHTML(name));
1.1904 +}
1.1905 +
1.1906 +function appendObject(object, html)
1.1907 +{
1.1908 + try
1.1909 + {
1.1910 + if (object == undefined) {
1.1911 + appendNull("undefined", html);
1.1912 + } else if (object == null) {
1.1913 + appendNull("null", html);
1.1914 + } else if (typeof object == "string") {
1.1915 + appendString(object, html);
1.1916 + } else if (typeof object == "number") {
1.1917 + appendInteger(object, html);
1.1918 + } else if (typeof object == "function") {
1.1919 + appendFunction(object, html);
1.1920 + } else if (object.nodeType == 1) {
1.1921 + appendSelector(object, html);
1.1922 + } else if (typeof object == "object") {
1.1923 + appendObjectFormatted(object, html);
1.1924 + } else {
1.1925 + appendText(object, html);
1.1926 + }
1.1927 + }
1.1928 + catch (exc)
1.1929 + {
1.1930 + }
1.1931 +}
1.1932 +
1.1933 +function appendObjectFormatted(object, html)
1.1934 +{
1.1935 + var text = objectToString(object);
1.1936 + var reObject = /\[object (.*?)\]/;
1.1937 +
1.1938 + var m = reObject.exec(text);
1.1939 + html.push( m ? m[1] : text);
1.1940 +}
1.1941 +
1.1942 +function appendSelector(object, html)
1.1943 +{
1.1944 +
1.1945 + html.push(escapeHTML(object.nodeName.toLowerCase()));
1.1946 + if (object.id) {
1.1947 + html.push(escapeHTML(object.id));
1.1948 + }
1.1949 + if (object.className) {
1.1950 + html.push(escapeHTML(object.className));
1.1951 + }
1.1952 +}
1.1953 +
1.1954 +function appendNode(node, html)
1.1955 +{
1.1956 + if (node.nodeType == 1)
1.1957 + {
1.1958 + html.push( node.nodeName.toLowerCase());
1.1959 +
1.1960 + for (var i = 0; i < node.attributes.length; ++i)
1.1961 + {
1.1962 + var attr = node.attributes[i];
1.1963 + if (!attr.specified) {
1.1964 + continue;
1.1965 + }
1.1966 +
1.1967 + html.push( attr.nodeName.toLowerCase(),escapeHTML(attr.nodeValue));
1.1968 + }
1.1969 +
1.1970 + if (node.firstChild)
1.1971 + {
1.1972 + for (var child = node.firstChild; child; child = child.nextSibling) {
1.1973 + appendNode(child, html);
1.1974 + }
1.1975 +
1.1976 + html.push( node.nodeName.toLowerCase());
1.1977 + }
1.1978 + }
1.1979 + else if (node.nodeType === 3)
1.1980 + {
1.1981 + html.push(escapeHTML(node.nodeValue));
1.1982 + }
1.1983 +};
1.1984 +
1.1985 +/**
1.1986 + * @author john resig & the envjs team
1.1987 + * @uri http://www.envjs.com/
1.1988 + * @copyright 2008-2010
1.1989 + * @license MIT
1.1990 + */
1.1991 +//CLOSURE_END
1.1992 +}());
1.1993 +/*
1.1994 + * Envjs dom.1.2.13
1.1995 + * Pure JavaScript Browser Environment
1.1996 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.1997 + * Copyright 2008-2010 John Resig, under the MIT License
1.1998 + *
1.1999 + * Parts of the implementation were originally written by:\
1.2000 + * and Jon van Noort (jon@webarcana.com.au) \
1.2001 + * and David Joham (djoham@yahoo.com)",\
1.2002 + * and Scott Severtson
1.2003 + *
1.2004 + * This file simply provides the global definitions we need to \
1.2005 + * be able to correctly implement to core browser DOM interfaces."
1.2006 + */
1.2007 +
1.2008 +var Attr,
1.2009 + CDATASection,
1.2010 + CharacterData,
1.2011 + Comment,
1.2012 + Document,
1.2013 + DocumentFragment,
1.2014 + DocumentType,
1.2015 + DOMException,
1.2016 + DOMImplementation,
1.2017 + Element,
1.2018 + Entity,
1.2019 + EntityReference,
1.2020 + NamedNodeMap,
1.2021 + Namespace,
1.2022 + Node,
1.2023 + NodeList,
1.2024 + Notation,
1.2025 + ProcessingInstruction,
1.2026 + Text,
1.2027 + Range,
1.2028 + XMLSerializer,
1.2029 + DOMParser;
1.2030 +
1.2031 +
1.2032 +
1.2033 +/*
1.2034 + * Envjs dom.1.2.13
1.2035 + * Pure JavaScript Browser Environment
1.2036 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.2037 + * Copyright 2008-2010 John Resig, under the MIT License
1.2038 + */
1.2039 +
1.2040 +//CLOSURE_START
1.2041 +(function(){
1.2042 +
1.2043 +
1.2044 +
1.2045 +
1.2046 +
1.2047 +/**
1.2048 + * @author john resig
1.2049 + */
1.2050 +// Helper method for extending one object with another.
1.2051 +function __extend__(a,b) {
1.2052 + for ( var i in b ) {
1.2053 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.2054 + if ( g || s ) {
1.2055 + if ( g ) { a.__defineGetter__(i, g); }
1.2056 + if ( s ) { a.__defineSetter__(i, s); }
1.2057 + } else {
1.2058 + a[i] = b[i];
1.2059 + }
1.2060 + } return a;
1.2061 +}
1.2062 +
1.2063 +/**
1.2064 + * @author john resig
1.2065 + */
1.2066 +//from jQuery
1.2067 +function __setArray__( target, array ) {
1.2068 + // Resetting the length to 0, then using the native Array push
1.2069 + // is a super-fast way to populate an object with array-like properties
1.2070 + target.length = 0;
1.2071 + Array.prototype.push.apply( target, array );
1.2072 +}
1.2073 +
1.2074 +/**
1.2075 + * @class NodeList -
1.2076 + * provides the abstraction of an ordered collection of nodes
1.2077 + *
1.2078 + * @param ownerDocument : Document - the ownerDocument
1.2079 + * @param parentNode : Node - the node that the NodeList is attached to (or null)
1.2080 + */
1.2081 +NodeList = function(ownerDocument, parentNode) {
1.2082 + this.length = 0;
1.2083 + this.parentNode = parentNode;
1.2084 + this.ownerDocument = ownerDocument;
1.2085 + this._readonly = false;
1.2086 + __setArray__(this, []);
1.2087 +};
1.2088 +
1.2089 +__extend__(NodeList.prototype, {
1.2090 + item : function(index) {
1.2091 + var ret = null;
1.2092 + if ((index >= 0) && (index < this.length)) {
1.2093 + // bounds check
1.2094 + ret = this[index];
1.2095 + }
1.2096 + // if the index is out of bounds, default value null is returned
1.2097 + return ret;
1.2098 + },
1.2099 + get xml() {
1.2100 + var ret = "",
1.2101 + i;
1.2102 +
1.2103 + // create string containing the concatenation of the string values of each child
1.2104 + for (i=0; i < this.length; i++) {
1.2105 + if(this[i]){
1.2106 + if(this[i].nodeType == Node.TEXT_NODE && i>0 &&
1.2107 + this[i-1].nodeType == Node.TEXT_NODE){
1.2108 + //add a single space between adjacent text nodes
1.2109 + ret += " "+this[i].xml;
1.2110 + }else{
1.2111 + ret += this[i].xml;
1.2112 + }
1.2113 + }
1.2114 + }
1.2115 + return ret;
1.2116 + },
1.2117 + toArray: function () {
1.2118 + var children = [],
1.2119 + i;
1.2120 + for ( i=0; i < this.length; i++) {
1.2121 + children.push (this[i]);
1.2122 + }
1.2123 + return children;
1.2124 + },
1.2125 + toString: function(){
1.2126 + return "[object NodeList]";
1.2127 + }
1.2128 +});
1.2129 +
1.2130 +
1.2131 +/**
1.2132 + * @method __findItemIndex__
1.2133 + * find the item index of the node
1.2134 + * @author Jon van Noort (jon@webarcana.com.au)
1.2135 + * @param node : Node
1.2136 + * @return : int
1.2137 + */
1.2138 +var __findItemIndex__ = function (nodelist, node) {
1.2139 + var ret = -1, i;
1.2140 + for (i=0; i<nodelist.length; i++) {
1.2141 + // compare id to each node's _id
1.2142 + if (nodelist[i] === node) {
1.2143 + // found it!
1.2144 + ret = i;
1.2145 + break;
1.2146 + }
1.2147 + }
1.2148 + // if node is not found, default value -1 is returned
1.2149 + return ret;
1.2150 +};
1.2151 +
1.2152 +/**
1.2153 + * @method __insertBefore__
1.2154 + * insert the specified Node into the NodeList before the specified index
1.2155 + * Used by Node.insertBefore(). Note: Node.insertBefore() is responsible
1.2156 + * for Node Pointer surgery __insertBefore__ simply modifies the internal
1.2157 + * data structure (Array).
1.2158 + * @param newChild : Node - the Node to be inserted
1.2159 + * @param refChildIndex : int - the array index to insert the Node before
1.2160 + */
1.2161 +var __insertBefore__ = function(nodelist, newChild, refChildIndex) {
1.2162 + if ((refChildIndex >= 0) && (refChildIndex <= nodelist.length)) {
1.2163 + // bounds check
1.2164 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2165 + // node is a DocumentFragment
1.2166 + // append the children of DocumentFragment
1.2167 + Array.prototype.splice.apply(nodelist,
1.2168 + [refChildIndex, 0].concat(newChild.childNodes.toArray()));
1.2169 + }
1.2170 + else {
1.2171 + // append the newChild
1.2172 + Array.prototype.splice.apply(nodelist,[refChildIndex, 0, newChild]);
1.2173 + }
1.2174 + }
1.2175 +};
1.2176 +
1.2177 +/**
1.2178 + * @method __replaceChild__
1.2179 + * replace the specified Node in the NodeList at the specified index
1.2180 + * Used by Node.replaceChild(). Note: Node.replaceChild() is responsible
1.2181 + * for Node Pointer surgery __replaceChild__ simply modifies the internal
1.2182 + * data structure (Array).
1.2183 + *
1.2184 + * @param newChild : Node - the Node to be inserted
1.2185 + * @param refChildIndex : int - the array index to hold the Node
1.2186 + */
1.2187 +var __replaceChild__ = function(nodelist, newChild, refChildIndex) {
1.2188 + var ret = null;
1.2189 +
1.2190 + // bounds check
1.2191 + if ((refChildIndex >= 0) && (refChildIndex < nodelist.length)) {
1.2192 + // preserve old child for return
1.2193 + ret = nodelist[refChildIndex];
1.2194 +
1.2195 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2196 + // node is a DocumentFragment
1.2197 + // get array containing children prior to refChild
1.2198 + Array.prototype.splice.apply(nodelist,
1.2199 + [refChildIndex, 1].concat(newChild.childNodes.toArray()));
1.2200 + }
1.2201 + else {
1.2202 + // simply replace node in array (links between Nodes are
1.2203 + // made at higher level)
1.2204 + nodelist[refChildIndex] = newChild;
1.2205 + }
1.2206 + }
1.2207 + // return replaced node
1.2208 + return ret;
1.2209 +};
1.2210 +
1.2211 +/**
1.2212 + * @method __removeChild__
1.2213 + * remove the specified Node in the NodeList at the specified index
1.2214 + * Used by Node.removeChild(). Note: Node.removeChild() is responsible
1.2215 + * for Node Pointer surgery __removeChild__ simply modifies the internal
1.2216 + * data structure (Array).
1.2217 + * @param refChildIndex : int - the array index holding the Node to be removed
1.2218 + */
1.2219 +var __removeChild__ = function(nodelist, refChildIndex) {
1.2220 + var ret = null;
1.2221 +
1.2222 + if (refChildIndex > -1) {
1.2223 + // found it!
1.2224 + // return removed node
1.2225 + ret = nodelist[refChildIndex];
1.2226 +
1.2227 + // rebuild array without removed child
1.2228 + Array.prototype.splice.apply(nodelist,[refChildIndex, 1]);
1.2229 + }
1.2230 + // return removed node
1.2231 + return ret;
1.2232 +};
1.2233 +
1.2234 +/**
1.2235 + * @method __appendChild__
1.2236 + * append the specified Node to the NodeList. Used by Node.appendChild().
1.2237 + * Note: Node.appendChild() is responsible for Node Pointer surgery
1.2238 + * __appendChild__ simply modifies the internal data structure (Array).
1.2239 + * @param newChild : Node - the Node to be inserted
1.2240 + */
1.2241 +var __appendChild__ = function(nodelist, newChild) {
1.2242 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2243 + // node is a DocumentFragment
1.2244 + // append the children of DocumentFragment
1.2245 + Array.prototype.push.apply(nodelist, newChild.childNodes.toArray() );
1.2246 + } else {
1.2247 + // simply add node to array (links between Nodes are made at higher level)
1.2248 + Array.prototype.push.apply(nodelist, [newChild]);
1.2249 + }
1.2250 +
1.2251 +};
1.2252 +
1.2253 +/**
1.2254 + * @method __cloneNodes__ -
1.2255 + * Returns a NodeList containing clones of the Nodes in this NodeList
1.2256 + * @param deep : boolean -
1.2257 + * If true, recursively clone the subtree under each of the nodes;
1.2258 + * if false, clone only the nodes themselves (and their attributes,
1.2259 + * if it is an Element).
1.2260 + * @param parentNode : Node - the new parent of the cloned NodeList
1.2261 + * @return : NodeList - NodeList containing clones of the Nodes in this NodeList
1.2262 + */
1.2263 +var __cloneNodes__ = function(nodelist, deep, parentNode) {
1.2264 + var cloneNodeList = new NodeList(nodelist.ownerDocument, parentNode);
1.2265 +
1.2266 + // create list containing clones of each child
1.2267 + for (var i=0; i < nodelist.length; i++) {
1.2268 + __appendChild__(cloneNodeList, nodelist[i].cloneNode(deep));
1.2269 + }
1.2270 +
1.2271 + return cloneNodeList;
1.2272 +};
1.2273 +
1.2274 +
1.2275 +var __ownerDocument__ = function(node){
1.2276 + return (node.nodeType == Node.DOCUMENT_NODE)?node:node.ownerDocument;
1.2277 +};
1.2278 +
1.2279 +/**
1.2280 + * @class Node -
1.2281 + * The Node interface is the primary datatype for the entire
1.2282 + * Document Object Model. It represents a single node in the
1.2283 + * document tree.
1.2284 + * @param ownerDocument : Document - The Document object associated with this node.
1.2285 + */
1.2286 +
1.2287 +Node = function(ownerDocument) {
1.2288 + this.baseURI = 'about:blank';
1.2289 + this.namespaceURI = null;
1.2290 + this.nodeName = "";
1.2291 + this.nodeValue = null;
1.2292 +
1.2293 + // A NodeList that contains all children of this node. If there are no
1.2294 + // children, this is a NodeList containing no nodes. The content of the
1.2295 + // returned NodeList is "live" in the sense that, for instance, changes to
1.2296 + // the children of the node object that it was created from are immediately
1.2297 + // reflected in the nodes returned by the NodeList accessors; it is not a
1.2298 + // static snapshot of the content of the node. This is true for every
1.2299 + // NodeList, including the ones returned by the getElementsByTagName method.
1.2300 + this.childNodes = new NodeList(ownerDocument, this);
1.2301 +
1.2302 + // The first child of this node. If there is no such node, this is null
1.2303 + this.firstChild = null;
1.2304 + // The last child of this node. If there is no such node, this is null.
1.2305 + this.lastChild = null;
1.2306 + // The node immediately preceding this node. If there is no such node,
1.2307 + // this is null.
1.2308 + this.previousSibling = null;
1.2309 + // The node immediately following this node. If there is no such node,
1.2310 + // this is null.
1.2311 + this.nextSibling = null;
1.2312 +
1.2313 + this.attributes = null;
1.2314 + // The namespaces in scope for this node
1.2315 + this._namespaces = new NamespaceNodeMap(ownerDocument, this);
1.2316 + this._readonly = false;
1.2317 +
1.2318 + //IMPORTANT: These must come last so rhino will not iterate parent
1.2319 + // properties before child properties. (qunit.equiv issue)
1.2320 +
1.2321 + // The parent of this node. All nodes, except Document, DocumentFragment,
1.2322 + // and Attr may have a parent. However, if a node has just been created
1.2323 + // and not yet added to the tree, or if it has been removed from the tree,
1.2324 + // this is null
1.2325 + this.parentNode = null;
1.2326 + // The Document object associated with this node
1.2327 + this.ownerDocument = ownerDocument;
1.2328 +
1.2329 +};
1.2330 +
1.2331 +// nodeType constants
1.2332 +Node.ELEMENT_NODE = 1;
1.2333 +Node.ATTRIBUTE_NODE = 2;
1.2334 +Node.TEXT_NODE = 3;
1.2335 +Node.CDATA_SECTION_NODE = 4;
1.2336 +Node.ENTITY_REFERENCE_NODE = 5;
1.2337 +Node.ENTITY_NODE = 6;
1.2338 +Node.PROCESSING_INSTRUCTION_NODE = 7;
1.2339 +Node.COMMENT_NODE = 8;
1.2340 +Node.DOCUMENT_NODE = 9;
1.2341 +Node.DOCUMENT_TYPE_NODE = 10;
1.2342 +Node.DOCUMENT_FRAGMENT_NODE = 11;
1.2343 +Node.NOTATION_NODE = 12;
1.2344 +Node.NAMESPACE_NODE = 13;
1.2345 +
1.2346 +Node.DOCUMENT_POSITION_EQUAL = 0x00;
1.2347 +Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;
1.2348 +Node.DOCUMENT_POSITION_PRECEDING = 0x02;
1.2349 +Node.DOCUMENT_POSITION_FOLLOWING = 0x04;
1.2350 +Node.DOCUMENT_POSITION_CONTAINS = 0x08;
1.2351 +Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;
1.2352 +Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
1.2353 +
1.2354 +
1.2355 +__extend__(Node.prototype, {
1.2356 + get localName(){
1.2357 + return this.prefix?
1.2358 + this.nodeName.substring(this.prefix.length+1, this.nodeName.length):
1.2359 + this.nodeName;
1.2360 + },
1.2361 + get prefix(){
1.2362 + return this.nodeName.split(':').length>1?
1.2363 + this.nodeName.split(':')[0]:
1.2364 + null;
1.2365 + },
1.2366 + set prefix(value){
1.2367 + if(value === null){
1.2368 + this.nodeName = this.localName;
1.2369 + }else{
1.2370 + this.nodeName = value+':'+this.localName;
1.2371 + }
1.2372 + },
1.2373 + hasAttributes : function() {
1.2374 + if (this.attributes.length == 0) {
1.2375 + return false;
1.2376 + }else{
1.2377 + return true;
1.2378 + }
1.2379 + },
1.2380 + get textContent(){
1.2381 + return __recursivelyGatherText__(this);
1.2382 + },
1.2383 + set textContent(newText){
1.2384 + while(this.firstChild != null){
1.2385 + this.removeChild( this.firstChild );
1.2386 + }
1.2387 + var text = this.ownerDocument.createTextNode(newText);
1.2388 + this.appendChild(text);
1.2389 + },
1.2390 + insertBefore : function(newChild, refChild) {
1.2391 + var prevNode;
1.2392 +
1.2393 + if(newChild==null){
1.2394 + return newChild;
1.2395 + }
1.2396 + if(refChild==null){
1.2397 + this.appendChild(newChild);
1.2398 + return this.newChild;
1.2399 + }
1.2400 +
1.2401 + // test for exceptions
1.2402 + if (__ownerDocument__(this).implementation.errorChecking) {
1.2403 + // throw Exception if Node is readonly
1.2404 + if (this._readonly) {
1.2405 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.2406 + }
1.2407 +
1.2408 + // throw Exception if newChild was not created by this Document
1.2409 + if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
1.2410 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
1.2411 + }
1.2412 +
1.2413 + // throw Exception if the node is an ancestor
1.2414 + if (__isAncestor__(this, newChild)) {
1.2415 + throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
1.2416 + }
1.2417 + }
1.2418 +
1.2419 + // if refChild is specified, insert before it
1.2420 + if (refChild) {
1.2421 + // find index of refChild
1.2422 + var itemIndex = __findItemIndex__(this.childNodes, refChild);
1.2423 + // throw Exception if there is no child node with this id
1.2424 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
1.2425 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
1.2426 + }
1.2427 +
1.2428 + // if the newChild is already in the tree,
1.2429 + var newChildParent = newChild.parentNode;
1.2430 + if (newChildParent) {
1.2431 + // remove it
1.2432 + newChildParent.removeChild(newChild);
1.2433 + }
1.2434 +
1.2435 + // insert newChild into childNodes
1.2436 + __insertBefore__(this.childNodes, newChild, itemIndex);
1.2437 +
1.2438 + // do node pointer surgery
1.2439 + prevNode = refChild.previousSibling;
1.2440 +
1.2441 + // handle DocumentFragment
1.2442 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2443 + if (newChild.childNodes.length > 0) {
1.2444 + // set the parentNode of DocumentFragment's children
1.2445 + for (var ind = 0; ind < newChild.childNodes.length; ind++) {
1.2446 + newChild.childNodes[ind].parentNode = this;
1.2447 + }
1.2448 +
1.2449 + // link refChild to last child of DocumentFragment
1.2450 + refChild.previousSibling = newChild.childNodes[newChild.childNodes.length-1];
1.2451 + }
1.2452 + }else {
1.2453 + // set the parentNode of the newChild
1.2454 + newChild.parentNode = this;
1.2455 + // link refChild to newChild
1.2456 + refChild.previousSibling = newChild;
1.2457 + }
1.2458 +
1.2459 + }else {
1.2460 + // otherwise, append to end
1.2461 + prevNode = this.lastChild;
1.2462 + this.appendChild(newChild);
1.2463 + }
1.2464 +
1.2465 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2466 + // do node pointer surgery for DocumentFragment
1.2467 + if (newChild.childNodes.length > 0) {
1.2468 + if (prevNode) {
1.2469 + prevNode.nextSibling = newChild.childNodes[0];
1.2470 + }else {
1.2471 + // this is the first child in the list
1.2472 + this.firstChild = newChild.childNodes[0];
1.2473 + }
1.2474 + newChild.childNodes[0].previousSibling = prevNode;
1.2475 + newChild.childNodes[newChild.childNodes.length-1].nextSibling = refChild;
1.2476 + }
1.2477 + }else {
1.2478 + // do node pointer surgery for newChild
1.2479 + if (prevNode) {
1.2480 + prevNode.nextSibling = newChild;
1.2481 + }else {
1.2482 + // this is the first child in the list
1.2483 + this.firstChild = newChild;
1.2484 + }
1.2485 + newChild.previousSibling = prevNode;
1.2486 + newChild.nextSibling = refChild;
1.2487 + }
1.2488 +
1.2489 + return newChild;
1.2490 + },
1.2491 + replaceChild : function(newChild, oldChild) {
1.2492 + var ret = null;
1.2493 +
1.2494 + if(newChild==null || oldChild==null){
1.2495 + return oldChild;
1.2496 + }
1.2497 +
1.2498 + // test for exceptions
1.2499 + if (__ownerDocument__(this).implementation.errorChecking) {
1.2500 + // throw Exception if Node is readonly
1.2501 + if (this._readonly) {
1.2502 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.2503 + }
1.2504 +
1.2505 + // throw Exception if newChild was not created by this Document
1.2506 + if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
1.2507 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
1.2508 + }
1.2509 +
1.2510 + // throw Exception if the node is an ancestor
1.2511 + if (__isAncestor__(this, newChild)) {
1.2512 + throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
1.2513 + }
1.2514 + }
1.2515 +
1.2516 + // get index of oldChild
1.2517 + var index = __findItemIndex__(this.childNodes, oldChild);
1.2518 +
1.2519 + // throw Exception if there is no child node with this id
1.2520 + if (__ownerDocument__(this).implementation.errorChecking && (index < 0)) {
1.2521 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
1.2522 + }
1.2523 +
1.2524 + // if the newChild is already in the tree,
1.2525 + var newChildParent = newChild.parentNode;
1.2526 + if (newChildParent) {
1.2527 + // remove it
1.2528 + newChildParent.removeChild(newChild);
1.2529 + }
1.2530 +
1.2531 + // add newChild to childNodes
1.2532 + ret = __replaceChild__(this.childNodes,newChild, index);
1.2533 +
1.2534 +
1.2535 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2536 + // do node pointer surgery for Document Fragment
1.2537 + if (newChild.childNodes.length > 0) {
1.2538 + for (var ind = 0; ind < newChild.childNodes.length; ind++) {
1.2539 + newChild.childNodes[ind].parentNode = this;
1.2540 + }
1.2541 +
1.2542 + if (oldChild.previousSibling) {
1.2543 + oldChild.previousSibling.nextSibling = newChild.childNodes[0];
1.2544 + } else {
1.2545 + this.firstChild = newChild.childNodes[0];
1.2546 + }
1.2547 +
1.2548 + if (oldChild.nextSibling) {
1.2549 + oldChild.nextSibling.previousSibling = newChild;
1.2550 + } else {
1.2551 + this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
1.2552 + }
1.2553 +
1.2554 + newChild.childNodes[0].previousSibling = oldChild.previousSibling;
1.2555 + newChild.childNodes[newChild.childNodes.length-1].nextSibling = oldChild.nextSibling;
1.2556 + }
1.2557 + } else {
1.2558 + // do node pointer surgery for newChild
1.2559 + newChild.parentNode = this;
1.2560 +
1.2561 + if (oldChild.previousSibling) {
1.2562 + oldChild.previousSibling.nextSibling = newChild;
1.2563 + }else{
1.2564 + this.firstChild = newChild;
1.2565 + }
1.2566 + if (oldChild.nextSibling) {
1.2567 + oldChild.nextSibling.previousSibling = newChild;
1.2568 + }else{
1.2569 + this.lastChild = newChild;
1.2570 + }
1.2571 + newChild.previousSibling = oldChild.previousSibling;
1.2572 + newChild.nextSibling = oldChild.nextSibling;
1.2573 + }
1.2574 +
1.2575 + return ret;
1.2576 + },
1.2577 + removeChild : function(oldChild) {
1.2578 + if(!oldChild){
1.2579 + return null;
1.2580 + }
1.2581 + // throw Exception if NamedNodeMap is readonly
1.2582 + if (__ownerDocument__(this).implementation.errorChecking &&
1.2583 + (this._readonly || oldChild._readonly)) {
1.2584 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.2585 + }
1.2586 +
1.2587 + // get index of oldChild
1.2588 + var itemIndex = __findItemIndex__(this.childNodes, oldChild);
1.2589 +
1.2590 + // throw Exception if there is no child node with this id
1.2591 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
1.2592 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
1.2593 + }
1.2594 +
1.2595 + // remove oldChild from childNodes
1.2596 + __removeChild__(this.childNodes, itemIndex);
1.2597 +
1.2598 + // do node pointer surgery
1.2599 + oldChild.parentNode = null;
1.2600 +
1.2601 + if (oldChild.previousSibling) {
1.2602 + oldChild.previousSibling.nextSibling = oldChild.nextSibling;
1.2603 + }else {
1.2604 + this.firstChild = oldChild.nextSibling;
1.2605 + }
1.2606 + if (oldChild.nextSibling) {
1.2607 + oldChild.nextSibling.previousSibling = oldChild.previousSibling;
1.2608 + }else {
1.2609 + this.lastChild = oldChild.previousSibling;
1.2610 + }
1.2611 +
1.2612 + oldChild.previousSibling = null;
1.2613 + oldChild.nextSibling = null;
1.2614 +
1.2615 + return oldChild;
1.2616 + },
1.2617 + appendChild : function(newChild) {
1.2618 + if(!newChild){
1.2619 + return null;
1.2620 + }
1.2621 + // test for exceptions
1.2622 + if (__ownerDocument__(this).implementation.errorChecking) {
1.2623 + // throw Exception if Node is readonly
1.2624 + if (this._readonly) {
1.2625 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.2626 + }
1.2627 +
1.2628 + // throw Exception if arg was not created by this Document
1.2629 + if (__ownerDocument__(this) != __ownerDocument__(this)) {
1.2630 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
1.2631 + }
1.2632 +
1.2633 + // throw Exception if the node is an ancestor
1.2634 + if (__isAncestor__(this, newChild)) {
1.2635 + throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
1.2636 + }
1.2637 + }
1.2638 +
1.2639 + // if the newChild is already in the tree,
1.2640 + var newChildParent = newChild.parentNode;
1.2641 + if (newChildParent) {
1.2642 + // remove it
1.2643 + //console.debug('removing node %s', newChild);
1.2644 + newChildParent.removeChild(newChild);
1.2645 + }
1.2646 +
1.2647 + // add newChild to childNodes
1.2648 + __appendChild__(this.childNodes, newChild);
1.2649 +
1.2650 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2651 + // do node pointer surgery for DocumentFragment
1.2652 + if (newChild.childNodes.length > 0) {
1.2653 + for (var ind = 0; ind < newChild.childNodes.length; ind++) {
1.2654 + newChild.childNodes[ind].parentNode = this;
1.2655 + }
1.2656 +
1.2657 + if (this.lastChild) {
1.2658 + this.lastChild.nextSibling = newChild.childNodes[0];
1.2659 + newChild.childNodes[0].previousSibling = this.lastChild;
1.2660 + this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
1.2661 + } else {
1.2662 + this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
1.2663 + this.firstChild = newChild.childNodes[0];
1.2664 + }
1.2665 + }
1.2666 + } else {
1.2667 + // do node pointer surgery for newChild
1.2668 + newChild.parentNode = this;
1.2669 + if (this.lastChild) {
1.2670 + this.lastChild.nextSibling = newChild;
1.2671 + newChild.previousSibling = this.lastChild;
1.2672 + this.lastChild = newChild;
1.2673 + } else {
1.2674 + this.lastChild = newChild;
1.2675 + this.firstChild = newChild;
1.2676 + }
1.2677 + }
1.2678 + return newChild;
1.2679 + },
1.2680 + hasChildNodes : function() {
1.2681 + return (this.childNodes.length > 0);
1.2682 + },
1.2683 + cloneNode: function(deep) {
1.2684 + // use importNode to clone this Node
1.2685 + //do not throw any exceptions
1.2686 + try {
1.2687 + return __ownerDocument__(this).importNode(this, deep);
1.2688 + } catch (e) {
1.2689 + //there shouldn't be any exceptions, but if there are, return null
1.2690 + // may want to warn: $debug("could not clone node: "+e.code);
1.2691 + return null;
1.2692 + }
1.2693 + },
1.2694 + normalize : function() {
1.2695 + var i;
1.2696 + var inode;
1.2697 + var nodesToRemove = new NodeList();
1.2698 +
1.2699 + if (this.nodeType == Node.ELEMENT_NODE || this.nodeType == Node.DOCUMENT_NODE) {
1.2700 + var adjacentTextNode = null;
1.2701 +
1.2702 + // loop through all childNodes
1.2703 + for(i = 0; i < this.childNodes.length; i++) {
1.2704 + inode = this.childNodes.item(i);
1.2705 +
1.2706 + if (inode.nodeType == Node.TEXT_NODE) {
1.2707 + // this node is a text node
1.2708 + if (inode.length < 1) {
1.2709 + // this text node is empty
1.2710 + // add this node to the list of nodes to be remove
1.2711 + __appendChild__(nodesToRemove, inode);
1.2712 + }else {
1.2713 + if (adjacentTextNode) {
1.2714 + // previous node was also text
1.2715 + adjacentTextNode.appendData(inode.data);
1.2716 + // merge the data in adjacent text nodes
1.2717 + // add this node to the list of nodes to be removed
1.2718 + __appendChild__(nodesToRemove, inode);
1.2719 + } else {
1.2720 + // remember this node for next cycle
1.2721 + adjacentTextNode = inode;
1.2722 + }
1.2723 + }
1.2724 + } else {
1.2725 + // (soon to be) previous node is not a text node
1.2726 + adjacentTextNode = null;
1.2727 + // normalize non Text childNodes
1.2728 + inode.normalize();
1.2729 + }
1.2730 + }
1.2731 +
1.2732 + // remove redundant Text Nodes
1.2733 + for(i = 0; i < nodesToRemove.length; i++) {
1.2734 + inode = nodesToRemove.item(i);
1.2735 + inode.parentNode.removeChild(inode);
1.2736 + }
1.2737 + }
1.2738 + },
1.2739 + isSupported : function(feature, version) {
1.2740 + // use Implementation.hasFeature to determine if this feature is supported
1.2741 + return __ownerDocument__(this).implementation.hasFeature(feature, version);
1.2742 + },
1.2743 + getElementsByTagName : function(tagname) {
1.2744 + // delegate to _getElementsByTagNameRecursive
1.2745 + // recurse childNodes
1.2746 + var nodelist = new NodeList(__ownerDocument__(this));
1.2747 + for (var i = 0; i < this.childNodes.length; i++) {
1.2748 + __getElementsByTagNameRecursive__(this.childNodes.item(i),
1.2749 + tagname,
1.2750 + nodelist);
1.2751 + }
1.2752 + return nodelist;
1.2753 + },
1.2754 + getElementsByTagNameNS : function(namespaceURI, localName) {
1.2755 + // delegate to _getElementsByTagNameNSRecursive
1.2756 + return __getElementsByTagNameNSRecursive__(this, namespaceURI, localName,
1.2757 + new NodeList(__ownerDocument__(this)));
1.2758 + },
1.2759 + importNode : function(importedNode, deep) {
1.2760 + var i;
1.2761 + var importNode;
1.2762 +
1.2763 + //there is no need to perform namespace checks since everything has already gone through them
1.2764 + //in order to have gotten into the DOM in the first place. The following line
1.2765 + //turns namespace checking off in ._isValidNamespace
1.2766 + __ownerDocument__(this).importing = true;
1.2767 +
1.2768 + if (importedNode.nodeType == Node.ELEMENT_NODE) {
1.2769 + if (!__ownerDocument__(this).implementation.namespaceAware) {
1.2770 + // create a local Element (with the name of the importedNode)
1.2771 + importNode = __ownerDocument__(this).createElement(importedNode.tagName);
1.2772 +
1.2773 + // create attributes matching those of the importedNode
1.2774 + for(i = 0; i < importedNode.attributes.length; i++) {
1.2775 + importNode.setAttribute(importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
1.2776 + }
1.2777 + } else {
1.2778 + // create a local Element (with the name & namespaceURI of the importedNode)
1.2779 + importNode = __ownerDocument__(this).createElementNS(importedNode.namespaceURI, importedNode.nodeName);
1.2780 +
1.2781 + // create attributes matching those of the importedNode
1.2782 + for(i = 0; i < importedNode.attributes.length; i++) {
1.2783 + importNode.setAttributeNS(importedNode.attributes.item(i).namespaceURI,
1.2784 + importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
1.2785 + }
1.2786 +
1.2787 + // create namespace definitions matching those of the importedNode
1.2788 + for(i = 0; i < importedNode._namespaces.length; i++) {
1.2789 + importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
1.2790 + importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
1.2791 + }
1.2792 + }
1.2793 + } else if (importedNode.nodeType == Node.ATTRIBUTE_NODE) {
1.2794 + if (!__ownerDocument__(this).implementation.namespaceAware) {
1.2795 + // create a local Attribute (with the name of the importedAttribute)
1.2796 + importNode = __ownerDocument__(this).createAttribute(importedNode.name);
1.2797 + } else {
1.2798 + // create a local Attribute (with the name & namespaceURI of the importedAttribute)
1.2799 + importNode = __ownerDocument__(this).createAttributeNS(importedNode.namespaceURI, importedNode.nodeName);
1.2800 +
1.2801 + // create namespace definitions matching those of the importedAttribute
1.2802 + for(i = 0; i < importedNode._namespaces.length; i++) {
1.2803 + importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
1.2804 + importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
1.2805 + }
1.2806 + }
1.2807 +
1.2808 + // set the value of the local Attribute to match that of the importedAttribute
1.2809 + importNode.value = importedNode.value;
1.2810 +
1.2811 + } else if (importedNode.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
1.2812 + // create a local DocumentFragment
1.2813 + importNode = __ownerDocument__(this).createDocumentFragment();
1.2814 + } else if (importedNode.nodeType == Node.NAMESPACE_NODE) {
1.2815 + // create a local NamespaceNode (with the same name & value as the importedNode)
1.2816 + importNode = __ownerDocument__(this).createNamespace(importedNode.nodeName);
1.2817 + importNode.value = importedNode.value;
1.2818 + } else if (importedNode.nodeType == Node.TEXT_NODE) {
1.2819 + // create a local TextNode (with the same data as the importedNode)
1.2820 + importNode = __ownerDocument__(this).createTextNode(importedNode.data);
1.2821 + } else if (importedNode.nodeType == Node.CDATA_SECTION_NODE) {
1.2822 + // create a local CDATANode (with the same data as the importedNode)
1.2823 + importNode = __ownerDocument__(this).createCDATASection(importedNode.data);
1.2824 + } else if (importedNode.nodeType == Node.PROCESSING_INSTRUCTION_NODE) {
1.2825 + // create a local ProcessingInstruction (with the same target & data as the importedNode)
1.2826 + importNode = __ownerDocument__(this).createProcessingInstruction(importedNode.target, importedNode.data);
1.2827 + } else if (importedNode.nodeType == Node.COMMENT_NODE) {
1.2828 + // create a local Comment (with the same data as the importedNode)
1.2829 + importNode = __ownerDocument__(this).createComment(importedNode.data);
1.2830 + } else { // throw Exception if nodeType is not supported
1.2831 + throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
1.2832 + }
1.2833 +
1.2834 + if (deep) {
1.2835 + // recurse childNodes
1.2836 + for(i = 0; i < importedNode.childNodes.length; i++) {
1.2837 + importNode.appendChild(__ownerDocument__(this).importNode(importedNode.childNodes.item(i), true));
1.2838 + }
1.2839 + }
1.2840 +
1.2841 + //reset importing
1.2842 + __ownerDocument__(this).importing = false;
1.2843 + return importNode;
1.2844 +
1.2845 + },
1.2846 + contains : function(node){
1.2847 + while(node && node != this ){
1.2848 + node = node.parentNode;
1.2849 + }
1.2850 + return !!node;
1.2851 + },
1.2852 + compareDocumentPosition : function(b){
1.2853 + //console.log("comparing document position %s %s", this, b);
1.2854 + var i,
1.2855 + length,
1.2856 + a = this,
1.2857 + parent,
1.2858 + aparents,
1.2859 + bparents;
1.2860 + //handle a couple simpler case first
1.2861 + if(a === b) {
1.2862 + return Node.DOCUMENT_POSITION_EQUAL;
1.2863 + }
1.2864 + if(a.ownerDocument !== b.ownerDocument) {
1.2865 + return Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|
1.2866 + Node.DOCUMENT_POSITION_FOLLOWING|
1.2867 + Node.DOCUMENT_POSITION_DISCONNECTED;
1.2868 + }
1.2869 + if(a.parentNode === b.parentNode){
1.2870 + length = a.parentNode.childNodes.length;
1.2871 + for(i=0;i<length;i++){
1.2872 + if(a.parentNode.childNodes[i] === a){
1.2873 + return Node.DOCUMENT_POSITION_FOLLOWING;
1.2874 + }else if(a.parentNode.childNodes[i] === b){
1.2875 + return Node.DOCUMENT_POSITION_PRECEDING;
1.2876 + }
1.2877 + }
1.2878 + }
1.2879 +
1.2880 + if(a.contains(b)) {
1.2881 + return Node.DOCUMENT_POSITION_CONTAINED_BY|
1.2882 + Node.DOCUMENT_POSITION_FOLLOWING;
1.2883 + }
1.2884 + if(b.contains(a)) {
1.2885 + return Node.DOCUMENT_POSITION_CONTAINS|
1.2886 + Node.DOCUMENT_POSITION_PRECEDING;
1.2887 + }
1.2888 + aparents = [];
1.2889 + parent = a.parentNode;
1.2890 + while(parent){
1.2891 + aparents[aparents.length] = parent;
1.2892 + parent = parent.parentNode;
1.2893 + }
1.2894 +
1.2895 + bparents = [];
1.2896 + parent = b.parentNode;
1.2897 + while(parent){
1.2898 + i = aparents.indexOf(parent);
1.2899 + if(i < 0){
1.2900 + bparents[bparents.length] = parent;
1.2901 + parent = parent.parentNode;
1.2902 + }else{
1.2903 + //i cant be 0 since we already checked for equal parentNode
1.2904 + if(bparents.length > aparents.length){
1.2905 + return Node.DOCUMENT_POSITION_FOLLOWING;
1.2906 + }else if(bparents.length < aparents.length){
1.2907 + return Node.DOCUMENT_POSITION_PRECEDING;
1.2908 + }else{
1.2909 + //common ancestor diverge point
1.2910 + if (i === 0) {
1.2911 + return Node.DOCUMENT_POSITION_FOLLOWING;
1.2912 + } else {
1.2913 + parent = aparents[i-1];
1.2914 + }
1.2915 + return parent.compareDocumentPosition(bparents.pop());
1.2916 + }
1.2917 + }
1.2918 + }
1.2919 +
1.2920 + return Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|
1.2921 + Node.DOCUMENT_POSITION_DISCONNECTED;
1.2922 +
1.2923 + },
1.2924 + toString : function() {
1.2925 + return '[object Node]';
1.2926 + }
1.2927 +
1.2928 +});
1.2929 +
1.2930 +
1.2931 +
1.2932 +/**
1.2933 + * @method __getElementsByTagNameRecursive__ - implements getElementsByTagName()
1.2934 + * @param elem : Element - The element which are checking and then recursing into
1.2935 + * @param tagname : string - The name of the tag to match on. The special value "*" matches all tags
1.2936 + * @param nodeList : NodeList - The accumulating list of matching nodes
1.2937 + *
1.2938 + * @return : NodeList
1.2939 + */
1.2940 +var __getElementsByTagNameRecursive__ = function (elem, tagname, nodeList) {
1.2941 +
1.2942 + if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
1.2943 +
1.2944 + if(elem.nodeType !== Node.DOCUMENT_NODE &&
1.2945 + ((elem.nodeName.toUpperCase() == tagname.toUpperCase()) ||
1.2946 + (tagname == "*")) ){
1.2947 + // add matching node to nodeList
1.2948 + __appendChild__(nodeList, elem);
1.2949 + }
1.2950 +
1.2951 + // recurse childNodes
1.2952 + for(var i = 0; i < elem.childNodes.length; i++) {
1.2953 + nodeList = __getElementsByTagNameRecursive__(elem.childNodes.item(i), tagname, nodeList);
1.2954 + }
1.2955 + }
1.2956 +
1.2957 + return nodeList;
1.2958 +};
1.2959 +
1.2960 +/**
1.2961 + * @method __getElementsByTagNameNSRecursive__
1.2962 + * implements getElementsByTagName()
1.2963 + *
1.2964 + * @param elem : Element - The element which are checking and then recursing into
1.2965 + * @param namespaceURI : string - the namespace URI of the required node
1.2966 + * @param localName : string - the local name of the required node
1.2967 + * @param nodeList : NodeList - The accumulating list of matching nodes
1.2968 + *
1.2969 + * @return : NodeList
1.2970 + */
1.2971 +var __getElementsByTagNameNSRecursive__ = function(elem, namespaceURI, localName, nodeList) {
1.2972 + if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
1.2973 +
1.2974 + if (((elem.namespaceURI == namespaceURI) || (namespaceURI == "*")) &&
1.2975 + ((elem.localName == localName) || (localName == "*"))) {
1.2976 + // add matching node to nodeList
1.2977 + __appendChild__(nodeList, elem);
1.2978 + }
1.2979 +
1.2980 + // recurse childNodes
1.2981 + for(var i = 0; i < elem.childNodes.length; i++) {
1.2982 + nodeList = __getElementsByTagNameNSRecursive__(
1.2983 + elem.childNodes.item(i), namespaceURI, localName, nodeList);
1.2984 + }
1.2985 + }
1.2986 +
1.2987 + return nodeList;
1.2988 +};
1.2989 +
1.2990 +/**
1.2991 + * @method __isAncestor__ - returns true if node is ancestor of target
1.2992 + * @param target : Node - The node we are using as context
1.2993 + * @param node : Node - The candidate ancestor node
1.2994 + * @return : boolean
1.2995 + */
1.2996 +var __isAncestor__ = function(target, node) {
1.2997 + // if this node matches, return true,
1.2998 + // otherwise recurse up (if there is a parentNode)
1.2999 + return ((target == node) || ((target.parentNode) && (__isAncestor__(target.parentNode, node))));
1.3000 +};
1.3001 +
1.3002 +
1.3003 +
1.3004 +var __recursivelyGatherText__ = function(aNode) {
1.3005 + var accumulateText = "",
1.3006 + idx,
1.3007 + node;
1.3008 + for (idx=0;idx < aNode.childNodes.length;idx++){
1.3009 + node = aNode.childNodes.item(idx);
1.3010 + if(node.nodeType == Node.TEXT_NODE)
1.3011 + accumulateText += node.data;
1.3012 + else
1.3013 + accumulateText += __recursivelyGatherText__(node);
1.3014 + }
1.3015 + return accumulateText;
1.3016 +};
1.3017 +
1.3018 +/**
1.3019 + * function __escapeXML__
1.3020 + * @param str : string - The string to be escaped
1.3021 + * @return : string - The escaped string
1.3022 + */
1.3023 +var escAmpRegEx = /&(?!(amp;|lt;|gt;|quot|apos;))/g;
1.3024 +var escLtRegEx = /</g;
1.3025 +var escGtRegEx = />/g;
1.3026 +var quotRegEx = /"/g;
1.3027 +var aposRegEx = /'/g;
1.3028 +
1.3029 +function __escapeXML__(str) {
1.3030 + str = str.replace(escAmpRegEx, "&").
1.3031 + replace(escLtRegEx, "<").
1.3032 + replace(escGtRegEx, ">").
1.3033 + replace(quotRegEx, """).
1.3034 + replace(aposRegEx, "'");
1.3035 +
1.3036 + return str;
1.3037 +};
1.3038 +
1.3039 +/*
1.3040 +function __escapeHTML5__(str) {
1.3041 + str = str.replace(escAmpRegEx, "&").
1.3042 + replace(escLtRegEx, "<").
1.3043 + replace(escGtRegEx, ">");
1.3044 +
1.3045 + return str;
1.3046 +};
1.3047 +function __escapeHTML5Atribute__(str) {
1.3048 + str = str.replace(escAmpRegEx, "&").
1.3049 + replace(escLtRegEx, "<").
1.3050 + replace(escGtRegEx, ">").
1.3051 + replace(quotRegEx, """).
1.3052 + replace(aposRegEx, "'");
1.3053 +
1.3054 + return str;
1.3055 +};
1.3056 +*/
1.3057 +
1.3058 +/**
1.3059 + * function __unescapeXML__
1.3060 + * @param str : string - The string to be unescaped
1.3061 + * @return : string - The unescaped string
1.3062 + */
1.3063 +var unescAmpRegEx = /&/g;
1.3064 +var unescLtRegEx = /</g;
1.3065 +var unescGtRegEx = />/g;
1.3066 +var unquotRegEx = /"/g;
1.3067 +var unaposRegEx = /'/g;
1.3068 +function __unescapeXML__(str) {
1.3069 + str = str.replace(unescAmpRegEx, "&").
1.3070 + replace(unescLtRegEx, "<").
1.3071 + replace(unescGtRegEx, ">").
1.3072 + replace(unquotRegEx, "\"").
1.3073 + replace(unaposRegEx, "'");
1.3074 +
1.3075 + return str;
1.3076 +};
1.3077 +
1.3078 +/**
1.3079 + * @class NamedNodeMap -
1.3080 + * used to represent collections of nodes that can be accessed by name
1.3081 + * typically a set of Element attributes
1.3082 + *
1.3083 + * @extends NodeList -
1.3084 + * note W3C spec says that this is not the case, but we need an item()
1.3085 + * method identical to NodeList's, so why not?
1.3086 + * @param ownerDocument : Document - the ownerDocument
1.3087 + * @param parentNode : Node - the node that the NamedNodeMap is attached to (or null)
1.3088 + */
1.3089 +NamedNodeMap = function(ownerDocument, parentNode) {
1.3090 + NodeList.apply(this, arguments);
1.3091 + __setArray__(this, []);
1.3092 +};
1.3093 +NamedNodeMap.prototype = new NodeList();
1.3094 +__extend__(NamedNodeMap.prototype, {
1.3095 + add: function(name){
1.3096 + this[this.length] = name;
1.3097 + },
1.3098 + getNamedItem : function(name) {
1.3099 + var ret = null;
1.3100 + //console.log('NamedNodeMap getNamedItem %s', name);
1.3101 + // test that Named Node exists
1.3102 + var itemIndex = __findNamedItemIndex__(this, name);
1.3103 +
1.3104 + if (itemIndex > -1) {
1.3105 + // found it!
1.3106 + ret = this[itemIndex];
1.3107 + }
1.3108 + // if node is not found, default value null is returned
1.3109 + return ret;
1.3110 + },
1.3111 + setNamedItem : function(arg) {
1.3112 + //console.log('setNamedItem %s', arg);
1.3113 + // test for exceptions
1.3114 + if (__ownerDocument__(this).implementation.errorChecking) {
1.3115 + // throw Exception if arg was not created by this Document
1.3116 + if (this.ownerDocument != arg.ownerDocument) {
1.3117 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
1.3118 + }
1.3119 +
1.3120 + // throw Exception if DOMNamedNodeMap is readonly
1.3121 + if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
1.3122 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3123 + }
1.3124 +
1.3125 + // throw Exception if arg is already an attribute of another Element object
1.3126 + if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
1.3127 + throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
1.3128 + }
1.3129 + }
1.3130 +
1.3131 + //console.log('setNamedItem __findNamedItemIndex__ ');
1.3132 + // get item index
1.3133 + var itemIndex = __findNamedItemIndex__(this, arg.name);
1.3134 + var ret = null;
1.3135 +
1.3136 + //console.log('setNamedItem __findNamedItemIndex__ %s', itemIndex);
1.3137 + if (itemIndex > -1) { // found it!
1.3138 + ret = this[itemIndex]; // use existing Attribute
1.3139 +
1.3140 + // throw Exception if DOMAttr is readonly
1.3141 + if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
1.3142 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3143 + } else {
1.3144 + this[itemIndex] = arg; // over-write existing NamedNode
1.3145 + this[arg.name.toLowerCase()] = arg;
1.3146 + }
1.3147 + } else {
1.3148 + // add new NamedNode
1.3149 + //console.log('setNamedItem add new named node map (by index)');
1.3150 + Array.prototype.push.apply(this, [arg]);
1.3151 + //console.log('setNamedItem add new named node map (by name) %s %s', arg, arg.name);
1.3152 + this[arg.name] = arg;
1.3153 + //console.log('finsished setNamedItem add new named node map (by name) %s', arg.name);
1.3154 +
1.3155 + }
1.3156 +
1.3157 + //console.log('setNamedItem parentNode');
1.3158 + arg.ownerElement = this.parentNode; // update ownerElement
1.3159 + // return old node or new node
1.3160 + //console.log('setNamedItem exit');
1.3161 + return ret;
1.3162 + },
1.3163 + removeNamedItem : function(name) {
1.3164 + var ret = null;
1.3165 + // test for exceptions
1.3166 + // throw Exception if NamedNodeMap is readonly
1.3167 + if (__ownerDocument__(this).implementation.errorChecking &&
1.3168 + (this._readonly || (this.parentNode && this.parentNode._readonly))) {
1.3169 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3170 + }
1.3171 +
1.3172 + // get item index
1.3173 + var itemIndex = __findNamedItemIndex__(this, name);
1.3174 +
1.3175 + // throw Exception if there is no node named name in this map
1.3176 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
1.3177 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
1.3178 + }
1.3179 +
1.3180 + // get Node
1.3181 + var oldNode = this[itemIndex];
1.3182 + //this[oldNode.name] = undefined;
1.3183 +
1.3184 + // throw Exception if Node is readonly
1.3185 + if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
1.3186 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3187 + }
1.3188 +
1.3189 + // return removed node
1.3190 + return __removeChild__(this, itemIndex);
1.3191 + },
1.3192 + getNamedItemNS : function(namespaceURI, localName) {
1.3193 + var ret = null;
1.3194 +
1.3195 + // test that Named Node exists
1.3196 + var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
1.3197 +
1.3198 + if (itemIndex > -1) {
1.3199 + // found it! return NamedNode
1.3200 + ret = this[itemIndex];
1.3201 + }
1.3202 + // if node is not found, default value null is returned
1.3203 + return ret;
1.3204 + },
1.3205 + setNamedItemNS : function(arg) {
1.3206 + //console.log('setNamedItemNS %s', arg);
1.3207 + // test for exceptions
1.3208 + if (__ownerDocument__(this).implementation.errorChecking) {
1.3209 + // throw Exception if NamedNodeMap is readonly
1.3210 + if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
1.3211 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3212 + }
1.3213 +
1.3214 + // throw Exception if arg was not created by this Document
1.3215 + if (__ownerDocument__(this) != __ownerDocument__(arg)) {
1.3216 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
1.3217 + }
1.3218 +
1.3219 + // throw Exception if arg is already an attribute of another Element object
1.3220 + if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
1.3221 + throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
1.3222 + }
1.3223 + }
1.3224 +
1.3225 + // get item index
1.3226 + var itemIndex = __findNamedItemNSIndex__(this, arg.namespaceURI, arg.localName);
1.3227 + var ret = null;
1.3228 +
1.3229 + if (itemIndex > -1) {
1.3230 + // found it!
1.3231 + // use existing Attribute
1.3232 + ret = this[itemIndex];
1.3233 + // throw Exception if Attr is readonly
1.3234 + if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
1.3235 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3236 + } else {
1.3237 + // over-write existing NamedNode
1.3238 + this[itemIndex] = arg;
1.3239 + }
1.3240 + }else {
1.3241 + // add new NamedNode
1.3242 + Array.prototype.push.apply(this, [arg]);
1.3243 + }
1.3244 + arg.ownerElement = this.parentNode;
1.3245 +
1.3246 + // return old node or null
1.3247 + return ret;
1.3248 + //console.log('finished setNamedItemNS %s', arg);
1.3249 + },
1.3250 + removeNamedItemNS : function(namespaceURI, localName) {
1.3251 + var ret = null;
1.3252 +
1.3253 + // test for exceptions
1.3254 + // throw Exception if NamedNodeMap is readonly
1.3255 + if (__ownerDocument__(this).implementation.errorChecking && (this._readonly || (this.parentNode && this.parentNode._readonly))) {
1.3256 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3257 + }
1.3258 +
1.3259 + // get item index
1.3260 + var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
1.3261 +
1.3262 + // throw Exception if there is no matching node in this map
1.3263 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
1.3264 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
1.3265 + }
1.3266 +
1.3267 + // get Node
1.3268 + var oldNode = this[itemIndex];
1.3269 +
1.3270 + // throw Exception if Node is readonly
1.3271 + if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
1.3272 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3273 + }
1.3274 +
1.3275 + return __removeChild__(this, itemIndex); // return removed node
1.3276 + },
1.3277 + get xml() {
1.3278 + var ret = "";
1.3279 +
1.3280 + // create string containing concatenation of all (but last) Attribute string values (separated by spaces)
1.3281 + for (var i=0; i < this.length -1; i++) {
1.3282 + ret += this[i].xml +" ";
1.3283 + }
1.3284 +
1.3285 + // add last Attribute to string (without trailing space)
1.3286 + if (this.length > 0) {
1.3287 + ret += this[this.length -1].xml;
1.3288 + }
1.3289 +
1.3290 + return ret;
1.3291 + },
1.3292 + toString : function(){
1.3293 + return "[object NamedNodeMap]";
1.3294 + }
1.3295 +
1.3296 +});
1.3297 +
1.3298 +/**
1.3299 + * @method __findNamedItemIndex__
1.3300 + * find the item index of the node with the specified name
1.3301 + *
1.3302 + * @param name : string - the name of the required node
1.3303 + * @param isnsmap : if its a NamespaceNodeMap
1.3304 + * @return : int
1.3305 + */
1.3306 +var __findNamedItemIndex__ = function(namednodemap, name, isnsmap) {
1.3307 + var ret = -1;
1.3308 + // loop through all nodes
1.3309 + for (var i=0; i<namednodemap.length; i++) {
1.3310 + // compare name to each node's nodeName
1.3311 + if(namednodemap[i].localName && name && isnsmap){
1.3312 + if (namednodemap[i].localName.toLowerCase() == name.toLowerCase()) {
1.3313 + // found it!
1.3314 + ret = i;
1.3315 + break;
1.3316 + }
1.3317 + }else{
1.3318 + if(namednodemap[i].name && name){
1.3319 + if (namednodemap[i].name.toLowerCase() == name.toLowerCase()) {
1.3320 + // found it!
1.3321 + ret = i;
1.3322 + break;
1.3323 + }
1.3324 + }
1.3325 + }
1.3326 + }
1.3327 + // if node is not found, default value -1 is returned
1.3328 + return ret;
1.3329 +};
1.3330 +
1.3331 +/**
1.3332 + * @method __findNamedItemNSIndex__
1.3333 + * find the item index of the node with the specified
1.3334 + * namespaceURI and localName
1.3335 + *
1.3336 + * @param namespaceURI : string - the namespace URI of the required node
1.3337 + * @param localName : string - the local name of the required node
1.3338 + * @return : int
1.3339 + */
1.3340 +var __findNamedItemNSIndex__ = function(namednodemap, namespaceURI, localName) {
1.3341 + var ret = -1;
1.3342 + // test that localName is not null
1.3343 + if (localName) {
1.3344 + // loop through all nodes
1.3345 + for (var i=0; i<namednodemap.length; i++) {
1.3346 + if(namednodemap[i].namespaceURI && namednodemap[i].localName){
1.3347 + // compare name to each node's namespaceURI and localName
1.3348 + if ((namednodemap[i].namespaceURI.toLowerCase() == namespaceURI.toLowerCase()) &&
1.3349 + (namednodemap[i].localName.toLowerCase() == localName.toLowerCase())) {
1.3350 + // found it!
1.3351 + ret = i;
1.3352 + break;
1.3353 + }
1.3354 + }
1.3355 + }
1.3356 + }
1.3357 + // if node is not found, default value -1 is returned
1.3358 + return ret;
1.3359 +};
1.3360 +
1.3361 +/**
1.3362 + * @method __hasAttribute__
1.3363 + * Returns true if specified node exists
1.3364 + *
1.3365 + * @param name : string - the name of the required node
1.3366 + * @return : boolean
1.3367 + */
1.3368 +var __hasAttribute__ = function(namednodemap, name) {
1.3369 + var ret = false;
1.3370 + // test that Named Node exists
1.3371 + var itemIndex = __findNamedItemIndex__(namednodemap, name);
1.3372 + if (itemIndex > -1) {
1.3373 + // found it!
1.3374 + ret = true;
1.3375 + }
1.3376 + // if node is not found, default value false is returned
1.3377 + return ret;
1.3378 +}
1.3379 +
1.3380 +/**
1.3381 + * @method __hasAttributeNS__
1.3382 + * Returns true if specified node exists
1.3383 + *
1.3384 + * @param namespaceURI : string - the namespace URI of the required node
1.3385 + * @param localName : string - the local name of the required node
1.3386 + * @return : boolean
1.3387 + */
1.3388 +var __hasAttributeNS__ = function(namednodemap, namespaceURI, localName) {
1.3389 + var ret = false;
1.3390 + // test that Named Node exists
1.3391 + var itemIndex = __findNamedItemNSIndex__(namednodemap, namespaceURI, localName);
1.3392 + if (itemIndex > -1) {
1.3393 + // found it!
1.3394 + ret = true;
1.3395 + }
1.3396 + // if node is not found, default value false is returned
1.3397 + return ret;
1.3398 +}
1.3399 +
1.3400 +/**
1.3401 + * @method __cloneNamedNodes__
1.3402 + * Returns a NamedNodeMap containing clones of the Nodes in this NamedNodeMap
1.3403 + *
1.3404 + * @param parentNode : Node - the new parent of the cloned NodeList
1.3405 + * @param isnsmap : bool - is this a NamespaceNodeMap
1.3406 + * @return NamedNodeMap containing clones of the Nodes in this NamedNodeMap
1.3407 + */
1.3408 +var __cloneNamedNodes__ = function(namednodemap, parentNode, isnsmap) {
1.3409 + var cloneNamedNodeMap = isnsmap?
1.3410 + new NamespaceNodeMap(namednodemap.ownerDocument, parentNode):
1.3411 + new NamedNodeMap(namednodemap.ownerDocument, parentNode);
1.3412 +
1.3413 + // create list containing clones of all children
1.3414 + for (var i=0; i < namednodemap.length; i++) {
1.3415 + __appendChild__(cloneNamedNodeMap, namednodemap[i].cloneNode(false));
1.3416 + }
1.3417 +
1.3418 + return cloneNamedNodeMap;
1.3419 +};
1.3420 +
1.3421 +
1.3422 +/**
1.3423 + * @class NamespaceNodeMap -
1.3424 + * used to represent collections of namespace nodes that can be
1.3425 + * accessed by name typically a set of Element attributes
1.3426 + *
1.3427 + * @extends NamedNodeMap
1.3428 + *
1.3429 + * @param ownerDocument : Document - the ownerDocument
1.3430 + * @param parentNode : Node - the node that the NamespaceNodeMap is attached to (or null)
1.3431 + */
1.3432 +var NamespaceNodeMap = function(ownerDocument, parentNode) {
1.3433 + this.NamedNodeMap = NamedNodeMap;
1.3434 + this.NamedNodeMap(ownerDocument, parentNode);
1.3435 + __setArray__(this, []);
1.3436 +};
1.3437 +NamespaceNodeMap.prototype = new NamedNodeMap();
1.3438 +__extend__(NamespaceNodeMap.prototype, {
1.3439 + get xml() {
1.3440 + var ret = "",
1.3441 + ns,
1.3442 + ind;
1.3443 + // identify namespaces declared local to this Element (ie, not inherited)
1.3444 + for (ind = 0; ind < this.length; ind++) {
1.3445 + // if namespace declaration does not exist in the containing node's, parentNode's namespaces
1.3446 + ns = null;
1.3447 + try {
1.3448 + var ns = this.parentNode.parentNode._namespaces.
1.3449 + getNamedItem(this[ind].localName);
1.3450 + }catch (e) {
1.3451 + //breaking to prevent default namespace being inserted into return value
1.3452 + break;
1.3453 + }
1.3454 + if (!(ns && (""+ ns.nodeValue == ""+ this[ind].nodeValue))) {
1.3455 + // display the namespace declaration
1.3456 + ret += this[ind].xml +" ";
1.3457 + }
1.3458 + }
1.3459 + return ret;
1.3460 + }
1.3461 +});
1.3462 +
1.3463 +/**
1.3464 + * @class Namespace -
1.3465 + * The Namespace interface represents an namespace in an Element object
1.3466 + *
1.3467 + * @param ownerDocument : The Document object associated with this node.
1.3468 + */
1.3469 +Namespace = function(ownerDocument) {
1.3470 + Node.apply(this, arguments);
1.3471 + // the name of this attribute
1.3472 + this.name = "";
1.3473 +
1.3474 + // If this attribute was explicitly given a value in the original document,
1.3475 + // this is true; otherwise, it is false.
1.3476 + // Note that the implementation is in charge of this attribute, not the user.
1.3477 + // If the user changes the value of the attribute (even if it ends up having
1.3478 + // the same value as the default value) then the specified flag is
1.3479 + // automatically flipped to true
1.3480 + this.specified = false;
1.3481 +};
1.3482 +Namespace.prototype = new Node();
1.3483 +__extend__(Namespace.prototype, {
1.3484 + get value(){
1.3485 + // the value of the attribute is returned as a string
1.3486 + return this.nodeValue;
1.3487 + },
1.3488 + set value(value){
1.3489 + this.nodeValue = value+'';
1.3490 + },
1.3491 + get nodeType(){
1.3492 + return Node.NAMESPACE_NODE;
1.3493 + },
1.3494 + get xml(){
1.3495 + var ret = "";
1.3496 +
1.3497 + // serialize Namespace Declaration
1.3498 + if (this.nodeName != "") {
1.3499 + ret += this.nodeName +"=\""+ __escapeXML__(this.nodeValue) +"\"";
1.3500 + }
1.3501 + else { // handle default namespace
1.3502 + ret += "xmlns=\""+ __escapeXML__(this.nodeValue) +"\"";
1.3503 + }
1.3504 +
1.3505 + return ret;
1.3506 + },
1.3507 + toString: function(){
1.3508 + return '[object Namespace]';
1.3509 + }
1.3510 +});
1.3511 +
1.3512 +
1.3513 +/**
1.3514 + * @class CharacterData - parent abstract class for Text and Comment
1.3515 + * @extends Node
1.3516 + * @param ownerDocument : The Document object associated with this node.
1.3517 + */
1.3518 +CharacterData = function(ownerDocument) {
1.3519 + Node.apply(this, arguments);
1.3520 +};
1.3521 +CharacterData.prototype = new Node();
1.3522 +__extend__(CharacterData.prototype,{
1.3523 + get data(){
1.3524 + return this.nodeValue;
1.3525 + },
1.3526 + set data(data){
1.3527 + this.nodeValue = data;
1.3528 + },
1.3529 + get textContent(){
1.3530 + return this.nodeValue;
1.3531 + },
1.3532 + set textContent(newText){
1.3533 + this.nodeValue = newText;
1.3534 + },
1.3535 + get length(){return this.nodeValue.length;},
1.3536 + appendData: function(arg){
1.3537 + // throw Exception if CharacterData is readonly
1.3538 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
1.3539 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3540 + }
1.3541 + // append data
1.3542 + this.data = "" + this.data + arg;
1.3543 + },
1.3544 + deleteData: function(offset, count){
1.3545 + // throw Exception if CharacterData is readonly
1.3546 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
1.3547 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3548 + }
1.3549 + if (this.data) {
1.3550 + // throw Exception if offset is negative or greater than the data length,
1.3551 + if (__ownerDocument__(this).implementation.errorChecking &&
1.3552 + ((offset < 0) || (offset > this.data.length) || (count < 0))) {
1.3553 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
1.3554 + }
1.3555 +
1.3556 + // delete data
1.3557 + if(!count || (offset + count) > this.data.length) {
1.3558 + this.data = this.data.substring(0, offset);
1.3559 + }else {
1.3560 + this.data = this.data.substring(0, offset).
1.3561 + concat(this.data.substring(offset + count));
1.3562 + }
1.3563 + }
1.3564 + },
1.3565 + insertData: function(offset, arg){
1.3566 + // throw Exception if CharacterData is readonly
1.3567 + if(__ownerDocument__(this).implementation.errorChecking && this._readonly){
1.3568 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3569 + }
1.3570 +
1.3571 + if(this.data){
1.3572 + // throw Exception if offset is negative or greater than the data length,
1.3573 + if (__ownerDocument__(this).implementation.errorChecking &&
1.3574 + ((offset < 0) || (offset > this.data.length))) {
1.3575 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
1.3576 + }
1.3577 +
1.3578 + // insert data
1.3579 + this.data = this.data.substring(0, offset).concat(arg, this.data.substring(offset));
1.3580 + }else {
1.3581 + // throw Exception if offset is negative or greater than the data length,
1.3582 + if (__ownerDocument__(this).implementation.errorChecking && (offset !== 0)) {
1.3583 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
1.3584 + }
1.3585 +
1.3586 + // set data
1.3587 + this.data = arg;
1.3588 + }
1.3589 + },
1.3590 + replaceData: function(offset, count, arg){
1.3591 + // throw Exception if CharacterData is readonly
1.3592 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
1.3593 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3594 + }
1.3595 +
1.3596 + if (this.data) {
1.3597 + // throw Exception if offset is negative or greater than the data length,
1.3598 + if (__ownerDocument__(this).implementation.errorChecking &&
1.3599 + ((offset < 0) || (offset > this.data.length) || (count < 0))) {
1.3600 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
1.3601 + }
1.3602 +
1.3603 + // replace data
1.3604 + this.data = this.data.substring(0, offset).
1.3605 + concat(arg, this.data.substring(offset + count));
1.3606 + }else {
1.3607 + // set data
1.3608 + this.data = arg;
1.3609 + }
1.3610 + },
1.3611 + substringData: function(offset, count){
1.3612 + var ret = null;
1.3613 + if (this.data) {
1.3614 + // throw Exception if offset is negative or greater than the data length,
1.3615 + // or the count is negative
1.3616 + if (__ownerDocument__(this).implementation.errorChecking &&
1.3617 + ((offset < 0) || (offset > this.data.length) || (count < 0))) {
1.3618 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
1.3619 + }
1.3620 + // if count is not specified
1.3621 + if (!count) {
1.3622 + ret = this.data.substring(offset); // default to 'end of string'
1.3623 + }else{
1.3624 + ret = this.data.substring(offset, offset + count);
1.3625 + }
1.3626 + }
1.3627 + return ret;
1.3628 + },
1.3629 + toString : function(){
1.3630 + return "[object CharacterData]";
1.3631 + }
1.3632 +});
1.3633 +
1.3634 +/**
1.3635 + * @class Text
1.3636 + * The Text interface represents the textual content (termed
1.3637 + * character data in XML) of an Element or Attr.
1.3638 + * If there is no markup inside an element's content, the text is
1.3639 + * contained in a single object implementing the Text interface that
1.3640 + * is the only child of the element. If there is markup, it is
1.3641 + * parsed into a list of elements and Text nodes that form the
1.3642 + * list of children of the element.
1.3643 + * @extends CharacterData
1.3644 + * @param ownerDocument The Document object associated with this node.
1.3645 + */
1.3646 +Text = function(ownerDocument) {
1.3647 + CharacterData.apply(this, arguments);
1.3648 + this.nodeName = "#text";
1.3649 +};
1.3650 +Text.prototype = new CharacterData();
1.3651 +__extend__(Text.prototype,{
1.3652 + get localName(){
1.3653 + return null;
1.3654 + },
1.3655 + // Breaks this Text node into two Text nodes at the specified offset,
1.3656 + // keeping both in the tree as siblings. This node then only contains
1.3657 + // all the content up to the offset point. And a new Text node, which
1.3658 + // is inserted as the next sibling of this node, contains all the
1.3659 + // content at and after the offset point.
1.3660 + splitText : function(offset) {
1.3661 + var data,
1.3662 + inode;
1.3663 + // test for exceptions
1.3664 + if (__ownerDocument__(this).implementation.errorChecking) {
1.3665 + // throw Exception if Node is readonly
1.3666 + if (this._readonly) {
1.3667 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3668 + }
1.3669 + // throw Exception if offset is negative or greater than the data length,
1.3670 + if ((offset < 0) || (offset > this.data.length)) {
1.3671 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
1.3672 + }
1.3673 + }
1.3674 + if (this.parentNode) {
1.3675 + // get remaining string (after offset)
1.3676 + data = this.substringData(offset);
1.3677 + // create new TextNode with remaining string
1.3678 + inode = __ownerDocument__(this).createTextNode(data);
1.3679 + // attach new TextNode
1.3680 + if (this.nextSibling) {
1.3681 + this.parentNode.insertBefore(inode, this.nextSibling);
1.3682 + } else {
1.3683 + this.parentNode.appendChild(inode);
1.3684 + }
1.3685 + // remove remaining string from original TextNode
1.3686 + this.deleteData(offset);
1.3687 + }
1.3688 + return inode;
1.3689 + },
1.3690 + get nodeType(){
1.3691 + return Node.TEXT_NODE;
1.3692 + },
1.3693 + get xml(){
1.3694 + return __escapeXML__(""+ this.nodeValue);
1.3695 + },
1.3696 + toString: function(){
1.3697 + return "[object Text]";
1.3698 + }
1.3699 +});
1.3700 +
1.3701 +/**
1.3702 + * @class CDATASection
1.3703 + * CDATA sections are used to escape blocks of text containing
1.3704 + * characters that would otherwise be regarded as markup.
1.3705 + * The only delimiter that is recognized in a CDATA section is
1.3706 + * the "\]\]\>" string that ends the CDATA section
1.3707 + * @extends Text
1.3708 + * @param ownerDocument : The Document object associated with this node.
1.3709 + */
1.3710 +CDATASection = function(ownerDocument) {
1.3711 + Text.apply(this, arguments);
1.3712 + this.nodeName = '#cdata-section';
1.3713 +};
1.3714 +CDATASection.prototype = new Text();
1.3715 +__extend__(CDATASection.prototype,{
1.3716 + get nodeType(){
1.3717 + return Node.CDATA_SECTION_NODE;
1.3718 + },
1.3719 + get xml(){
1.3720 + return "<![CDATA[" + this.nodeValue + "]]>";
1.3721 + },
1.3722 + toString : function(){
1.3723 + return "[object CDATASection]";
1.3724 + }
1.3725 +});
1.3726 +/**
1.3727 + * @class Comment
1.3728 + * This represents the content of a comment, i.e., all the
1.3729 + * characters between the starting '<!--' and ending '-->'
1.3730 + * @extends CharacterData
1.3731 + * @param ownerDocument : The Document object associated with this node.
1.3732 + */
1.3733 +Comment = function(ownerDocument) {
1.3734 + CharacterData.apply(this, arguments);
1.3735 + this.nodeName = "#comment";
1.3736 +};
1.3737 +Comment.prototype = new CharacterData();
1.3738 +__extend__(Comment.prototype, {
1.3739 + get localName(){
1.3740 + return null;
1.3741 + },
1.3742 + get nodeType(){
1.3743 + return Node.COMMENT_NODE;
1.3744 + },
1.3745 + get xml(){
1.3746 + return "<!--" + this.nodeValue + "-->";
1.3747 + },
1.3748 + toString : function(){
1.3749 + return "[object Comment]";
1.3750 + }
1.3751 +});
1.3752 +
1.3753 +
1.3754 +/**
1.3755 + * @author envjs team
1.3756 + * @param {Document} onwnerDocument
1.3757 + */
1.3758 +DocumentType = function(ownerDocument) {
1.3759 + Node.apply(this, arguments);
1.3760 + this.systemId = null;
1.3761 + this.publicId = null;
1.3762 +};
1.3763 +DocumentType.prototype = new Node();
1.3764 +__extend__({
1.3765 + get name(){
1.3766 + return this.nodeName;
1.3767 + },
1.3768 + get entities(){
1.3769 + return null;
1.3770 + },
1.3771 + get internalSubsets(){
1.3772 + return null;
1.3773 + },
1.3774 + get notations(){
1.3775 + return null;
1.3776 + },
1.3777 + toString : function(){
1.3778 + return "[object DocumentType]";
1.3779 + }
1.3780 +});
1.3781 +
1.3782 +/**
1.3783 + * @class Attr
1.3784 + * The Attr interface represents an attribute in an Element object
1.3785 + * @extends Node
1.3786 + * @param ownerDocument : The Document object associated with this node.
1.3787 + */
1.3788 +Attr = function(ownerDocument) {
1.3789 + Node.apply(this, arguments);
1.3790 + // set when Attr is added to NamedNodeMap
1.3791 + this.ownerElement = null;
1.3792 + //TODO: our implementation of Attr is incorrect because we don't
1.3793 + // treat the value of the attribute as a child text node.
1.3794 +};
1.3795 +Attr.prototype = new Node();
1.3796 +__extend__(Attr.prototype, {
1.3797 + // the name of this attribute
1.3798 + get name(){
1.3799 + return this.nodeName;
1.3800 + },
1.3801 + // the value of the attribute is returned as a string
1.3802 + get value(){
1.3803 + return this.nodeValue||'';
1.3804 + },
1.3805 + set value(value){
1.3806 + // throw Exception if Attribute is readonly
1.3807 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
1.3808 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3809 + }
1.3810 + // delegate to node
1.3811 + this.nodeValue = value;
1.3812 + },
1.3813 + get textContent(){
1.3814 + return this.nodeValue;
1.3815 + },
1.3816 + set textContent(newText){
1.3817 + this.nodeValue = newText;
1.3818 + },
1.3819 + get specified(){
1.3820 + return (this !== null && this !== undefined);
1.3821 + },
1.3822 + get nodeType(){
1.3823 + return Node.ATTRIBUTE_NODE;
1.3824 + },
1.3825 + get xml() {
1.3826 + if (this.nodeValue) {
1.3827 + return __escapeXML__(this.nodeValue+"");
1.3828 + } else {
1.3829 + return '';
1.3830 + }
1.3831 + },
1.3832 + toString : function() {
1.3833 + return '[object Attr]';
1.3834 + }
1.3835 +});
1.3836 +
1.3837 +
1.3838 +/**
1.3839 + * @class Element -
1.3840 + * By far the vast majority of objects (apart from text)
1.3841 + * that authors encounter when traversing a document are
1.3842 + * Element nodes.
1.3843 + * @extends Node
1.3844 + * @param ownerDocument : The Document object associated with this node.
1.3845 + */
1.3846 +Element = function(ownerDocument) {
1.3847 + Node.apply(this, arguments);
1.3848 + this.attributes = new NamedNodeMap(this.ownerDocument, this);
1.3849 +};
1.3850 +Element.prototype = new Node();
1.3851 +__extend__(Element.prototype, {
1.3852 + // The name of the element.
1.3853 + get tagName(){
1.3854 + return this.nodeName;
1.3855 + },
1.3856 +
1.3857 + getAttribute: function(name) {
1.3858 + var ret = null;
1.3859 + // if attribute exists, use it
1.3860 + var attr = this.attributes.getNamedItem(name);
1.3861 + if (attr) {
1.3862 + ret = attr.value;
1.3863 + }
1.3864 + // if Attribute exists, return its value, otherwise, return null
1.3865 + return ret;
1.3866 + },
1.3867 + setAttribute : function (name, value) {
1.3868 + // if attribute exists, use it
1.3869 + var attr = this.attributes.getNamedItem(name);
1.3870 + //console.log('attr %s', attr);
1.3871 + //I had to add this check because as the script initializes
1.3872 + //the id may be set in the constructor, and the html element
1.3873 + //overrides the id property with a getter/setter.
1.3874 + if(__ownerDocument__(this)){
1.3875 + if (attr===null||attr===undefined) {
1.3876 + // otherwise create it
1.3877 + attr = __ownerDocument__(this).createAttribute(name);
1.3878 + //console.log('attr %s', attr);
1.3879 + }
1.3880 +
1.3881 +
1.3882 + // test for exceptions
1.3883 + if (__ownerDocument__(this).implementation.errorChecking) {
1.3884 + // throw Exception if Attribute is readonly
1.3885 + if (attr._readonly) {
1.3886 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3887 + }
1.3888 +
1.3889 + // throw Exception if the value string contains an illegal character
1.3890 + if (!__isValidString__(value+'')) {
1.3891 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
1.3892 + }
1.3893 + }
1.3894 +
1.3895 + // assign values to properties (and aliases)
1.3896 + attr.value = value + '';
1.3897 +
1.3898 + // add/replace Attribute in NamedNodeMap
1.3899 + this.attributes.setNamedItem(attr);
1.3900 + //console.log('element setNamedItem %s', attr);
1.3901 + }else{
1.3902 + console.warn('Element has no owner document '+this.tagName+
1.3903 + '\n\t cant set attribute ' + name + ' = '+value );
1.3904 + }
1.3905 + },
1.3906 + removeAttribute : function removeAttribute(name) {
1.3907 + // delegate to NamedNodeMap.removeNamedItem
1.3908 + return this.attributes.removeNamedItem(name);
1.3909 + },
1.3910 + getAttributeNode : function getAttributeNode(name) {
1.3911 + // delegate to NamedNodeMap.getNamedItem
1.3912 + return this.attributes.getNamedItem(name);
1.3913 + },
1.3914 + setAttributeNode: function(newAttr) {
1.3915 + // if this Attribute is an ID
1.3916 + if (__isIdDeclaration__(newAttr.name)) {
1.3917 + this.id = newAttr.value; // cache ID for getElementById()
1.3918 + }
1.3919 + // delegate to NamedNodeMap.setNamedItem
1.3920 + return this.attributes.setNamedItem(newAttr);
1.3921 + },
1.3922 + removeAttributeNode: function(oldAttr) {
1.3923 + // throw Exception if Attribute is readonly
1.3924 + if (__ownerDocument__(this).implementation.errorChecking && oldAttr._readonly) {
1.3925 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3926 + }
1.3927 +
1.3928 + // get item index
1.3929 + var itemIndex = this.attributes._findItemIndex(oldAttr._id);
1.3930 +
1.3931 + // throw Exception if node does not exist in this map
1.3932 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
1.3933 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
1.3934 + }
1.3935 +
1.3936 + return this.attributes._removeChild(itemIndex);
1.3937 + },
1.3938 + getAttributeNS : function(namespaceURI, localName) {
1.3939 + var ret = "";
1.3940 + // delegate to NAmedNodeMap.getNamedItemNS
1.3941 + var attr = this.attributes.getNamedItemNS(namespaceURI, localName);
1.3942 + if (attr) {
1.3943 + ret = attr.value;
1.3944 + }
1.3945 + return ret; // if Attribute exists, return its value, otherwise return ""
1.3946 + },
1.3947 + setAttributeNS : function(namespaceURI, qualifiedName, value) {
1.3948 + // call NamedNodeMap.getNamedItem
1.3949 + //console.log('setAttributeNS %s %s %s', namespaceURI, qualifiedName, value);
1.3950 + var attr = this.attributes.getNamedItem(namespaceURI, qualifiedName);
1.3951 +
1.3952 + if (!attr) { // if Attribute exists, use it
1.3953 + // otherwise create it
1.3954 + attr = __ownerDocument__(this).createAttributeNS(namespaceURI, qualifiedName);
1.3955 + }
1.3956 +
1.3957 + value = '' + value;
1.3958 +
1.3959 + // test for exceptions
1.3960 + if (__ownerDocument__(this).implementation.errorChecking) {
1.3961 + // throw Exception if Attribute is readonly
1.3962 + if (attr._readonly) {
1.3963 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.3964 + }
1.3965 +
1.3966 + // throw Exception if the Namespace is invalid
1.3967 + if (!__isValidNamespace__(this.ownerDocument, namespaceURI, qualifiedName, true)) {
1.3968 + throw(new DOMException(DOMException.NAMESPACE_ERR));
1.3969 + }
1.3970 +
1.3971 + // throw Exception if the value string contains an illegal character
1.3972 + if (!__isValidString__(value)) {
1.3973 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
1.3974 + }
1.3975 + }
1.3976 +
1.3977 + // if this Attribute is an ID
1.3978 + //if (__isIdDeclaration__(name)) {
1.3979 + // this.id = value;
1.3980 + //}
1.3981 +
1.3982 + // assign values to properties (and aliases)
1.3983 + attr.value = value;
1.3984 + attr.nodeValue = value;
1.3985 +
1.3986 + // delegate to NamedNodeMap.setNamedItem
1.3987 + this.attributes.setNamedItemNS(attr);
1.3988 + },
1.3989 + removeAttributeNS : function(namespaceURI, localName) {
1.3990 + // delegate to NamedNodeMap.removeNamedItemNS
1.3991 + return this.attributes.removeNamedItemNS(namespaceURI, localName);
1.3992 + },
1.3993 + getAttributeNodeNS : function(namespaceURI, localName) {
1.3994 + // delegate to NamedNodeMap.getNamedItemNS
1.3995 + return this.attributes.getNamedItemNS(namespaceURI, localName);
1.3996 + },
1.3997 + setAttributeNodeNS : function(newAttr) {
1.3998 + // if this Attribute is an ID
1.3999 + if ((newAttr.prefix == "") && __isIdDeclaration__(newAttr.name)) {
1.4000 + this.id = newAttr.value+''; // cache ID for getElementById()
1.4001 + }
1.4002 +
1.4003 + // delegate to NamedNodeMap.setNamedItemNS
1.4004 + return this.attributes.setNamedItemNS(newAttr);
1.4005 + },
1.4006 + hasAttribute : function(name) {
1.4007 + // delegate to NamedNodeMap._hasAttribute
1.4008 + return __hasAttribute__(this.attributes,name);
1.4009 + },
1.4010 + hasAttributeNS : function(namespaceURI, localName) {
1.4011 + // delegate to NamedNodeMap._hasAttributeNS
1.4012 + return __hasAttributeNS__(this.attributes, namespaceURI, localName);
1.4013 + },
1.4014 + get nodeType(){
1.4015 + return Node.ELEMENT_NODE;
1.4016 + },
1.4017 + get xml() {
1.4018 + var ret = "",
1.4019 + ns = "",
1.4020 + attrs,
1.4021 + attrstring,
1.4022 + i;
1.4023 +
1.4024 + // serialize namespace declarations
1.4025 + if (this.namespaceURI ){
1.4026 + if((this === this.ownerDocument.documentElement) ||
1.4027 + (!this.parentNode)||
1.4028 + (this.parentNode && (this.parentNode.namespaceURI !== this.namespaceURI))) {
1.4029 + ns = ' xmlns' + (this.prefix?(':'+this.prefix):'') +
1.4030 + '="' + this.namespaceURI + '"';
1.4031 + }
1.4032 + }
1.4033 +
1.4034 + // serialize Attribute declarations
1.4035 + attrs = this.attributes;
1.4036 + attrstring = "";
1.4037 + for(i=0;i< attrs.length;i++){
1.4038 + if(attrs[i].name.match('xmlns:')) {
1.4039 + attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
1.4040 + }
1.4041 + }
1.4042 + for(i=0;i< attrs.length;i++){
1.4043 + if(!attrs[i].name.match('xmlns:')) {
1.4044 + attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
1.4045 + }
1.4046 + }
1.4047 +
1.4048 + if(this.hasChildNodes()){
1.4049 + // serialize this Element
1.4050 + ret += "<" + this.tagName + ns + attrstring +">";
1.4051 + ret += this.childNodes.xml;
1.4052 + ret += "</" + this.tagName + ">";
1.4053 + }else{
1.4054 + ret += "<" + this.tagName + ns + attrstring +"/>";
1.4055 + }
1.4056 +
1.4057 + return ret;
1.4058 + },
1.4059 + toString : function(){
1.4060 + return '[object Element]';
1.4061 + }
1.4062 +});
1.4063 +/**
1.4064 + * @class DOMException - raised when an operation is impossible to perform
1.4065 + * @author Jon van Noort (jon@webarcana.com.au)
1.4066 + * @param code : int - the exception code (one of the DOMException constants)
1.4067 + */
1.4068 +DOMException = function(code) {
1.4069 + this.code = code;
1.4070 +};
1.4071 +
1.4072 +// DOMException constants
1.4073 +// Introduced in DOM Level 1:
1.4074 +DOMException.INDEX_SIZE_ERR = 1;
1.4075 +DOMException.DOMSTRING_SIZE_ERR = 2;
1.4076 +DOMException.HIERARCHY_REQUEST_ERR = 3;
1.4077 +DOMException.WRONG_DOCUMENT_ERR = 4;
1.4078 +DOMException.INVALID_CHARACTER_ERR = 5;
1.4079 +DOMException.NO_DATA_ALLOWED_ERR = 6;
1.4080 +DOMException.NO_MODIFICATION_ALLOWED_ERR = 7;
1.4081 +DOMException.NOT_FOUND_ERR = 8;
1.4082 +DOMException.NOT_SUPPORTED_ERR = 9;
1.4083 +DOMException.INUSE_ATTRIBUTE_ERR = 10;
1.4084 +
1.4085 +// Introduced in DOM Level 2:
1.4086 +DOMException.INVALID_STATE_ERR = 11;
1.4087 +DOMException.SYNTAX_ERR = 12;
1.4088 +DOMException.INVALID_MODIFICATION_ERR = 13;
1.4089 +DOMException.NAMESPACE_ERR = 14;
1.4090 +DOMException.INVALID_ACCESS_ERR = 15;
1.4091 +
1.4092 +/**
1.4093 + * @class DocumentFragment -
1.4094 + * DocumentFragment is a "lightweight" or "minimal" Document object.
1.4095 + * @extends Node
1.4096 + * @param ownerDocument : The Document object associated with this node.
1.4097 + */
1.4098 +DocumentFragment = function(ownerDocument) {
1.4099 + Node.apply(this, arguments);
1.4100 + this.nodeName = "#document-fragment";
1.4101 +};
1.4102 +DocumentFragment.prototype = new Node();
1.4103 +__extend__(DocumentFragment.prototype,{
1.4104 + get nodeType(){
1.4105 + return Node.DOCUMENT_FRAGMENT_NODE;
1.4106 + },
1.4107 + get xml(){
1.4108 + var xml = "",
1.4109 + count = this.childNodes.length;
1.4110 +
1.4111 + // create string concatenating the serialized ChildNodes
1.4112 + for (var i = 0; i < count; i++) {
1.4113 + xml += this.childNodes.item(i).xml;
1.4114 + }
1.4115 +
1.4116 + return xml;
1.4117 + },
1.4118 + toString : function(){
1.4119 + return "[object DocumentFragment]";
1.4120 + },
1.4121 + get localName(){
1.4122 + return null;
1.4123 + }
1.4124 +});
1.4125 +
1.4126 +
1.4127 +/**
1.4128 + * @class ProcessingInstruction -
1.4129 + * The ProcessingInstruction interface represents a
1.4130 + * "processing instruction", used in XML as a way to
1.4131 + * keep processor-specific information in the text of
1.4132 + * the document
1.4133 + * @extends Node
1.4134 + * @author Jon van Noort (jon@webarcana.com.au)
1.4135 + * @param ownerDocument : The Document object associated with this node.
1.4136 + */
1.4137 +ProcessingInstruction = function(ownerDocument) {
1.4138 + Node.apply(this, arguments);
1.4139 +};
1.4140 +ProcessingInstruction.prototype = new Node();
1.4141 +__extend__(ProcessingInstruction.prototype, {
1.4142 + get data(){
1.4143 + return this.nodeValue;
1.4144 + },
1.4145 + set data(data){
1.4146 + // throw Exception if Node is readonly
1.4147 + if (__ownerDocument__(this).errorChecking && this._readonly) {
1.4148 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
1.4149 + }
1.4150 + this.nodeValue = data;
1.4151 + },
1.4152 + get textContent(){
1.4153 + return this.data;
1.4154 + },
1.4155 + get localName(){
1.4156 + return null;
1.4157 + },
1.4158 + get target(){
1.4159 + // The target of this processing instruction.
1.4160 + // XML defines this as being the first token following the markup that begins the processing instruction.
1.4161 + // The content of this processing instruction.
1.4162 + return this.nodeName;
1.4163 + },
1.4164 + set target(value){
1.4165 + // The target of this processing instruction.
1.4166 + // XML defines this as being the first token following the markup that begins the processing instruction.
1.4167 + // The content of this processing instruction.
1.4168 + this.nodeName = value;
1.4169 + },
1.4170 + get nodeType(){
1.4171 + return Node.PROCESSING_INSTRUCTION_NODE;
1.4172 + },
1.4173 + get xml(){
1.4174 + return "<?" + this.nodeName +" "+ this.nodeValue + "?>";
1.4175 + },
1.4176 + toString : function(){
1.4177 + return "[object ProcessingInstruction]";
1.4178 + }
1.4179 +});
1.4180 +
1.4181 +
1.4182 +/**
1.4183 + * @author envjs team
1.4184 + */
1.4185 +
1.4186 +Entity = function() {
1.4187 + throw new Error("Entity Not Implemented" );
1.4188 +};
1.4189 +
1.4190 +Entity.constants = {
1.4191 + // content taken from W3C "HTML 4.01 Specification"
1.4192 + // "W3C Recommendation 24 December 1999"
1.4193 +
1.4194 + nbsp: "\u00A0",
1.4195 + iexcl: "\u00A1",
1.4196 + cent: "\u00A2",
1.4197 + pound: "\u00A3",
1.4198 + curren: "\u00A4",
1.4199 + yen: "\u00A5",
1.4200 + brvbar: "\u00A6",
1.4201 + sect: "\u00A7",
1.4202 + uml: "\u00A8",
1.4203 + copy: "\u00A9",
1.4204 + ordf: "\u00AA",
1.4205 + laquo: "\u00AB",
1.4206 + not: "\u00AC",
1.4207 + shy: "\u00AD",
1.4208 + reg: "\u00AE",
1.4209 + macr: "\u00AF",
1.4210 + deg: "\u00B0",
1.4211 + plusmn: "\u00B1",
1.4212 + sup2: "\u00B2",
1.4213 + sup3: "\u00B3",
1.4214 + acute: "\u00B4",
1.4215 + micro: "\u00B5",
1.4216 + para: "\u00B6",
1.4217 + middot: "\u00B7",
1.4218 + cedil: "\u00B8",
1.4219 + sup1: "\u00B9",
1.4220 + ordm: "\u00BA",
1.4221 + raquo: "\u00BB",
1.4222 + frac14: "\u00BC",
1.4223 + frac12: "\u00BD",
1.4224 + frac34: "\u00BE",
1.4225 + iquest: "\u00BF",
1.4226 + Agrave: "\u00C0",
1.4227 + Aacute: "\u00C1",
1.4228 + Acirc: "\u00C2",
1.4229 + Atilde: "\u00C3",
1.4230 + Auml: "\u00C4",
1.4231 + Aring: "\u00C5",
1.4232 + AElig: "\u00C6",
1.4233 + Ccedil: "\u00C7",
1.4234 + Egrave: "\u00C8",
1.4235 + Eacute: "\u00C9",
1.4236 + Ecirc: "\u00CA",
1.4237 + Euml: "\u00CB",
1.4238 + Igrave: "\u00CC",
1.4239 + Iacute: "\u00CD",
1.4240 + Icirc: "\u00CE",
1.4241 + Iuml: "\u00CF",
1.4242 + ETH: "\u00D0",
1.4243 + Ntilde: "\u00D1",
1.4244 + Ograve: "\u00D2",
1.4245 + Oacute: "\u00D3",
1.4246 + Ocirc: "\u00D4",
1.4247 + Otilde: "\u00D5",
1.4248 + Ouml: "\u00D6",
1.4249 + times: "\u00D7",
1.4250 + Oslash: "\u00D8",
1.4251 + Ugrave: "\u00D9",
1.4252 + Uacute: "\u00DA",
1.4253 + Ucirc: "\u00DB",
1.4254 + Uuml: "\u00DC",
1.4255 + Yacute: "\u00DD",
1.4256 + THORN: "\u00DE",
1.4257 + szlig: "\u00DF",
1.4258 + agrave: "\u00E0",
1.4259 + aacute: "\u00E1",
1.4260 + acirc: "\u00E2",
1.4261 + atilde: "\u00E3",
1.4262 + auml: "\u00E4",
1.4263 + aring: "\u00E5",
1.4264 + aelig: "\u00E6",
1.4265 + ccedil: "\u00E7",
1.4266 + egrave: "\u00E8",
1.4267 + eacute: "\u00E9",
1.4268 + ecirc: "\u00EA",
1.4269 + euml: "\u00EB",
1.4270 + igrave: "\u00EC",
1.4271 + iacute: "\u00ED",
1.4272 + icirc: "\u00EE",
1.4273 + iuml: "\u00EF",
1.4274 + eth: "\u00F0",
1.4275 + ntilde: "\u00F1",
1.4276 + ograve: "\u00F2",
1.4277 + oacute: "\u00F3",
1.4278 + ocirc: "\u00F4",
1.4279 + otilde: "\u00F5",
1.4280 + ouml: "\u00F6",
1.4281 + divide: "\u00F7",
1.4282 + oslash: "\u00F8",
1.4283 + ugrave: "\u00F9",
1.4284 + uacute: "\u00FA",
1.4285 + ucirc: "\u00FB",
1.4286 + uuml: "\u00FC",
1.4287 + yacute: "\u00FD",
1.4288 + thorn: "\u00FE",
1.4289 + yuml: "\u00FF",
1.4290 + fnof: "\u0192",
1.4291 + Alpha: "\u0391",
1.4292 + Beta: "\u0392",
1.4293 + Gamma: "\u0393",
1.4294 + Delta: "\u0394",
1.4295 + Epsilon: "\u0395",
1.4296 + Zeta: "\u0396",
1.4297 + Eta: "\u0397",
1.4298 + Theta: "\u0398",
1.4299 + Iota: "\u0399",
1.4300 + Kappa: "\u039A",
1.4301 + Lambda: "\u039B",
1.4302 + Mu: "\u039C",
1.4303 + Nu: "\u039D",
1.4304 + Xi: "\u039E",
1.4305 + Omicron: "\u039F",
1.4306 + Pi: "\u03A0",
1.4307 + Rho: "\u03A1",
1.4308 + Sigma: "\u03A3",
1.4309 + Tau: "\u03A4",
1.4310 + Upsilon: "\u03A5",
1.4311 + Phi: "\u03A6",
1.4312 + Chi: "\u03A7",
1.4313 + Psi: "\u03A8",
1.4314 + Omega: "\u03A9",
1.4315 + alpha: "\u03B1",
1.4316 + beta: "\u03B2",
1.4317 + gamma: "\u03B3",
1.4318 + delta: "\u03B4",
1.4319 + epsilon: "\u03B5",
1.4320 + zeta: "\u03B6",
1.4321 + eta: "\u03B7",
1.4322 + theta: "\u03B8",
1.4323 + iota: "\u03B9",
1.4324 + kappa: "\u03BA",
1.4325 + lambda: "\u03BB",
1.4326 + mu: "\u03BC",
1.4327 + nu: "\u03BD",
1.4328 + xi: "\u03BE",
1.4329 + omicron: "\u03BF",
1.4330 + pi: "\u03C0",
1.4331 + rho: "\u03C1",
1.4332 + sigmaf: "\u03C2",
1.4333 + sigma: "\u03C3",
1.4334 + tau: "\u03C4",
1.4335 + upsilon: "\u03C5",
1.4336 + phi: "\u03C6",
1.4337 + chi: "\u03C7",
1.4338 + psi: "\u03C8",
1.4339 + omega: "\u03C9",
1.4340 + thetasym: "\u03D1",
1.4341 + upsih: "\u03D2",
1.4342 + piv: "\u03D6",
1.4343 + bull: "\u2022",
1.4344 + hellip: "\u2026",
1.4345 + prime: "\u2032",
1.4346 + Prime: "\u2033",
1.4347 + oline: "\u203E",
1.4348 + frasl: "\u2044",
1.4349 + weierp: "\u2118",
1.4350 + image: "\u2111",
1.4351 + real: "\u211C",
1.4352 + trade: "\u2122",
1.4353 + alefsym: "\u2135",
1.4354 + larr: "\u2190",
1.4355 + uarr: "\u2191",
1.4356 + rarr: "\u2192",
1.4357 + darr: "\u2193",
1.4358 + harr: "\u2194",
1.4359 + crarr: "\u21B5",
1.4360 + lArr: "\u21D0",
1.4361 + uArr: "\u21D1",
1.4362 + rArr: "\u21D2",
1.4363 + dArr: "\u21D3",
1.4364 + hArr: "\u21D4",
1.4365 + forall: "\u2200",
1.4366 + part: "\u2202",
1.4367 + exist: "\u2203",
1.4368 + empty: "\u2205",
1.4369 + nabla: "\u2207",
1.4370 + isin: "\u2208",
1.4371 + notin: "\u2209",
1.4372 + ni: "\u220B",
1.4373 + prod: "\u220F",
1.4374 + sum: "\u2211",
1.4375 + minus: "\u2212",
1.4376 + lowast: "\u2217",
1.4377 + radic: "\u221A",
1.4378 + prop: "\u221D",
1.4379 + infin: "\u221E",
1.4380 + ang: "\u2220",
1.4381 + and: "\u2227",
1.4382 + or: "\u2228",
1.4383 + cap: "\u2229",
1.4384 + cup: "\u222A",
1.4385 + intXX: "\u222B",
1.4386 + there4: "\u2234",
1.4387 + sim: "\u223C",
1.4388 + cong: "\u2245",
1.4389 + asymp: "\u2248",
1.4390 + ne: "\u2260",
1.4391 + equiv: "\u2261",
1.4392 + le: "\u2264",
1.4393 + ge: "\u2265",
1.4394 + sub: "\u2282",
1.4395 + sup: "\u2283",
1.4396 + nsub: "\u2284",
1.4397 + sube: "\u2286",
1.4398 + supe: "\u2287",
1.4399 + oplus: "\u2295",
1.4400 + otimes: "\u2297",
1.4401 + perp: "\u22A5",
1.4402 + sdot: "\u22C5",
1.4403 + lceil: "\u2308",
1.4404 + rceil: "\u2309",
1.4405 + lfloor: "\u230A",
1.4406 + rfloor: "\u230B",
1.4407 + lang: "\u2329",
1.4408 + rang: "\u232A",
1.4409 + loz: "\u25CA",
1.4410 + spades: "\u2660",
1.4411 + clubs: "\u2663",
1.4412 + hearts: "\u2665",
1.4413 + diams: "\u2666",
1.4414 + quot: "\u0022",
1.4415 + amp: "\u0026",
1.4416 + lt: "\u003C",
1.4417 + gt: "\u003E",
1.4418 + OElig: "\u0152",
1.4419 + oelig: "\u0153",
1.4420 + Scaron: "\u0160",
1.4421 + scaron: "\u0161",
1.4422 + Yuml: "\u0178",
1.4423 + circ: "\u02C6",
1.4424 + tilde: "\u02DC",
1.4425 + ensp: "\u2002",
1.4426 + emsp: "\u2003",
1.4427 + thinsp: "\u2009",
1.4428 + zwnj: "\u200C",
1.4429 + zwj: "\u200D",
1.4430 + lrm: "\u200E",
1.4431 + rlm: "\u200F",
1.4432 + ndash: "\u2013",
1.4433 + mdash: "\u2014",
1.4434 + lsquo: "\u2018",
1.4435 + rsquo: "\u2019",
1.4436 + sbquo: "\u201A",
1.4437 + ldquo: "\u201C",
1.4438 + rdquo: "\u201D",
1.4439 + bdquo: "\u201E",
1.4440 + dagger: "\u2020",
1.4441 + Dagger: "\u2021",
1.4442 + permil: "\u2030",
1.4443 + lsaquo: "\u2039",
1.4444 + rsaquo: "\u203A",
1.4445 + euro: "\u20AC",
1.4446 +
1.4447 + // non-standard entities
1.4448 + apos: "'"
1.4449 +};
1.4450 +
1.4451 +/**
1.4452 + * @author envjs team
1.4453 + */
1.4454 +
1.4455 +EntityReference = function() {
1.4456 + throw new Error("EntityReference Not Implemented" );
1.4457 +};
1.4458 +
1.4459 +/**
1.4460 + * @class DOMImplementation -
1.4461 + * provides a number of methods for performing operations
1.4462 + * that are independent of any particular instance of the
1.4463 + * document object model.
1.4464 + *
1.4465 + * @author Jon van Noort (jon@webarcana.com.au)
1.4466 + */
1.4467 +DOMImplementation = function() {
1.4468 + this.preserveWhiteSpace = false; // by default, ignore whitespace
1.4469 + this.namespaceAware = true; // by default, handle namespaces
1.4470 + this.errorChecking = true; // by default, test for exceptions
1.4471 +};
1.4472 +
1.4473 +__extend__(DOMImplementation.prototype,{
1.4474 + // @param feature : string - The package name of the feature to test.
1.4475 + // the legal only values are "XML" and "CORE" (case-insensitive).
1.4476 + // @param version : string - This is the version number of the package
1.4477 + // name to test. In Level 1, this is the string "1.0".*
1.4478 + // @return : boolean
1.4479 + hasFeature : function(feature, version) {
1.4480 + var ret = false;
1.4481 + if (feature.toLowerCase() == "xml") {
1.4482 + ret = (!version || (version == "1.0") || (version == "2.0"));
1.4483 + }
1.4484 + else if (feature.toLowerCase() == "core") {
1.4485 + ret = (!version || (version == "2.0"));
1.4486 + }
1.4487 + else if (feature == "http://www.w3.org/TR/SVG11/feature#BasicStructure") {
1.4488 + ret = (version == "1.1");
1.4489 + }
1.4490 + return ret;
1.4491 + },
1.4492 + createDocumentType : function(qname, publicId, systemId){
1.4493 + var doctype = new DocumentType();
1.4494 + doctype.nodeName = qname?qname.toUpperCase():null;
1.4495 + doctype.publicId = publicId?publicId:null;
1.4496 + doctype.systemId = systemId?systemId:null;
1.4497 + return doctype;
1.4498 + },
1.4499 + createDocument : function(nsuri, qname, doctype){
1.4500 +
1.4501 + var doc = null, documentElement;
1.4502 +
1.4503 + doc = new Document(this, null);
1.4504 + if(doctype){
1.4505 + doc.doctype = doctype;
1.4506 + }
1.4507 +
1.4508 + if(nsuri && qname){
1.4509 + documentElement = doc.createElementNS(nsuri, qname);
1.4510 + }else if(qname){
1.4511 + documentElement = doc.createElement(qname);
1.4512 + }
1.4513 + if(documentElement){
1.4514 + doc.appendChild(documentElement);
1.4515 + }
1.4516 + return doc;
1.4517 + },
1.4518 + createHTMLDocument : function(title){
1.4519 + var doc = new HTMLDocument($implementation, null, "");
1.4520 + var html = doc.createElement("html"); doc.appendChild(html);
1.4521 + var head = doc.createElement("head"); html.appendChild(head);
1.4522 + var body = doc.createElement("body"); html.appendChild(body);
1.4523 + var t = doc.createElement("title"); head.appendChild(t);
1.4524 + if( title) {
1.4525 + t.appendChild(doc.createTextNode(title));
1.4526 + }
1.4527 + return doc;
1.4528 + },
1.4529 + translateErrCode : function(code) {
1.4530 + //convert DOMException Code to human readable error message;
1.4531 + var msg = "";
1.4532 +
1.4533 + switch (code) {
1.4534 + case DOMException.INDEX_SIZE_ERR : // 1
1.4535 + msg = "INDEX_SIZE_ERR: Index out of bounds";
1.4536 + break;
1.4537 +
1.4538 + case DOMException.DOMSTRING_SIZE_ERR : // 2
1.4539 + msg = "DOMSTRING_SIZE_ERR: The resulting string is too long to fit in a DOMString";
1.4540 + break;
1.4541 +
1.4542 + case DOMException.HIERARCHY_REQUEST_ERR : // 3
1.4543 + msg = "HIERARCHY_REQUEST_ERR: The Node can not be inserted at this location";
1.4544 + break;
1.4545 +
1.4546 + case DOMException.WRONG_DOCUMENT_ERR : // 4
1.4547 + msg = "WRONG_DOCUMENT_ERR: The source and the destination Documents are not the same";
1.4548 + break;
1.4549 +
1.4550 + case DOMException.INVALID_CHARACTER_ERR : // 5
1.4551 + msg = "INVALID_CHARACTER_ERR: The string contains an invalid character";
1.4552 + break;
1.4553 +
1.4554 + case DOMException.NO_DATA_ALLOWED_ERR : // 6
1.4555 + msg = "NO_DATA_ALLOWED_ERR: This Node / NodeList does not support data";
1.4556 + break;
1.4557 +
1.4558 + case DOMException.NO_MODIFICATION_ALLOWED_ERR : // 7
1.4559 + msg = "NO_MODIFICATION_ALLOWED_ERR: This object cannot be modified";
1.4560 + break;
1.4561 +
1.4562 + case DOMException.NOT_FOUND_ERR : // 8
1.4563 + msg = "NOT_FOUND_ERR: The item cannot be found";
1.4564 + break;
1.4565 +
1.4566 + case DOMException.NOT_SUPPORTED_ERR : // 9
1.4567 + msg = "NOT_SUPPORTED_ERR: This implementation does not support function";
1.4568 + break;
1.4569 +
1.4570 + case DOMException.INUSE_ATTRIBUTE_ERR : // 10
1.4571 + msg = "INUSE_ATTRIBUTE_ERR: The Attribute has already been assigned to another Element";
1.4572 + break;
1.4573 +
1.4574 + // Introduced in DOM Level 2:
1.4575 + case DOMException.INVALID_STATE_ERR : // 11
1.4576 + msg = "INVALID_STATE_ERR: The object is no longer usable";
1.4577 + break;
1.4578 +
1.4579 + case DOMException.SYNTAX_ERR : // 12
1.4580 + msg = "SYNTAX_ERR: Syntax error";
1.4581 + break;
1.4582 +
1.4583 + case DOMException.INVALID_MODIFICATION_ERR : // 13
1.4584 + msg = "INVALID_MODIFICATION_ERR: Cannot change the type of the object";
1.4585 + break;
1.4586 +
1.4587 + case DOMException.NAMESPACE_ERR : // 14
1.4588 + msg = "NAMESPACE_ERR: The namespace declaration is incorrect";
1.4589 + break;
1.4590 +
1.4591 + case DOMException.INVALID_ACCESS_ERR : // 15
1.4592 + msg = "INVALID_ACCESS_ERR: The object does not support this function";
1.4593 + break;
1.4594 +
1.4595 + default :
1.4596 + msg = "UNKNOWN: Unknown Exception Code ("+ code +")";
1.4597 + }
1.4598 +
1.4599 + return msg;
1.4600 + },
1.4601 + toString : function(){
1.4602 + return "[object DOMImplementation]";
1.4603 + }
1.4604 +});
1.4605 +
1.4606 +
1.4607 +
1.4608 +/**
1.4609 + * @method DOMImplementation._isNamespaceDeclaration - Return true, if attributeName is a namespace declaration
1.4610 + * @author Jon van Noort (jon@webarcana.com.au)
1.4611 + * @param attributeName : string - the attribute name
1.4612 + * @return : boolean
1.4613 + */
1.4614 +function __isNamespaceDeclaration__(attributeName) {
1.4615 + // test if attributeName is 'xmlns'
1.4616 + return (attributeName.indexOf('xmlns') > -1);
1.4617 +}
1.4618 +
1.4619 +/**
1.4620 + * @method DOMImplementation._isIdDeclaration - Return true, if attributeName is an id declaration
1.4621 + * @author Jon van Noort (jon@webarcana.com.au)
1.4622 + * @param attributeName : string - the attribute name
1.4623 + * @return : boolean
1.4624 + */
1.4625 +function __isIdDeclaration__(attributeName) {
1.4626 + // test if attributeName is 'id' (case insensitive)
1.4627 + return attributeName?(attributeName.toLowerCase() == 'id'):false;
1.4628 +}
1.4629 +
1.4630 +/**
1.4631 + * @method DOMImplementation._isValidName - Return true,
1.4632 + * if name contains no invalid characters
1.4633 + * @author Jon van Noort (jon@webarcana.com.au)
1.4634 + * @param name : string - the candidate name
1.4635 + * @return : boolean
1.4636 + */
1.4637 +function __isValidName__(name) {
1.4638 + // test if name contains only valid characters
1.4639 + return name.match(re_validName);
1.4640 +}
1.4641 +var re_validName = /^[a-zA-Z_:][a-zA-Z0-9\.\-_:]*$/;
1.4642 +
1.4643 +/**
1.4644 + * @method DOMImplementation._isValidString - Return true, if string does not contain any illegal chars
1.4645 + * All of the characters 0 through 31 and character 127 are nonprinting control characters.
1.4646 + * With the exception of characters 09, 10, and 13, (Ox09, Ox0A, and Ox0D)
1.4647 + * Note: different from _isValidName in that ValidStrings may contain spaces
1.4648 + * @author Jon van Noort (jon@webarcana.com.au)
1.4649 + * @param name : string - the candidate string
1.4650 + * @return : boolean
1.4651 + */
1.4652 +function __isValidString__(name) {
1.4653 + // test that string does not contains invalid characters
1.4654 + return (name.search(re_invalidStringChars) < 0);
1.4655 +}
1.4656 +var re_invalidStringChars = /\x01|\x02|\x03|\x04|\x05|\x06|\x07|\x08|\x0B|\x0C|\x0E|\x0F|\x10|\x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F|\x7F/;
1.4657 +
1.4658 +/**
1.4659 + * @method DOMImplementation._parseNSName - parse the namespace name.
1.4660 + * if there is no colon, the
1.4661 + * @author Jon van Noort (jon@webarcana.com.au)
1.4662 + * @param qualifiedName : string - The qualified name
1.4663 + * @return : NSName - [
1.4664 + .prefix : string - The prefix part of the qname
1.4665 + .namespaceName : string - The namespaceURI part of the qname
1.4666 + ]
1.4667 + */
1.4668 +function __parseNSName__(qualifiedName) {
1.4669 + var resultNSName = {};
1.4670 + // unless the qname has a namespaceName, the prefix is the entire String
1.4671 + resultNSName.prefix = qualifiedName;
1.4672 + resultNSName.namespaceName = "";
1.4673 + // split on ':'
1.4674 + var delimPos = qualifiedName.indexOf(':');
1.4675 + if (delimPos > -1) {
1.4676 + // get prefix
1.4677 + resultNSName.prefix = qualifiedName.substring(0, delimPos);
1.4678 + // get namespaceName
1.4679 + resultNSName.namespaceName = qualifiedName.substring(delimPos +1, qualifiedName.length);
1.4680 + }
1.4681 + return resultNSName;
1.4682 +}
1.4683 +
1.4684 +/**
1.4685 + * @method DOMImplementation._parseQName - parse the qualified name
1.4686 + * @author Jon van Noort (jon@webarcana.com.au)
1.4687 + * @param qualifiedName : string - The qualified name
1.4688 + * @return : QName
1.4689 + */
1.4690 +function __parseQName__(qualifiedName) {
1.4691 + var resultQName = {};
1.4692 + // unless the qname has a prefix, the local name is the entire String
1.4693 + resultQName.localName = qualifiedName;
1.4694 + resultQName.prefix = "";
1.4695 + // split on ':'
1.4696 + var delimPos = qualifiedName.indexOf(':');
1.4697 + if (delimPos > -1) {
1.4698 + // get prefix
1.4699 + resultQName.prefix = qualifiedName.substring(0, delimPos);
1.4700 + // get localName
1.4701 + resultQName.localName = qualifiedName.substring(delimPos +1, qualifiedName.length);
1.4702 + }
1.4703 + return resultQName;
1.4704 +}
1.4705 +/**
1.4706 + * @author envjs team
1.4707 + */
1.4708 +Notation = function() {
1.4709 + throw new Error("Notation Not Implemented" );
1.4710 +};/**
1.4711 + * @author thatcher
1.4712 + */
1.4713 +Range = function(){
1.4714 +
1.4715 +};
1.4716 +
1.4717 +__extend__(Range.prototype, {
1.4718 + get startContainer(){
1.4719 +
1.4720 + },
1.4721 + get endContainer(){
1.4722 +
1.4723 + },
1.4724 + get startOffset(){
1.4725 +
1.4726 + },
1.4727 + get endOffset(){
1.4728 +
1.4729 + },
1.4730 + get collapsed(){
1.4731 +
1.4732 + },
1.4733 + get commonAncestorContainer(){
1.4734 +
1.4735 + },
1.4736 + setStart: function(refNode, offset){//throws RangeException
1.4737 +
1.4738 + },
1.4739 + setEnd: function(refNode, offset){//throws RangeException
1.4740 +
1.4741 + },
1.4742 + setStartBefore: function(refNode){//throws RangeException
1.4743 +
1.4744 + },
1.4745 + setStartAfter: function(refNode){//throws RangeException
1.4746 +
1.4747 + },
1.4748 + setEndBefore: function(refNode){//throws RangeException
1.4749 +
1.4750 + },
1.4751 + setEndAfter: function(refNode){//throws RangeException
1.4752 +
1.4753 + },
1.4754 + collapse: function(toStart){//throws RangeException
1.4755 +
1.4756 + },
1.4757 + selectNode: function(refNode){//throws RangeException
1.4758 +
1.4759 + },
1.4760 + selectNodeContents: function(refNode){//throws RangeException
1.4761 +
1.4762 + },
1.4763 + compareBoundaryPoints: function(how, sourceRange){
1.4764 +
1.4765 + },
1.4766 + deleteContents: function(){
1.4767 +
1.4768 + },
1.4769 + extractContents: function(){
1.4770 +
1.4771 + },
1.4772 + cloneContents: function(){
1.4773 +
1.4774 + },
1.4775 + insertNode: function(newNode){
1.4776 +
1.4777 + },
1.4778 + surroundContents: function(newParent){
1.4779 +
1.4780 + },
1.4781 + cloneRange: function(){
1.4782 +
1.4783 + },
1.4784 + toString: function(){
1.4785 + return '[object Range]';
1.4786 + },
1.4787 + detach: function(){
1.4788 +
1.4789 + }
1.4790 +});
1.4791 +
1.4792 +
1.4793 + // CompareHow
1.4794 +Range.START_TO_START = 0;
1.4795 +Range.START_TO_END = 1;
1.4796 +Range.END_TO_END = 2;
1.4797 +Range.END_TO_START = 3;
1.4798 +
1.4799 +/*
1.4800 + * Forward declarations
1.4801 + */
1.4802 +var __isValidNamespace__;
1.4803 +
1.4804 +/**
1.4805 + * @class Document - The Document interface represents the entire HTML
1.4806 + * or XML document. Conceptually, it is the root of the document tree,
1.4807 + * and provides the primary access to the document's data.
1.4808 + *
1.4809 + * @extends Node
1.4810 + * @param implementation : DOMImplementation - the creator Implementation
1.4811 + */
1.4812 +Document = function(implementation, docParentWindow) {
1.4813 + Node.apply(this, arguments);
1.4814 +
1.4815 + //TODO: Temporary!!! Cnage back to true!!!
1.4816 + this.async = true;
1.4817 + // The Document Type Declaration (see DocumentType) associated with this document
1.4818 + this.doctype = null;
1.4819 + // The DOMImplementation object that handles this document.
1.4820 + this.implementation = implementation;
1.4821 +
1.4822 + this.nodeName = "#document";
1.4823 + // initially false, set to true by parser
1.4824 + this.parsing = false;
1.4825 + this.baseURI = 'about:blank';
1.4826 +
1.4827 + this.ownerDocument = null;
1.4828 +
1.4829 + this.importing = false;
1.4830 +};
1.4831 +
1.4832 +Document.prototype = new Node();
1.4833 +__extend__(Document.prototype,{
1.4834 + get localName(){
1.4835 + return null;
1.4836 + },
1.4837 + get textContent(){
1.4838 + return null;
1.4839 + },
1.4840 + get all(){
1.4841 + return this.getElementsByTagName("*");
1.4842 + },
1.4843 + get documentElement(){
1.4844 + var i, length = this.childNodes?this.childNodes.length:0;
1.4845 + for(i=0;i<length;i++){
1.4846 + if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
1.4847 + return this.childNodes[i];
1.4848 + }
1.4849 + }
1.4850 + return null;
1.4851 + },
1.4852 + get documentURI(){
1.4853 + return this.baseURI;
1.4854 + },
1.4855 + createExpression: function(xpath, nsuriMap){
1.4856 + return new XPathExpression(xpath, nsuriMap);
1.4857 + },
1.4858 + createDocumentFragment: function() {
1.4859 + var node = new DocumentFragment(this);
1.4860 + return node;
1.4861 + },
1.4862 + createTextNode: function(data) {
1.4863 + var node = new Text(this);
1.4864 + node.data = data;
1.4865 + return node;
1.4866 + },
1.4867 + createComment: function(data) {
1.4868 + var node = new Comment(this);
1.4869 + node.data = data;
1.4870 + return node;
1.4871 + },
1.4872 + createCDATASection : function(data) {
1.4873 + var node = new CDATASection(this);
1.4874 + node.data = data;
1.4875 + return node;
1.4876 + },
1.4877 + createProcessingInstruction: function(target, data) {
1.4878 + // throw Exception if the target string contains an illegal character
1.4879 + if (__ownerDocument__(this).implementation.errorChecking &&
1.4880 + (!__isValidName__(target))) {
1.4881 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
1.4882 + }
1.4883 +
1.4884 + var node = new ProcessingInstruction(this);
1.4885 + node.target = target;
1.4886 + node.data = data;
1.4887 + return node;
1.4888 + },
1.4889 + createElement: function(tagName) {
1.4890 + // throw Exception if the tagName string contains an illegal character
1.4891 + if (__ownerDocument__(this).implementation.errorChecking &&
1.4892 + (!__isValidName__(tagName))) {
1.4893 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
1.4894 + }
1.4895 + var node = new Element(this);
1.4896 + node.nodeName = tagName;
1.4897 + return node;
1.4898 + },
1.4899 + createElementNS : function(namespaceURI, qualifiedName) {
1.4900 + //we use this as a parser flag to ignore the xhtml
1.4901 + //namespace assumed by the parser
1.4902 + //console.log('creating element %s %s', namespaceURI, qualifiedName);
1.4903 + if(this.baseURI === 'http://envjs.com/xml' &&
1.4904 + namespaceURI === 'http://www.w3.org/1999/xhtml'){
1.4905 + return this.createElement(qualifiedName);
1.4906 + }
1.4907 + //console.log('createElementNS %s %s', namespaceURI, qualifiedName);
1.4908 + if (__ownerDocument__(this).implementation.errorChecking) {
1.4909 + // throw Exception if the Namespace is invalid
1.4910 + if (!__isValidNamespace__(this, namespaceURI, qualifiedName)) {
1.4911 + throw(new DOMException(DOMException.NAMESPACE_ERR));
1.4912 + }
1.4913 +
1.4914 + // throw Exception if the qualifiedName string contains an illegal character
1.4915 + if (!__isValidName__(qualifiedName)) {
1.4916 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
1.4917 + }
1.4918 + }
1.4919 + var node = new Element(this);
1.4920 + var qname = __parseQName__(qualifiedName);
1.4921 + node.namespaceURI = namespaceURI;
1.4922 + node.prefix = qname.prefix;
1.4923 + node.nodeName = qualifiedName;
1.4924 +
1.4925 + //console.log('created element %s %s', namespaceURI, qualifiedName);
1.4926 + return node;
1.4927 + },
1.4928 + createAttribute : function(name) {
1.4929 + //console.log('createAttribute %s ', name);
1.4930 + // throw Exception if the name string contains an illegal character
1.4931 + if (__ownerDocument__(this).implementation.errorChecking &&
1.4932 + (!__isValidName__(name))) {
1.4933 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
1.4934 + }
1.4935 + var node = new Attr(this);
1.4936 + node.nodeName = name;
1.4937 + return node;
1.4938 + },
1.4939 + createAttributeNS : function(namespaceURI, qualifiedName) {
1.4940 + //we use this as a parser flag to ignore the xhtml
1.4941 + //namespace assumed by the parser
1.4942 + if(this.baseURI === 'http://envjs.com/xml' &&
1.4943 + namespaceURI === 'http://www.w3.org/1999/xhtml'){
1.4944 + return this.createAttribute(qualifiedName);
1.4945 + }
1.4946 + //console.log('createAttributeNS %s %s', namespaceURI, qualifiedName);
1.4947 + // test for exceptions
1.4948 + if (this.implementation.errorChecking) {
1.4949 + // throw Exception if the Namespace is invalid
1.4950 + if (!__isValidNamespace__(this, namespaceURI, qualifiedName, true)) {
1.4951 + throw(new DOMException(DOMException.NAMESPACE_ERR));
1.4952 + }
1.4953 +
1.4954 + // throw Exception if the qualifiedName string contains an illegal character
1.4955 + if (!__isValidName__(qualifiedName)) {
1.4956 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
1.4957 + }
1.4958 + }
1.4959 + var node = new Attr(this);
1.4960 + var qname = __parseQName__(qualifiedName);
1.4961 + node.namespaceURI = namespaceURI === '' ? null : namespaceURI;
1.4962 + node.prefix = qname.prefix;
1.4963 + node.nodeName = qualifiedName;
1.4964 + node.nodeValue = "";
1.4965 + //console.log('attribute %s %s %s', node.namespaceURI, node.prefix, node.nodeName);
1.4966 + return node;
1.4967 + },
1.4968 + createNamespace : function(qualifiedName) {
1.4969 + //console.log('createNamespace %s', qualifiedName);
1.4970 + // create Namespace specifying 'this' as ownerDocument
1.4971 + var node = new Namespace(this);
1.4972 + var qname = __parseQName__(qualifiedName);
1.4973 +
1.4974 + // assign values to properties (and aliases)
1.4975 + node.prefix = qname.prefix;
1.4976 + node.localName = qname.localName;
1.4977 + node.name = qualifiedName;
1.4978 + node.nodeValue = "";
1.4979 +
1.4980 + return node;
1.4981 + },
1.4982 +
1.4983 + createRange: function(){
1.4984 + return new Range();
1.4985 + },
1.4986 +
1.4987 + evaluate: function(xpathText, contextNode, nsuriMapper, resultType, result){
1.4988 + //return new XPathExpression().evaluate();
1.4989 + throw Error('Document.evaluate not supported yet!');
1.4990 + },
1.4991 +
1.4992 + getElementById : function(elementId) {
1.4993 + var retNode = null,
1.4994 + node;
1.4995 + // loop through all Elements
1.4996 + var all = this.getElementsByTagName('*');
1.4997 + for (var i=0; i < all.length; i++) {
1.4998 + node = all[i];
1.4999 + // if id matches
1.5000 + if (node.id == elementId) {
1.5001 + //found the node
1.5002 + retNode = node;
1.5003 + break;
1.5004 + }
1.5005 + }
1.5006 + return retNode;
1.5007 + },
1.5008 + normalizeDocument: function(){
1.5009 + this.normalize();
1.5010 + },
1.5011 + get nodeType(){
1.5012 + return Node.DOCUMENT_NODE;
1.5013 + },
1.5014 + get xml(){
1.5015 + return this.documentElement.xml;
1.5016 + },
1.5017 + toString: function(){
1.5018 + return "[object XMLDocument]";
1.5019 + },
1.5020 + get defaultView(){
1.5021 + return { getComputedStyle: function(elem){
1.5022 + return window.getComputedStyle(elem);
1.5023 + }};
1.5024 + },
1.5025 +});
1.5026 +
1.5027 +/*
1.5028 + * Helper function
1.5029 + *
1.5030 + */
1.5031 +__isValidNamespace__ = function(doc, namespaceURI, qualifiedName, isAttribute) {
1.5032 +
1.5033 + if (doc.importing === true) {
1.5034 + //we're doing an importNode operation (or a cloneNode) - in both cases, there
1.5035 + //is no need to perform any namespace checking since the nodes have to have been valid
1.5036 + //to have gotten into the DOM in the first place
1.5037 + return true;
1.5038 + }
1.5039 +
1.5040 + var valid = true;
1.5041 + // parse QName
1.5042 + var qName = __parseQName__(qualifiedName);
1.5043 +
1.5044 +
1.5045 + //only check for namespaces if we're finished parsing
1.5046 + if (this.parsing === false) {
1.5047 +
1.5048 + // if the qualifiedName is malformed
1.5049 + if (qName.localName.indexOf(":") > -1 ){
1.5050 + valid = false;
1.5051 + }
1.5052 +
1.5053 + if ((valid) && (!isAttribute)) {
1.5054 + // if the namespaceURI is not null
1.5055 + if (!namespaceURI) {
1.5056 + valid = false;
1.5057 + }
1.5058 + }
1.5059 +
1.5060 + // if the qualifiedName has a prefix
1.5061 + if ((valid) && (qName.prefix === "")) {
1.5062 + valid = false;
1.5063 + }
1.5064 + }
1.5065 +
1.5066 + // if the qualifiedName has a prefix that is "xml" and the namespaceURI is
1.5067 + // different from "http://www.w3.org/XML/1998/namespace" [Namespaces].
1.5068 + if ((valid) && (qName.prefix === "xml") && (namespaceURI !== "http://www.w3.org/XML/1998/namespace")) {
1.5069 + valid = false;
1.5070 + }
1.5071 +
1.5072 + return valid;
1.5073 +};
1.5074 +/**
1.5075 + *
1.5076 + * This file only handles XML parser.
1.5077 + * It is extended by parser/domparser.js (and parser/htmlparser.js)
1.5078 + *
1.5079 + * This depends on e4x, which some engines may not have.
1.5080 + *
1.5081 + * @author thatcher
1.5082 + */
1.5083 +DOMParser = function(principle, documentURI, baseURI) {
1.5084 + // TODO: why/what should these 3 args do?
1.5085 +};
1.5086 +__extend__(DOMParser.prototype,{
1.5087 + parseFromString: function(xmlstring, mimetype){
1.5088 + var doc = new Document(new DOMImplementation()),
1.5089 + e4;
1.5090 +
1.5091 + // The following are e4x directives.
1.5092 + // Full spec is here:
1.5093 + // http://www.ecma-international.org/publications/standards/Ecma-357.htm
1.5094 + //
1.5095 + // that is pretty gross, so checkout this summary
1.5096 + // http://rephrase.net/days/07/06/e4x
1.5097 + //
1.5098 + // also see the Mozilla Developer Center:
1.5099 + // https://developer.mozilla.org/en/E4X
1.5100 + //
1.5101 + XML.ignoreComments = false;
1.5102 + XML.ignoreProcessingInstructions = false;
1.5103 + XML.ignoreWhitespace = false;
1.5104 +
1.5105 + // for some reason e4x can't handle initial xml declarations
1.5106 + // https://bugzilla.mozilla.org/show_bug.cgi?id=336551
1.5107 + // The official workaround is the big regexp below
1.5108 + // but simpler one seems to be ok
1.5109 + // xmlstring = xmlstring.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, "");
1.5110 + //
1.5111 + xmlstring = xmlstring.replace(/<\?xml.*\?>/);
1.5112 +
1.5113 + e4 = new XMLList(xmlstring);
1.5114 +
1.5115 + __toDomNode__(e4, doc, doc);
1.5116 +
1.5117 + //console.log('xml \n %s', doc.documentElement.xml);
1.5118 + return doc;
1.5119 + }
1.5120 +});
1.5121 +
1.5122 +var __toDomNode__ = function(e4, parent, doc){
1.5123 + var xnode,
1.5124 + domnode,
1.5125 + children,
1.5126 + target,
1.5127 + value,
1.5128 + length,
1.5129 + element,
1.5130 + kind,
1.5131 + item;
1.5132 + //console.log('converting e4x node list \n %s', e4)
1.5133 +
1.5134 + // not using the for each(item in e4) since some engines can't
1.5135 + // handle the syntax (i.e. says syntax error)
1.5136 + //
1.5137 + // for each(xnode in e4) {
1.5138 + for (item in e4) {
1.5139 + // NO do not do this if (e4.hasOwnProperty(item)) {
1.5140 + // breaks spidermonkey
1.5141 + xnode = e4[item];
1.5142 +
1.5143 + kind = xnode.nodeKind();
1.5144 + //console.log('treating node kind %s', kind);
1.5145 + switch(kind){
1.5146 + case 'element':
1.5147 + // add node
1.5148 + //console.log('creating element %s %s', xnode.localName(), xnode.namespace());
1.5149 + if(xnode.namespace() && (xnode.namespace()+'') !== ''){
1.5150 + //console.log('createElementNS %s %s',xnode.namespace()+'', xnode.localName() );
1.5151 + domnode = doc.createElementNS(xnode.namespace()+'', xnode.localName());
1.5152 + }else{
1.5153 + domnode = doc.createElement(xnode.name()+'');
1.5154 + }
1.5155 + parent.appendChild(domnode);
1.5156 +
1.5157 + // add attributes
1.5158 + __toDomNode__(xnode.attributes(), domnode, doc);
1.5159 +
1.5160 + // add children
1.5161 + children = xnode.children();
1.5162 + length = children.length();
1.5163 + //console.log('recursing? %s', length ? 'yes' : 'no');
1.5164 + if (length > 0) {
1.5165 + __toDomNode__(children, domnode, doc);
1.5166 + }
1.5167 + break;
1.5168 + case 'attribute':
1.5169 + // console.log('setting attribute %s %s %s',
1.5170 + // xnode.localName(), xnode.namespace(), xnode.valueOf());
1.5171 +
1.5172 + //
1.5173 + // cross-platform alert. The original code used
1.5174 + // xnode.text() to get the attribute value
1.5175 + // This worked in Rhino, but did not in Spidermonkey
1.5176 + // valueOf seemed to work in both
1.5177 + //
1.5178 + if(xnode.namespace() && xnode.namespace().prefix){
1.5179 + //console.log("%s", xnode.namespace().prefix);
1.5180 + parent.setAttributeNS(xnode.namespace()+'',
1.5181 + xnode.namespace().prefix+':'+xnode.localName(),
1.5182 + xnode.valueOf());
1.5183 + }else if((xnode.name()+'').match('http://www.w3.org/2000/xmlns/::')){
1.5184 + if(xnode.localName()!=='xmlns'){
1.5185 + parent.setAttributeNS('http://www.w3.org/2000/xmlns/',
1.5186 + 'xmlns:'+xnode.localName(),
1.5187 + xnode.valueOf());
1.5188 + }
1.5189 + }else{
1.5190 + parent.setAttribute(xnode.localName()+'', xnode.valueOf());
1.5191 + }
1.5192 + break;
1.5193 + case 'text':
1.5194 + //console.log('creating text node : %s', xnode);
1.5195 + domnode = doc.createTextNode(xnode+'');
1.5196 + parent.appendChild(domnode);
1.5197 + break;
1.5198 + case 'comment':
1.5199 + //console.log('creating comment node : %s', xnode);
1.5200 + value = xnode+'';
1.5201 + domnode = doc.createComment(value.substring(4,value.length-3));
1.5202 + parent.appendChild(domnode);
1.5203 + break;
1.5204 + case 'processing-instruction':
1.5205 + //console.log('creating processing-instruction node : %s', xnode);
1.5206 + value = xnode+'';
1.5207 + target = value.split(' ')[0].substring(2);
1.5208 + value = value.split(' ').splice(1).join(' ').replace('?>','');
1.5209 + //console.log('creating processing-instruction data : %s', value);
1.5210 + domnode = doc.createProcessingInstruction(target, value);
1.5211 + parent.appendChild(domnode);
1.5212 + break;
1.5213 + default:
1.5214 + console.log('e4x DOM ERROR');
1.5215 + throw new Error("Assertion failed in xml parser");
1.5216 + }
1.5217 + }
1.5218 +};
1.5219 +/**
1.5220 + * @author envjs team
1.5221 + * @class XMLSerializer
1.5222 + */
1.5223 +
1.5224 +XMLSerializer = function() {};
1.5225 +
1.5226 +__extend__(XMLSerializer.prototype, {
1.5227 + serializeToString: function(node){
1.5228 + return node.xml;
1.5229 + },
1.5230 + toString : function(){
1.5231 + return "[object XMLSerializer]";
1.5232 + }
1.5233 +});
1.5234 +
1.5235 +/**
1.5236 + * @author john resig & the envjs team
1.5237 + * @uri http://www.envjs.com/
1.5238 + * @copyright 2008-2010
1.5239 + * @license MIT
1.5240 + */
1.5241 +//CLOSURE_END
1.5242 +}());
1.5243 +/*
1.5244 + * Envjs event.1.2.13
1.5245 + * Pure JavaScript Browser Environment
1.5246 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.5247 + * Copyright 2008-2010 John Resig, under the MIT License
1.5248 + *
1.5249 + * This file simply provides the global definitions we need to
1.5250 + * be able to correctly implement to core browser DOM Event interfaces.
1.5251 + */
1.5252 +var Event,
1.5253 + MouseEvent,
1.5254 + UIEvent,
1.5255 + KeyboardEvent,
1.5256 + MutationEvent,
1.5257 + DocumentEvent,
1.5258 + EventTarget,
1.5259 + EventException,
1.5260 + //nonstandard but very useful for implementing mutation events
1.5261 + //among other things like general profiling
1.5262 + Aspect;
1.5263 +/*
1.5264 + * Envjs event.1.2.13
1.5265 + * Pure JavaScript Browser Environment
1.5266 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.5267 + * Copyright 2008-2010 John Resig, under the MIT License
1.5268 + */
1.5269 +
1.5270 +//CLOSURE_START
1.5271 +(function(){
1.5272 +
1.5273 +
1.5274 +
1.5275 +
1.5276 +
1.5277 +/**
1.5278 + * @author john resig
1.5279 + */
1.5280 +// Helper method for extending one object with another.
1.5281 +function __extend__(a,b) {
1.5282 + for ( var i in b ) {
1.5283 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.5284 + if ( g || s ) {
1.5285 + if ( g ) { a.__defineGetter__(i, g); }
1.5286 + if ( s ) { a.__defineSetter__(i, s); }
1.5287 + } else {
1.5288 + a[i] = b[i];
1.5289 + }
1.5290 + } return a;
1.5291 +}
1.5292 +
1.5293 +/**
1.5294 + * @author john resig
1.5295 + */
1.5296 +//from jQuery
1.5297 +function __setArray__( target, array ) {
1.5298 + // Resetting the length to 0, then using the native Array push
1.5299 + // is a super-fast way to populate an object with array-like properties
1.5300 + target.length = 0;
1.5301 + Array.prototype.push.apply( target, array );
1.5302 +}
1.5303 +/**
1.5304 + * Borrowed with love from:
1.5305 + *
1.5306 + * jQuery AOP - jQuery plugin to add features of aspect-oriented programming (AOP) to jQuery.
1.5307 + * http://jquery-aop.googlecode.com/
1.5308 + *
1.5309 + * Licensed under the MIT license:
1.5310 + * http://www.opensource.org/licenses/mit-license.php
1.5311 + *
1.5312 + * Version: 1.1
1.5313 + */
1.5314 +(function() {
1.5315 +
1.5316 + var _after = 1;
1.5317 + var _before = 2;
1.5318 + var _around = 3;
1.5319 + var _intro = 4;
1.5320 + var _regexEnabled = true;
1.5321 +
1.5322 + /**
1.5323 + * Private weaving function.
1.5324 + */
1.5325 + var weaveOne = function(source, method, advice) {
1.5326 +
1.5327 + var old = source[method];
1.5328 +
1.5329 + var aspect;
1.5330 + if (advice.type == _after)
1.5331 + aspect = function() {
1.5332 + var returnValue = old.apply(this, arguments);
1.5333 + return advice.value.apply(this, [returnValue, method]);
1.5334 + };
1.5335 + else if (advice.type == _before)
1.5336 + aspect = function() {
1.5337 + advice.value.apply(this, [arguments, method]);
1.5338 + return old.apply(this, arguments);
1.5339 + };
1.5340 + else if (advice.type == _intro)
1.5341 + aspect = function() {
1.5342 + return advice.value.apply(this, arguments);
1.5343 + };
1.5344 + else if (advice.type == _around) {
1.5345 + aspect = function() {
1.5346 + var invocation = { object: this, args: arguments };
1.5347 + return advice.value.apply(invocation.object, [{ arguments: invocation.args, method: method, proceed :
1.5348 + function() {
1.5349 + return old.apply(invocation.object, invocation.args);
1.5350 + }
1.5351 + }] );
1.5352 + };
1.5353 + }
1.5354 +
1.5355 + aspect.unweave = function() {
1.5356 + source[method] = old;
1.5357 + pointcut = source = aspect = old = null;
1.5358 + };
1.5359 +
1.5360 + source[method] = aspect;
1.5361 +
1.5362 + return aspect;
1.5363 +
1.5364 + };
1.5365 +
1.5366 +
1.5367 + /**
1.5368 + * Private weaver and pointcut parser.
1.5369 + */
1.5370 + var weave = function(pointcut, advice)
1.5371 + {
1.5372 +
1.5373 + var source = (typeof(pointcut.target.prototype) != 'undefined') ? pointcut.target.prototype : pointcut.target;
1.5374 + var advices = [];
1.5375 +
1.5376 + // If it's not an introduction and no method was found, try with regex...
1.5377 + if (advice.type != _intro && typeof(source[pointcut.method]) == 'undefined')
1.5378 + {
1.5379 +
1.5380 + for (var method in source)
1.5381 + {
1.5382 + if (source[method] != null && source[method] instanceof Function && method.match(pointcut.method))
1.5383 + {
1.5384 + advices[advices.length] = weaveOne(source, method, advice);
1.5385 + }
1.5386 + }
1.5387 +
1.5388 + if (advices.length == 0)
1.5389 + throw 'No method: ' + pointcut.method;
1.5390 +
1.5391 + }
1.5392 + else
1.5393 + {
1.5394 + // Return as an array of one element
1.5395 + advices[0] = weaveOne(source, pointcut.method, advice);
1.5396 + }
1.5397 +
1.5398 + return _regexEnabled ? advices : advices[0];
1.5399 +
1.5400 + };
1.5401 +
1.5402 + Aspect =
1.5403 + {
1.5404 + /**
1.5405 + * Creates an advice after the defined point-cut. The advice will be executed after the point-cut method
1.5406 + * has completed execution successfully, and will receive one parameter with the result of the execution.
1.5407 + * This function returns an array of weaved aspects (Function).
1.5408 + *
1.5409 + * @example jQuery.aop.after( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
1.5410 + * @result Array<Function>
1.5411 + *
1.5412 + * @example jQuery.aop.after( {target: String, method: 'indexOf'}, function(index) { alert('Result found at: ' + index + ' on:' + this); } );
1.5413 + * @result Array<Function>
1.5414 + *
1.5415 + * @name after
1.5416 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
1.5417 + * @option Object target Target object to be weaved.
1.5418 + * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
1.5419 + * @param Function advice Function containing the code that will get called after the execution of the point-cut. It receives one parameter
1.5420 + * with the result of the point-cut's execution.
1.5421 + *
1.5422 + * @type Array<Function>
1.5423 + * @cat Plugins/General
1.5424 + */
1.5425 + after : function(pointcut, advice)
1.5426 + {
1.5427 + return weave( pointcut, { type: _after, value: advice } );
1.5428 + },
1.5429 +
1.5430 + /**
1.5431 + * Creates an advice before the defined point-cut. The advice will be executed before the point-cut method
1.5432 + * but cannot modify the behavior of the method, or prevent its execution.
1.5433 + * This function returns an array of weaved aspects (Function).
1.5434 + *
1.5435 + * @example jQuery.aop.before( {target: window, method: 'MyGlobalMethod'}, function() { alert('About to execute MyGlobalMethod'); } );
1.5436 + * @result Array<Function>
1.5437 + *
1.5438 + * @example jQuery.aop.before( {target: String, method: 'indexOf'}, function(index) { alert('About to execute String.indexOf on: ' + this); } );
1.5439 + * @result Array<Function>
1.5440 + *
1.5441 + * @name before
1.5442 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
1.5443 + * @option Object target Target object to be weaved.
1.5444 + * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
1.5445 + * @param Function advice Function containing the code that will get called before the execution of the point-cut.
1.5446 + *
1.5447 + * @type Array<Function>
1.5448 + * @cat Plugins/General
1.5449 + */
1.5450 + before : function(pointcut, advice)
1.5451 + {
1.5452 + return weave( pointcut, { type: _before, value: advice } );
1.5453 + },
1.5454 +
1.5455 +
1.5456 + /**
1.5457 + * Creates an advice 'around' the defined point-cut. This type of advice can control the point-cut method execution by calling
1.5458 + * the functions '.proceed()' on the 'invocation' object, and also, can modify the arguments collection before sending them to the function call.
1.5459 + * This function returns an array of weaved aspects (Function).
1.5460 + *
1.5461 + * @example jQuery.aop.around( {target: window, method: 'MyGlobalMethod'}, function(invocation) {
1.5462 + * alert('# of Arguments: ' + invocation.arguments.length);
1.5463 + * return invocation.proceed();
1.5464 + * } );
1.5465 + * @result Array<Function>
1.5466 + *
1.5467 + * @example jQuery.aop.around( {target: String, method: 'indexOf'}, function(invocation) {
1.5468 + * alert('Searching: ' + invocation.arguments[0] + ' on: ' + this);
1.5469 + * return invocation.proceed();
1.5470 + * } );
1.5471 + * @result Array<Function>
1.5472 + *
1.5473 + * @example jQuery.aop.around( {target: window, method: /Get(\d+)/}, function(invocation) {
1.5474 + * alert('Executing ' + invocation.method);
1.5475 + * return invocation.proceed();
1.5476 + * } );
1.5477 + * @desc Matches all global methods starting with 'Get' and followed by a number.
1.5478 + * @result Array<Function>
1.5479 + *
1.5480 + *
1.5481 + * @name around
1.5482 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
1.5483 + * @option Object target Target object to be weaved.
1.5484 + * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
1.5485 + * @param Function advice Function containing the code that will get called around the execution of the point-cut. This advice will be called with one
1.5486 + * argument containing one function '.proceed()', the collection of arguments '.arguments', and the matched method name '.method'.
1.5487 + *
1.5488 + * @type Array<Function>
1.5489 + * @cat Plugins/General
1.5490 + */
1.5491 + around : function(pointcut, advice)
1.5492 + {
1.5493 + return weave( pointcut, { type: _around, value: advice } );
1.5494 + },
1.5495 +
1.5496 + /**
1.5497 + * Creates an introduction on the defined point-cut. This type of advice replaces any existing methods with the same
1.5498 + * name. To restore them, just unweave it.
1.5499 + * This function returns an array with only one weaved aspect (Function).
1.5500 + *
1.5501 + * @example jQuery.aop.introduction( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
1.5502 + * @result Array<Function>
1.5503 + *
1.5504 + * @example jQuery.aop.introduction( {target: String, method: 'log'}, function() { alert('Console: ' + this); } );
1.5505 + * @result Array<Function>
1.5506 + *
1.5507 + * @name introduction
1.5508 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
1.5509 + * @option Object target Target object to be weaved.
1.5510 + * @option String method Name of the function to be weaved.
1.5511 + * @param Function advice Function containing the code that will be executed on the point-cut.
1.5512 + *
1.5513 + * @type Array<Function>
1.5514 + * @cat Plugins/General
1.5515 + */
1.5516 + introduction : function(pointcut, advice)
1.5517 + {
1.5518 + return weave( pointcut, { type: _intro, value: advice } );
1.5519 + },
1.5520 +
1.5521 + /**
1.5522 + * Configures global options.
1.5523 + *
1.5524 + * @name setup
1.5525 + * @param Map settings Configuration options.
1.5526 + * @option Boolean regexMatch Enables/disables regex matching of method names.
1.5527 + *
1.5528 + * @example jQuery.aop.setup( { regexMatch: false } );
1.5529 + * @desc Disable regex matching.
1.5530 + *
1.5531 + * @type Void
1.5532 + * @cat Plugins/General
1.5533 + */
1.5534 + setup: function(settings)
1.5535 + {
1.5536 + _regexEnabled = settings.regexMatch;
1.5537 + }
1.5538 + };
1.5539 +
1.5540 +})();
1.5541 +
1.5542 +
1.5543 +
1.5544 +
1.5545 +/**
1.5546 + * @name EventTarget
1.5547 + * @w3c:domlevel 2
1.5548 + * @uri -//TODO: paste dom event level 2 w3c spc uri here
1.5549 + */
1.5550 +EventTarget = function(){};
1.5551 +EventTarget.prototype.addEventListener = function(type, fn, phase){
1.5552 + __addEventListener__(this, type, fn, phase);
1.5553 +};
1.5554 +EventTarget.prototype.removeEventListener = function(type, fn){
1.5555 + __removeEventListener__(this, type, fn);
1.5556 +};
1.5557 +EventTarget.prototype.dispatchEvent = function(event, bubbles){
1.5558 + __dispatchEvent__(this, event, bubbles);
1.5559 +};
1.5560 +
1.5561 +__extend__(Node.prototype, EventTarget.prototype);
1.5562 +
1.5563 +
1.5564 +var $events = [{}];
1.5565 +
1.5566 +function __addEventListener__(target, type, fn, phase){
1.5567 + phase = !!phase?"CAPTURING":"BUBBLING";
1.5568 + if ( !target.uuid ) {
1.5569 + //console.log('event uuid %s %s', target, target.uuid);
1.5570 + target.uuid = $events.length+'';
1.5571 + }
1.5572 + if ( !$events[target.uuid] ) {
1.5573 + //console.log('creating listener for target: %s %s', target, target.uuid);
1.5574 + $events[target.uuid] = {};
1.5575 + }
1.5576 + if ( !$events[target.uuid][type] ){
1.5577 + //console.log('creating listener for type: %s %s %s', target, target.uuid, type);
1.5578 + $events[target.uuid][type] = {
1.5579 + CAPTURING:[],
1.5580 + BUBBLING:[]
1.5581 + };
1.5582 + }
1.5583 + if ( $events[target.uuid][type][phase].indexOf( fn ) < 0 ){
1.5584 + //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
1.5585 + // $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
1.5586 + //console.log('creating listener for function: %s %s %s', target, target.uuid, phase);
1.5587 + $events[target.uuid][type][phase].push( fn );
1.5588 + //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
1.5589 + // $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
1.5590 + }
1.5591 + //console.log('registered event listeners %s', $events.length);
1.5592 +}
1.5593 +
1.5594 +function __removeEventListener__(target, type, fn, phase){
1.5595 +
1.5596 + phase = !!phase?"CAPTURING":"BUBBLING";
1.5597 + if ( !target.uuid ) {
1.5598 + return;
1.5599 + }
1.5600 + if ( !$events[target.uuid] ) {
1.5601 + return;
1.5602 + }
1.5603 + if(type == '*'){
1.5604 + //used to clean all event listeners for a given node
1.5605 + //console.log('cleaning all event listeners for node %s %s',target, target.uuid);
1.5606 + delete $events[target.uuid];
1.5607 + return;
1.5608 + }else if ( !$events[target.uuid][type] ){
1.5609 + return;
1.5610 + }
1.5611 + $events[target.uuid][type][phase] =
1.5612 + $events[target.uuid][type][phase].filter(function(f){
1.5613 + //console.log('removing event listener %s %s %s %s', target, type, phase, fn);
1.5614 + return f != fn;
1.5615 + });
1.5616 +}
1.5617 +
1.5618 +var __eventuuid__ = 0;
1.5619 +function __dispatchEvent__(target, event, bubbles){
1.5620 +
1.5621 + if (!event.uuid) {
1.5622 + event.uuid = __eventuuid__++;
1.5623 + }
1.5624 + //the window scope defines the $event object, for IE(^^^) compatibility;
1.5625 + //$event = event;
1.5626 + //console.log('dispatching event %s', event.uuid);
1.5627 + if (bubbles === undefined || bubbles === null) {
1.5628 + bubbles = true;
1.5629 + }
1.5630 +
1.5631 + if (!event.target) {
1.5632 + event.target = target;
1.5633 + }
1.5634 +
1.5635 + //console.log('dispatching? %s %s %s', target, event.type, bubbles);
1.5636 + if ( event.type && (target.nodeType || target === window )) {
1.5637 +
1.5638 + //console.log('dispatching event %s %s %s', target, event.type, bubbles);
1.5639 + __captureEvent__(target, event);
1.5640 +
1.5641 + event.eventPhase = Event.AT_TARGET;
1.5642 + if ( target.uuid && $events[target.uuid] && $events[target.uuid][event.type] ) {
1.5643 + event.currentTarget = target;
1.5644 + //console.log('dispatching %s %s %s %s', target, event.type,
1.5645 + // $events[target.uuid][event.type]['CAPTURING'].length);
1.5646 + $events[target.uuid][event.type].CAPTURING.forEach(function(fn){
1.5647 + //console.log('AT_TARGET (CAPTURING) event %s', fn);
1.5648 + var returnValue = fn( event );
1.5649 + //console.log('AT_TARGET (CAPTURING) return value %s', returnValue);
1.5650 + if(returnValue === false){
1.5651 + event.stopPropagation();
1.5652 + }
1.5653 + });
1.5654 + //console.log('dispatching %s %s %s %s', target, event.type,
1.5655 + // $events[target.uuid][event.type]['BUBBLING'].length);
1.5656 + $events[target.uuid][event.type].BUBBLING.forEach(function(fn){
1.5657 + //console.log('AT_TARGET (BUBBLING) event %s', fn);
1.5658 + var returnValue = fn( event );
1.5659 + //console.log('AT_TARGET (BUBBLING) return value %s', returnValue);
1.5660 + if(returnValue === false){
1.5661 + event.stopPropagation();
1.5662 + }
1.5663 + });
1.5664 + }
1.5665 + if (target["on" + event.type]) {
1.5666 + target["on" + event.type](event);
1.5667 + }
1.5668 + if (bubbles && !event.cancelled){
1.5669 + __bubbleEvent__(target, event);
1.5670 + }
1.5671 + if(!event._preventDefault){
1.5672 + //At this point I'm guessing that just HTMLEvents are concerned
1.5673 + //with default behavior being executed in a browser but I could be
1.5674 + //wrong as usual. The goal is much more to filter at this point
1.5675 + //what events have no need to be handled
1.5676 + //console.log('triggering default behavior for %s', event.type);
1.5677 + if(event.type in Envjs.defaultEventBehaviors){
1.5678 + Envjs.defaultEventBehaviors[event.type](event);
1.5679 + }
1.5680 + }
1.5681 + //console.log('deleting event %s', event.uuid);
1.5682 + event.target = null;
1.5683 + event = null;
1.5684 + }else{
1.5685 + throw new EventException(EventException.UNSPECIFIED_EVENT_TYPE_ERR);
1.5686 + }
1.5687 +}
1.5688 +
1.5689 +function __captureEvent__(target, event){
1.5690 + var ancestorStack = [],
1.5691 + parent = target.parentNode;
1.5692 +
1.5693 + event.eventPhase = Event.CAPTURING_PHASE;
1.5694 + while(parent){
1.5695 + if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type]){
1.5696 + ancestorStack.push(parent);
1.5697 + }
1.5698 + parent = parent.parentNode;
1.5699 + }
1.5700 + while(ancestorStack.length && !event.cancelled){
1.5701 + event.currentTarget = ancestorStack.pop();
1.5702 + if($events[event.currentTarget.uuid] && $events[event.currentTarget.uuid][event.type]){
1.5703 + $events[event.currentTarget.uuid][event.type].CAPTURING.forEach(function(fn){
1.5704 + var returnValue = fn( event );
1.5705 + if(returnValue === false){
1.5706 + event.stopPropagation();
1.5707 + }
1.5708 + });
1.5709 + }
1.5710 + }
1.5711 +}
1.5712 +
1.5713 +function __bubbleEvent__(target, event){
1.5714 + var parent = target.parentNode;
1.5715 + event.eventPhase = Event.BUBBLING_PHASE;
1.5716 + while(parent){
1.5717 + if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type] ){
1.5718 + event.currentTarget = parent;
1.5719 + $events[event.currentTarget.uuid][event.type].BUBBLING.forEach(function(fn){
1.5720 + var returnValue = fn( event );
1.5721 + if(returnValue === false){
1.5722 + event.stopPropagation();
1.5723 + }
1.5724 + });
1.5725 + }
1.5726 + parent = parent.parentNode;
1.5727 + }
1.5728 +}
1.5729 +
1.5730 +/**
1.5731 + * @class Event
1.5732 + */
1.5733 +Event = function(options){
1.5734 + // event state is kept read-only by forcing
1.5735 + // a new object for each event. This may not
1.5736 + // be appropriate in the long run and we'll
1.5737 + // have to decide if we simply dont adhere to
1.5738 + // the read-only restriction of the specification
1.5739 + this._bubbles = true;
1.5740 + this._cancelable = true;
1.5741 + this._cancelled = false;
1.5742 + this._currentTarget = null;
1.5743 + this._target = null;
1.5744 + this._eventPhase = Event.AT_TARGET;
1.5745 + this._timeStamp = new Date().getTime();
1.5746 + this._preventDefault = false;
1.5747 + this._stopPropogation = false;
1.5748 +};
1.5749 +
1.5750 +__extend__(Event.prototype,{
1.5751 + get bubbles(){return this._bubbles;},
1.5752 + get cancelable(){return this._cancelable;},
1.5753 + get currentTarget(){return this._currentTarget;},
1.5754 + set currentTarget(currentTarget){ this._currentTarget = currentTarget; },
1.5755 + get eventPhase(){return this._eventPhase;},
1.5756 + set eventPhase(eventPhase){this._eventPhase = eventPhase;},
1.5757 + get target(){return this._target;},
1.5758 + set target(target){ this._target = target;},
1.5759 + get timeStamp(){return this._timeStamp;},
1.5760 + get type(){return this._type;},
1.5761 + initEvent: function(type, bubbles, cancelable){
1.5762 + this._type=type?type:'';
1.5763 + this._bubbles=!!bubbles;
1.5764 + this._cancelable=!!cancelable;
1.5765 + },
1.5766 + preventDefault: function(){
1.5767 + this._preventDefault = true;
1.5768 + },
1.5769 + stopPropagation: function(){
1.5770 + if(this._cancelable){
1.5771 + this._cancelled = true;
1.5772 + this._bubbles = false;
1.5773 + }
1.5774 + },
1.5775 + get cancelled(){
1.5776 + return this._cancelled;
1.5777 + },
1.5778 + toString: function(){
1.5779 + return '[object Event]';
1.5780 + }
1.5781 +});
1.5782 +
1.5783 +__extend__(Event,{
1.5784 + CAPTURING_PHASE : 1,
1.5785 + AT_TARGET : 2,
1.5786 + BUBBLING_PHASE : 3
1.5787 +});
1.5788 +
1.5789 +
1.5790 +
1.5791 +/**
1.5792 + * @name UIEvent
1.5793 + * @param {Object} options
1.5794 + */
1.5795 +UIEvent = function(options) {
1.5796 + this._view = null;
1.5797 + this._detail = 0;
1.5798 +};
1.5799 +
1.5800 +UIEvent.prototype = new Event();
1.5801 +__extend__(UIEvent.prototype,{
1.5802 + get view(){
1.5803 + return this._view;
1.5804 + },
1.5805 + get detail(){
1.5806 + return this._detail;
1.5807 + },
1.5808 + initUIEvent: function(type, bubbles, cancelable, windowObject, detail){
1.5809 + this.initEvent(type, bubbles, cancelable);
1.5810 + this._detail = 0;
1.5811 + this._view = windowObject;
1.5812 + }
1.5813 +});
1.5814 +
1.5815 +var $onblur,
1.5816 + $onfocus,
1.5817 + $onresize;
1.5818 +
1.5819 +
1.5820 +/**
1.5821 + * @name MouseEvent
1.5822 + * @w3c:domlevel 2
1.5823 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
1.5824 + */
1.5825 +MouseEvent = function(options) {
1.5826 + this._screenX= 0;
1.5827 + this._screenY= 0;
1.5828 + this._clientX= 0;
1.5829 + this._clientY= 0;
1.5830 + this._ctrlKey= false;
1.5831 + this._metaKey= false;
1.5832 + this._altKey= false;
1.5833 + this._button= null;
1.5834 + this._relatedTarget= null;
1.5835 +};
1.5836 +MouseEvent.prototype = new UIEvent();
1.5837 +__extend__(MouseEvent.prototype,{
1.5838 + get screenX(){
1.5839 + return this._screenX;
1.5840 + },
1.5841 + get screenY(){
1.5842 + return this._screenY;
1.5843 + },
1.5844 + get clientX(){
1.5845 + return this._clientX;
1.5846 + },
1.5847 + get clientY(){
1.5848 + return this._clientY;
1.5849 + },
1.5850 + get ctrlKey(){
1.5851 + return this._ctrlKey;
1.5852 + },
1.5853 + get altKey(){
1.5854 + return this._altKey;
1.5855 + },
1.5856 + get shiftKey(){
1.5857 + return this._shiftKey;
1.5858 + },
1.5859 + get metaKey(){
1.5860 + return this._metaKey;
1.5861 + },
1.5862 + get button(){
1.5863 + return this._button;
1.5864 + },
1.5865 + get relatedTarget(){
1.5866 + return this._relatedTarget;
1.5867 + },
1.5868 + initMouseEvent: function(type, bubbles, cancelable, windowObject, detail,
1.5869 + screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey,
1.5870 + metaKey, button, relatedTarget){
1.5871 + this.initUIEvent(type, bubbles, cancelable, windowObject, detail);
1.5872 + this._screenX = screenX;
1.5873 + this._screenY = screenY;
1.5874 + this._clientX = clientX;
1.5875 + this._clientY = clientY;
1.5876 + this._ctrlKey = ctrlKey;
1.5877 + this._altKey = altKey;
1.5878 + this._shiftKey = shiftKey;
1.5879 + this._metaKey = metaKey;
1.5880 + this._button = button;
1.5881 + this._relatedTarget = relatedTarget;
1.5882 + }
1.5883 +});
1.5884 +
1.5885 +/**
1.5886 + * Interface KeyboardEvent (introduced in DOM Level 3)
1.5887 + */
1.5888 +KeyboardEvent = function(options) {
1.5889 + this._keyIdentifier = 0;
1.5890 + this._keyLocation = 0;
1.5891 + this._ctrlKey = false;
1.5892 + this._metaKey = false;
1.5893 + this._altKey = false;
1.5894 + this._metaKey = false;
1.5895 +};
1.5896 +KeyboardEvent.prototype = new UIEvent();
1.5897 +
1.5898 +__extend__(KeyboardEvent.prototype,{
1.5899 +
1.5900 + get ctrlKey(){
1.5901 + return this._ctrlKey;
1.5902 + },
1.5903 + get altKey(){
1.5904 + return this._altKey;
1.5905 + },
1.5906 + get shiftKey(){
1.5907 + return this._shiftKey;
1.5908 + },
1.5909 + get metaKey(){
1.5910 + return this._metaKey;
1.5911 + },
1.5912 + get button(){
1.5913 + return this._button;
1.5914 + },
1.5915 + get relatedTarget(){
1.5916 + return this._relatedTarget;
1.5917 + },
1.5918 + getModifiersState: function(keyIdentifier){
1.5919 +
1.5920 + },
1.5921 + initMouseEvent: function(type, bubbles, cancelable, windowObject,
1.5922 + keyIdentifier, keyLocation, modifiersList, repeat){
1.5923 + this.initUIEvent(type, bubbles, cancelable, windowObject, 0);
1.5924 + this._keyIdentifier = keyIdentifier;
1.5925 + this._keyLocation = keyLocation;
1.5926 + this._modifiersList = modifiersList;
1.5927 + this._repeat = repeat;
1.5928 + }
1.5929 +});
1.5930 +
1.5931 +KeyboardEvent.DOM_KEY_LOCATION_STANDARD = 0;
1.5932 +KeyboardEvent.DOM_KEY_LOCATION_LEFT = 1;
1.5933 +KeyboardEvent.DOM_KEY_LOCATION_RIGHT = 2;
1.5934 +KeyboardEvent.DOM_KEY_LOCATION_NUMPAD = 3;
1.5935 +KeyboardEvent.DOM_KEY_LOCATION_MOBILE = 4;
1.5936 +KeyboardEvent.DOM_KEY_LOCATION_JOYSTICK = 5;
1.5937 +
1.5938 +
1.5939 +
1.5940 +//We dont fire mutation events until someone has registered for them
1.5941 +var __supportedMutations__ = /DOMSubtreeModified|DOMNodeInserted|DOMNodeRemoved|DOMAttrModified|DOMCharacterDataModified/;
1.5942 +
1.5943 +var __fireMutationEvents__ = Aspect.before({
1.5944 + target: EventTarget,
1.5945 + method: 'addEventListener'
1.5946 +}, function(target, type){
1.5947 + if(type && type.match(__supportedMutations__)){
1.5948 + //unweaving removes the __addEventListener__ aspect
1.5949 + __fireMutationEvents__.unweave();
1.5950 + // These two methods are enough to cover all dom 2 manipulations
1.5951 + Aspect.around({
1.5952 + target: Node,
1.5953 + method:"removeChild"
1.5954 + }, function(invocation){
1.5955 + var event,
1.5956 + node = invocation.arguments[0];
1.5957 + event = node.ownerDocument.createEvent('MutationEvents');
1.5958 + event.initEvent('DOMNodeRemoved', true, false, node.parentNode, null, null, null, null);
1.5959 + node.dispatchEvent(event, false);
1.5960 + return invocation.proceed();
1.5961 +
1.5962 + });
1.5963 + Aspect.around({
1.5964 + target: Node,
1.5965 + method:"appendChild"
1.5966 + }, function(invocation) {
1.5967 + var event,
1.5968 + node = invocation.proceed();
1.5969 + event = node.ownerDocument.createEvent('MutationEvents');
1.5970 + event.initEvent('DOMNodeInserted', true, false, node.parentNode, null, null, null, null);
1.5971 + node.dispatchEvent(event, false);
1.5972 + return node;
1.5973 + });
1.5974 + }
1.5975 +});
1.5976 +
1.5977 +/**
1.5978 + * @name MutationEvent
1.5979 + * @param {Object} options
1.5980 + */
1.5981 +MutationEvent = function(options) {
1.5982 + this._cancelable = false;
1.5983 + this._timeStamp = 0;
1.5984 +};
1.5985 +
1.5986 +MutationEvent.prototype = new Event();
1.5987 +__extend__(MutationEvent.prototype,{
1.5988 + get relatedNode(){
1.5989 + return this._relatedNode;
1.5990 + },
1.5991 + get prevValue(){
1.5992 + return this._prevValue;
1.5993 + },
1.5994 + get newValue(){
1.5995 + return this._newValue;
1.5996 + },
1.5997 + get attrName(){
1.5998 + return this._attrName;
1.5999 + },
1.6000 + get attrChange(){
1.6001 + return this._attrChange;
1.6002 + },
1.6003 + initMutationEvent: function( type, bubbles, cancelable,
1.6004 + relatedNode, prevValue, newValue, attrName, attrChange ){
1.6005 + this._relatedNode = relatedNode;
1.6006 + this._prevValue = prevValue;
1.6007 + this._newValue = newValue;
1.6008 + this._attrName = attrName;
1.6009 + this._attrChange = attrChange;
1.6010 + switch(type){
1.6011 + case "DOMSubtreeModified":
1.6012 + this.initEvent(type, true, false);
1.6013 + break;
1.6014 + case "DOMNodeInserted":
1.6015 + this.initEvent(type, true, false);
1.6016 + break;
1.6017 + case "DOMNodeRemoved":
1.6018 + this.initEvent(type, true, false);
1.6019 + break;
1.6020 + case "DOMNodeRemovedFromDocument":
1.6021 + this.initEvent(type, false, false);
1.6022 + break;
1.6023 + case "DOMNodeInsertedIntoDocument":
1.6024 + this.initEvent(type, false, false);
1.6025 + break;
1.6026 + case "DOMAttrModified":
1.6027 + this.initEvent(type, true, false);
1.6028 + break;
1.6029 + case "DOMCharacterDataModified":
1.6030 + this.initEvent(type, true, false);
1.6031 + break;
1.6032 + default:
1.6033 + this.initEvent(type, bubbles, cancelable);
1.6034 + }
1.6035 + }
1.6036 +});
1.6037 +
1.6038 +// constants
1.6039 +MutationEvent.ADDITION = 0;
1.6040 +MutationEvent.MODIFICATION = 1;
1.6041 +MutationEvent.REMOVAL = 2;
1.6042 +
1.6043 +
1.6044 +/**
1.6045 + * @name EventException
1.6046 + */
1.6047 +EventException = function(code) {
1.6048 + this.code = code;
1.6049 +};
1.6050 +EventException.UNSPECIFIED_EVENT_TYPE_ERR = 0;
1.6051 +/**
1.6052 + *
1.6053 + * DOM Level 2: http://www.w3.org/TR/DOM-Level-2-Events/events.html
1.6054 + * DOM Level 3: http://www.w3.org/TR/DOM-Level-3-Events/
1.6055 + *
1.6056 + * interface DocumentEvent {
1.6057 + * Event createEvent (in DOMString eventType)
1.6058 + * raises (DOMException);
1.6059 + * };
1.6060 + *
1.6061 + * Firefox (3.6) exposes DocumentEvent
1.6062 + * Safari (4) does NOT.
1.6063 + */
1.6064 +
1.6065 +/**
1.6066 + * TODO: Not sure we need a full prototype. We not just an regular object?
1.6067 + */
1.6068 +DocumentEvent = function(){};
1.6069 +DocumentEvent.prototype.__EventMap__ = {
1.6070 + // Safari4: singular and plural forms accepted
1.6071 + // Firefox3.6: singular and plural forms accepted
1.6072 + 'Event' : Event,
1.6073 + 'Events' : Event,
1.6074 + 'UIEvent' : UIEvent,
1.6075 + 'UIEvents' : UIEvent,
1.6076 + 'MouseEvent' : MouseEvent,
1.6077 + 'MouseEvents' : MouseEvent,
1.6078 + 'MutationEvent' : MutationEvent,
1.6079 + 'MutationEvents' : MutationEvent,
1.6080 +
1.6081 + // Safari4: accepts HTMLEvents, but not HTMLEvent
1.6082 + // Firefox3.6: accepts HTMLEvents, but not HTMLEvent
1.6083 + 'HTMLEvent' : Event,
1.6084 + 'HTMLEvents' : Event,
1.6085 +
1.6086 + // Safari4: both not accepted
1.6087 + // Firefox3.6, only KeyEvents is accepted
1.6088 + 'KeyEvent' : KeyboardEvent,
1.6089 + 'KeyEvents' : KeyboardEvent,
1.6090 +
1.6091 + // Safari4: both accepted
1.6092 + // Firefox3.6: none accepted
1.6093 + 'KeyboardEvent' : KeyboardEvent,
1.6094 + 'KeyboardEvents' : KeyboardEvent
1.6095 +};
1.6096 +
1.6097 +DocumentEvent.prototype.createEvent = function(eventType) {
1.6098 + var Clazz = this.__EventMap__[eventType];
1.6099 + if (Clazz) {
1.6100 + return new Clazz();
1.6101 + }
1.6102 + throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
1.6103 +};
1.6104 +
1.6105 +__extend__(Document.prototype, DocumentEvent.prototype);
1.6106 +
1.6107 +/**
1.6108 + * @author john resig & the envjs team
1.6109 + * @uri http://www.envjs.com/
1.6110 + * @copyright 2008-2010
1.6111 + * @license MIT
1.6112 + */
1.6113 +//CLOSURE_END
1.6114 +}());
1.6115 +
1.6116 +/*
1.6117 + * Envjs timer.1.2.13
1.6118 + * Pure JavaScript Browser Environment
1.6119 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.6120 + * Copyright 2008-2010 John Resig, under the MIT License
1.6121 + *
1.6122 + * Parts of the implementation were originally written by:\
1.6123 + * Steven Parkes
1.6124 + *
1.6125 + * requires Envjs.wait, Envjs.sleep, Envjs.WAIT_INTERVAL
1.6126 + */
1.6127 +var setTimeout,
1.6128 + clearTimeout,
1.6129 + setInterval,
1.6130 + clearInterval;
1.6131 +
1.6132 +/*
1.6133 + * Envjs timer.1.2.13
1.6134 + * Pure JavaScript Browser Environment
1.6135 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.6136 + * Copyright 2008-2010 John Resig, under the MIT License
1.6137 + */
1.6138 +
1.6139 +//CLOSURE_START
1.6140 +(function(){
1.6141 +
1.6142 +
1.6143 +
1.6144 +
1.6145 +/*
1.6146 +* timer.js
1.6147 +* implementation provided by Steven Parkes
1.6148 +*/
1.6149 +
1.6150 +//private
1.6151 +var $timers = [],
1.6152 + EVENT_LOOP_RUNNING = false;
1.6153 +
1.6154 +$timers.lock = function(fn){
1.6155 + Envjs.sync(fn)();
1.6156 +};
1.6157 +
1.6158 +//private internal class
1.6159 +var Timer = function(fn, interval){
1.6160 + this.fn = fn;
1.6161 + this.interval = interval;
1.6162 + this.at = Date.now() + interval;
1.6163 + // allows for calling wait() from callbacks
1.6164 + this.running = false;
1.6165 +};
1.6166 +
1.6167 +Timer.prototype.start = function(){};
1.6168 +Timer.prototype.stop = function(){};
1.6169 +
1.6170 +//static
1.6171 +Timer.normalize = function(time) {
1.6172 + time = time*1;
1.6173 + if ( isNaN(time) || time < 0 ) {
1.6174 + time = 0;
1.6175 + }
1.6176 +
1.6177 + if ( EVENT_LOOP_RUNNING && time < Timer.MIN_TIME ) {
1.6178 + time = Timer.MIN_TIME;
1.6179 + }
1.6180 + return time;
1.6181 +};
1.6182 +// html5 says this should be at least 4, but the parser is using
1.6183 +// a setTimeout for the SAX stuff which messes up the world
1.6184 +Timer.MIN_TIME = /* 4 */ 0;
1.6185 +
1.6186 +/**
1.6187 + * @function setTimeout
1.6188 + * @param {Object} fn
1.6189 + * @param {Object} time
1.6190 + */
1.6191 +setTimeout = function(fn, time){
1.6192 + var num;
1.6193 + time = Timer.normalize(time);
1.6194 + $timers.lock(function(){
1.6195 + num = $timers.length+1;
1.6196 + var tfn;
1.6197 + if (typeof fn == 'string') {
1.6198 + tfn = function() {
1.6199 + try {
1.6200 + // eval in global scope
1.6201 + eval(fn, null);
1.6202 + // } catch (e) {
1.6203 + // console.log('timer error %s %s', fn, e);
1.6204 + } finally {
1.6205 + clearInterval(num);
1.6206 + }
1.6207 + };
1.6208 + } else {
1.6209 + tfn = function() {
1.6210 + try {
1.6211 + fn();
1.6212 + // } catch (e) {
1.6213 + // console.log('timer error %s %s', fn, e);
1.6214 + } finally {
1.6215 + clearInterval(num);
1.6216 + }
1.6217 + };
1.6218 + }
1.6219 + //console.log("Creating timer number %s", num);
1.6220 + $timers[num] = new Timer(tfn, time);
1.6221 + $timers[num].start();
1.6222 + });
1.6223 + return num;
1.6224 +};
1.6225 +
1.6226 +/**
1.6227 + * @function setInterval
1.6228 + * @param {Object} fn
1.6229 + * @param {Object} time
1.6230 + */
1.6231 +setInterval = function(fn, time){
1.6232 + //console.log('setting interval %s %s', time, fn.toString().substring(0,64));
1.6233 + time = Timer.normalize(time);
1.6234 + if ( time < 10 ) {
1.6235 + time = 10;
1.6236 + }
1.6237 + if (typeof fn == 'string') {
1.6238 + var fnstr = fn;
1.6239 + fn = function() {
1.6240 + eval(fnstr);
1.6241 + };
1.6242 + }
1.6243 + var num;
1.6244 + $timers.lock(function(){
1.6245 + num = $timers.length+1;
1.6246 + //Envjs.debug("Creating timer number "+num);
1.6247 + $timers[num] = new Timer(fn, time);
1.6248 + $timers[num].start();
1.6249 + });
1.6250 + return num;
1.6251 +};
1.6252 +
1.6253 +/**
1.6254 + * clearInterval
1.6255 + * @param {Object} num
1.6256 + */
1.6257 +clearInterval = clearTimeout = function(num){
1.6258 + //console.log("clearing interval "+num);
1.6259 + $timers.lock(function(){
1.6260 + if ( $timers[num] ) {
1.6261 + $timers[num].stop();
1.6262 + delete $timers[num];
1.6263 + }
1.6264 + });
1.6265 +};
1.6266 +
1.6267 +// wait === null/undefined: execute any timers as they fire,
1.6268 +// waiting until there are none left
1.6269 +// wait(n) (n > 0): execute any timers as they fire until there
1.6270 +// are none left waiting at least n ms but no more, even if there
1.6271 +// are future events/current threads
1.6272 +// wait(0): execute any immediately runnable timers and return
1.6273 +// wait(-n): keep sleeping until the next event is more than n ms
1.6274 +// in the future
1.6275 +//
1.6276 +// TODO: make a priority queue ...
1.6277 +
1.6278 +Envjs.wait = function(wait) {
1.6279 + //console.log('wait %s', wait);
1.6280 + var delta_wait,
1.6281 + start = Date.now(),
1.6282 + was_running = EVENT_LOOP_RUNNING;
1.6283 +
1.6284 + if (wait < 0) {
1.6285 + delta_wait = -wait;
1.6286 + wait = 0;
1.6287 + }
1.6288 + EVENT_LOOP_RUNNING = true;
1.6289 + if (wait !== 0 && wait !== null && wait !== undefined){
1.6290 + wait += Date.now();
1.6291 + }
1.6292 +
1.6293 + var earliest,
1.6294 + timer,
1.6295 + sleep,
1.6296 + index,
1.6297 + goal,
1.6298 + now,
1.6299 + nextfn;
1.6300 +
1.6301 + for (;;) {
1.6302 + //console.log('timer loop');
1.6303 + earliest = sleep = goal = now = nextfn = null;
1.6304 + $timers.lock(function(){
1.6305 + for(index in $timers){
1.6306 + if( isNaN(index*0) ) {
1.6307 + continue;
1.6308 + }
1.6309 + timer = $timers[index];
1.6310 + // determine timer with smallest run-at time that is
1.6311 + // not already running
1.6312 + if( !timer.running && ( !earliest || timer.at < earliest.at) ) {
1.6313 + earliest = timer;
1.6314 + }
1.6315 + }
1.6316 + });
1.6317 + //next sleep time
1.6318 + sleep = earliest && earliest.at - Date.now();
1.6319 + if ( earliest && sleep <= 0 ) {
1.6320 + nextfn = earliest.fn;
1.6321 + try {
1.6322 + //console.log('running stack %s', nextfn.toString().substring(0,64));
1.6323 + earliest.running = true;
1.6324 + nextfn();
1.6325 + // } catch (e) {
1.6326 + // console.log('timer error %s %s', nextfn, e);
1.6327 + } finally {
1.6328 + earliest.running = false;
1.6329 + }
1.6330 + goal = earliest.at + earliest.interval;
1.6331 + now = Date.now();
1.6332 + if ( goal < now ) {
1.6333 + earliest.at = now;
1.6334 + } else {
1.6335 + earliest.at = goal;
1.6336 + }
1.6337 + continue;
1.6338 + }
1.6339 +
1.6340 + // bunch of subtle cases here ...
1.6341 + if ( !earliest ) {
1.6342 + // no events in the queue (but maybe XHR will bring in events, so ...
1.6343 + if ( !wait || wait < Date.now() ) {
1.6344 + // Loop ends if there are no events and a wait hasn't been
1.6345 + // requested or has expired
1.6346 + break;
1.6347 + }
1.6348 + // no events, but a wait requested: fall through to sleep
1.6349 + } else {
1.6350 + // there are events in the queue, but they aren't firable now
1.6351 + /*if ( delta_wait && sleep <= delta_wait ) {
1.6352 + //TODO: why waste a check on a tight
1.6353 + // loop if it just falls through?
1.6354 + // if they will happen within the next delta, fall through to sleep
1.6355 + } else */if ( wait === 0 || ( wait > 0 && wait < Date.now () ) ) {
1.6356 + // loop ends even if there are events but the user
1.6357 + // specifcally asked not to wait too long
1.6358 + break;
1.6359 + }
1.6360 + // there are events and the user wants to wait: fall through to sleep
1.6361 + }
1.6362 +
1.6363 + // Related to ajax threads ... hopefully can go away ..
1.6364 + var interval = Envjs.WAIT_INTERVAL || 100;
1.6365 + if ( !sleep || sleep > interval ) {
1.6366 + sleep = interval;
1.6367 + }
1.6368 + //console.log('sleeping %s', sleep);
1.6369 + Envjs.sleep(sleep);
1.6370 +
1.6371 + }
1.6372 + EVENT_LOOP_RUNNING = was_running;
1.6373 +};
1.6374 +
1.6375 +
1.6376 +/**
1.6377 + * @author john resig & the envjs team
1.6378 + * @uri http://www.envjs.com/
1.6379 + * @copyright 2008-2010
1.6380 + * @license MIT
1.6381 + */
1.6382 +//CLOSURE_END
1.6383 +}());
1.6384 +/*
1.6385 + * Pure JavaScript Browser Environment
1.6386 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.6387 + * Copyright 2008-2010 John Resig, under the MIT License
1.6388 + *
1.6389 + * This file simply provides the global definitions we need to
1.6390 + * be able to correctly implement to core browser DOM HTML interfaces.
1.6391 + */
1.6392 +var HTMLDocument,
1.6393 + HTMLElement,
1.6394 + HTMLCollection,
1.6395 + HTMLAnchorElement,
1.6396 + HTMLAreaElement,
1.6397 + HTMLBaseElement,
1.6398 + HTMLQuoteElement,
1.6399 + HTMLBodyElement,
1.6400 + HTMLBRElement,
1.6401 + HTMLButtonElement,
1.6402 + HTMLCanvasElement,
1.6403 + HTMLTableColElement,
1.6404 + HTMLModElement,
1.6405 + HTMLDivElement,
1.6406 + HTMLDListElement,
1.6407 + HTMLFieldSetElement,
1.6408 + HTMLFormElement,
1.6409 + HTMLFrameElement,
1.6410 + HTMLFrameSetElement,
1.6411 + HTMLHeadElement,
1.6412 + HTMLHeadingElement,
1.6413 + HTMLHRElement,
1.6414 + HTMLHtmlElement,
1.6415 + HTMLIFrameElement,
1.6416 + HTMLImageElement,
1.6417 + HTMLInputElement,
1.6418 + HTMLLabelElement,
1.6419 + HTMLLegendElement,
1.6420 + HTMLLIElement,
1.6421 + HTMLLinkElement,
1.6422 + HTMLMapElement,
1.6423 + HTMLMetaElement,
1.6424 + HTMLObjectElement,
1.6425 + HTMLOListElement,
1.6426 + HTMLOptGroupElement,
1.6427 + HTMLOptionElement,
1.6428 + HTMLParagraphElement,
1.6429 + HTMLParamElement,
1.6430 + HTMLPreElement,
1.6431 + HTMLScriptElement,
1.6432 + HTMLSelectElement,
1.6433 + HTMLSpanElement,
1.6434 + HTMLStyleElement,
1.6435 + HTMLTableElement,
1.6436 + HTMLTableSectionElement,
1.6437 + HTMLTableCellElement,
1.6438 + HTMLTableDataCellElement,
1.6439 + HTMLTableHeaderCellElement,
1.6440 + HTMLTableRowElement,
1.6441 + HTMLTextAreaElement,
1.6442 + HTMLTitleElement,
1.6443 + HTMLUListElement,
1.6444 + HTMLUnknownElement,
1.6445 + Image,
1.6446 + Option,
1.6447 + __loadImage__,
1.6448 + __loadLink__;
1.6449 +
1.6450 +/*
1.6451 + * Envjs html.1.2.13
1.6452 + * Pure JavaScript Browser Environment
1.6453 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.6454 + * Copyright 2008-2010 John Resig, under the MIT License
1.6455 + */
1.6456 +
1.6457 +//CLOSURE_START
1.6458 +(function(){
1.6459 +
1.6460 +
1.6461 +
1.6462 +
1.6463 +
1.6464 +/**
1.6465 + * @author ariel flesler
1.6466 + * http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
1.6467 + * @param {Object} str
1.6468 + */
1.6469 +function __trim__( str ){
1.6470 + return (str || "").replace( /^\s+|\s+$/g, "" );
1.6471 +}
1.6472 +
1.6473 +
1.6474 +/**
1.6475 + * @author john resig
1.6476 + */
1.6477 +// Helper method for extending one object with another.
1.6478 +function __extend__(a,b) {
1.6479 + for ( var i in b ) {
1.6480 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.6481 + if ( g || s ) {
1.6482 + if ( g ) { a.__defineGetter__(i, g); }
1.6483 + if ( s ) { a.__defineSetter__(i, s); }
1.6484 + } else {
1.6485 + a[i] = b[i];
1.6486 + }
1.6487 + } return a;
1.6488 +}
1.6489 +
1.6490 +/**
1.6491 + * @author john resig
1.6492 + */
1.6493 +//from jQuery
1.6494 +function __setArray__( target, array ) {
1.6495 + // Resetting the length to 0, then using the native Array push
1.6496 + // is a super-fast way to populate an object with array-like properties
1.6497 + target.length = 0;
1.6498 + Array.prototype.push.apply( target, array );
1.6499 +}
1.6500 +
1.6501 +/**
1.6502 + * @class HTMLDocument
1.6503 + * The Document interface represents the entire HTML or XML document.
1.6504 + * Conceptually, it is the root of the document tree, and provides
1.6505 + * the primary access to the document's data.
1.6506 + *
1.6507 + * @extends Document
1.6508 + */
1.6509 +HTMLDocument = function(implementation, ownerWindow, referrer) {
1.6510 + Document.apply(this, arguments);
1.6511 + this.referrer = referrer || '';
1.6512 + this.baseURI = "about:blank";
1.6513 + this.ownerWindow = ownerWindow;
1.6514 +};
1.6515 +
1.6516 +HTMLDocument.prototype = new Document();
1.6517 +
1.6518 +__extend__(HTMLDocument.prototype, {
1.6519 + createElement: function(tagName){
1.6520 + var node;
1.6521 + tagName = tagName.toUpperCase();
1.6522 + // create Element specifying 'this' as ownerDocument
1.6523 + // This is an html document so we need to use explicit interfaces per the
1.6524 + //TODO: would be much faster as a big switch
1.6525 + switch(tagName){
1.6526 + case "A":
1.6527 + node = new HTMLAnchorElement(this);break;
1.6528 + case "AREA":
1.6529 + node = new HTMLAreaElement(this);break;
1.6530 + case "BASE":
1.6531 + node = new HTMLBaseElement(this);break;
1.6532 + case "BLOCKQUOTE":
1.6533 + node = new HTMLQuoteElement(this);break;
1.6534 + case "CANVAS":
1.6535 + node = new HTMLCanvasElement(this);break;
1.6536 + case "Q":
1.6537 + node = new HTMLQuoteElement(this);break;
1.6538 + case "BODY":
1.6539 + node = new HTMLBodyElement(this);break;
1.6540 + case "BR":
1.6541 + node = new HTMLBRElement(this);break;
1.6542 + case "BUTTON":
1.6543 + node = new HTMLButtonElement(this);break;
1.6544 + case "CAPTION":
1.6545 + node = new HTMLElement(this);break;
1.6546 + case "COL":
1.6547 + node = new HTMLTableColElement(this);break;
1.6548 + case "COLGROUP":
1.6549 + node = new HTMLTableColElement(this);break;
1.6550 + case "DEL":
1.6551 + node = new HTMLModElement(this);break;
1.6552 + case "INS":
1.6553 + node = new HTMLModElement(this);break;
1.6554 + case "DIV":
1.6555 + node = new HTMLDivElement(this);break;
1.6556 + case "DL":
1.6557 + node = new HTMLDListElement(this);break;
1.6558 + case "DT":
1.6559 + node = new HTMLElement(this); break;
1.6560 + case "FIELDSET":
1.6561 + node = new HTMLFieldSetElement(this);break;
1.6562 + case "FORM":
1.6563 + node = new HTMLFormElement(this);break;
1.6564 + case "FRAME":
1.6565 + node = new HTMLFrameElement(this);break;
1.6566 + case "H1":
1.6567 + node = new HTMLHeadingElement(this);break;
1.6568 + case "H2":
1.6569 + node = new HTMLHeadingElement(this);break;
1.6570 + case "H3":
1.6571 + node = new HTMLHeadingElement(this);break;
1.6572 + case "H4":
1.6573 + node = new HTMLHeadingElement(this);break;
1.6574 + case "H5":
1.6575 + node = new HTMLHeadingElement(this);break;
1.6576 + case "H6":
1.6577 + node = new HTMLHeadingElement(this);break;
1.6578 + case "HEAD":
1.6579 + node = new HTMLHeadElement(this);break;
1.6580 + case "HR":
1.6581 + node = new HTMLHRElement(this);break;
1.6582 + case "HTML":
1.6583 + node = new HTMLHtmlElement(this);break;
1.6584 + case "IFRAME":
1.6585 + node = new HTMLIFrameElement(this);break;
1.6586 + case "IMG":
1.6587 + node = new HTMLImageElement(this);break;
1.6588 + case "INPUT":
1.6589 + node = new HTMLInputElement(this);break;
1.6590 + case "LABEL":
1.6591 + node = new HTMLLabelElement(this);break;
1.6592 + case "LEGEND":
1.6593 + node = new HTMLLegendElement(this);break;
1.6594 + case "LI":
1.6595 + node = new HTMLLIElement(this);break;
1.6596 + case "LINK":
1.6597 + node = new HTMLLinkElement(this);break;
1.6598 + case "MAP":
1.6599 + node = new HTMLMapElement(this);break;
1.6600 + case "META":
1.6601 + node = new HTMLMetaElement(this);break;
1.6602 + case "NOSCRIPT":
1.6603 + node = new HTMLElement(this);break;
1.6604 + case "OBJECT":
1.6605 + node = new HTMLObjectElement(this);break;
1.6606 + case "OPTGROUP":
1.6607 + node = new HTMLOptGroupElement(this);break;
1.6608 + case "OL":
1.6609 + node = new HTMLOListElement(this); break;
1.6610 + case "OPTION":
1.6611 + node = new HTMLOptionElement(this);break;
1.6612 + case "P":
1.6613 + node = new HTMLParagraphElement(this);break;
1.6614 + case "PARAM":
1.6615 + node = new HTMLParamElement(this);break;
1.6616 + case "PRE":
1.6617 + node = new HTMLPreElement(this);break;
1.6618 + case "SCRIPT":
1.6619 + node = new HTMLScriptElement(this);break;
1.6620 + case "SELECT":
1.6621 + node = new HTMLSelectElement(this);break;
1.6622 + case "SMALL":
1.6623 + node = new HTMLElement(this);break;
1.6624 + case "SPAN":
1.6625 + node = new HTMLSpanElement(this);break;
1.6626 + case "STRONG":
1.6627 + node = new HTMLElement(this);break;
1.6628 + case "STYLE":
1.6629 + node = new HTMLStyleElement(this);break;
1.6630 + case "TABLE":
1.6631 + node = new HTMLTableElement(this);break;
1.6632 + case "TBODY":
1.6633 + node = new HTMLTableSectionElement(this);break;
1.6634 + case "TFOOT":
1.6635 + node = new HTMLTableSectionElement(this);break;
1.6636 + case "THEAD":
1.6637 + node = new HTMLTableSectionElement(this);break;
1.6638 + case "TD":
1.6639 + node = new HTMLTableDataCellElement(this);break;
1.6640 + case "TH":
1.6641 + node = new HTMLTableHeaderCellElement(this);break;
1.6642 + case "TEXTAREA":
1.6643 + node = new HTMLTextAreaElement(this);break;
1.6644 + case "TITLE":
1.6645 + node = new HTMLTitleElement(this);break;
1.6646 + case "TR":
1.6647 + node = new HTMLTableRowElement(this);break;
1.6648 + case "UL":
1.6649 + node = new HTMLUListElement(this);break;
1.6650 + default:
1.6651 + node = new HTMLUnknownElement(this);
1.6652 + }
1.6653 + // assign values to properties (and aliases)
1.6654 + node.nodeName = tagName;
1.6655 + return node;
1.6656 + },
1.6657 + createElementNS : function (uri, local) {
1.6658 + //print('createElementNS :'+uri+" "+local);
1.6659 + if(!uri){
1.6660 + return this.createElement(local);
1.6661 + }else if ("http://www.w3.org/1999/xhtml" == uri) {
1.6662 + return this.createElement(local);
1.6663 + } else if ("http://www.w3.org/1998/Math/MathML" == uri) {
1.6664 + return this.createElement(local);
1.6665 + } else {
1.6666 + return Document.prototype.createElementNS.apply(this,[uri, local]);
1.6667 + }
1.6668 + },
1.6669 + get anchors(){
1.6670 + return new HTMLCollection(this.getElementsByTagName('a'));
1.6671 + },
1.6672 + get applets(){
1.6673 + return new HTMLCollection(this.getElementsByTagName('applet'));
1.6674 + },
1.6675 + get documentElement(){
1.6676 + var html = Document.prototype.__lookupGetter__('documentElement').apply(this,[]);
1.6677 + if( html === null){
1.6678 + html = this.createElement('html');
1.6679 + this.appendChild(html);
1.6680 + html.appendChild(this.createElement('head'));
1.6681 + html.appendChild(this.createElement('body'));
1.6682 + }
1.6683 + return html;
1.6684 + },
1.6685 + //document.head is non-standard
1.6686 + get head(){
1.6687 + //console.log('get head');
1.6688 + if (!this.documentElement) {
1.6689 + this.appendChild(this.createElement('html'));
1.6690 + }
1.6691 + var element = this.documentElement,
1.6692 + length = element.childNodes.length,
1.6693 + i;
1.6694 + //check for the presence of the head element in this html doc
1.6695 + for(i=0;i<length;i++){
1.6696 + if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
1.6697 + if(element.childNodes[i].tagName.toLowerCase() === 'head'){
1.6698 + return element.childNodes[i];
1.6699 + }
1.6700 + }
1.6701 + }
1.6702 + //no head? ugh bad news html.. I guess we'll force the issue?
1.6703 + var head = element.appendChild(this.createElement('head'));
1.6704 + return head;
1.6705 + },
1.6706 + get title(){
1.6707 + //console.log('get title');
1.6708 + if (!this.documentElement) {
1.6709 + this.appendChild(this.createElement('html'));
1.6710 + }
1.6711 + var title,
1.6712 + head = this.head,
1.6713 + length = head.childNodes.length,
1.6714 + i;
1.6715 + //check for the presence of the title element in this head element
1.6716 + for(i=0;i<length;i++){
1.6717 + if(head.childNodes[i].nodeType === Node.ELEMENT_NODE){
1.6718 + if(head.childNodes[i].tagName.toLowerCase() === 'title'){
1.6719 + return head.childNodes[i].textContent;
1.6720 + }
1.6721 + }
1.6722 + }
1.6723 + //no title? ugh bad news html.. I guess we'll force the issue?
1.6724 + title = head.appendChild(this.createElement('title'));
1.6725 + return title.appendChild(this.createTextNode('Untitled Document')).nodeValue;
1.6726 + },
1.6727 + set title(titleStr){
1.6728 + //console.log('set title %s', titleStr);
1.6729 + if (!this.documentElement) {
1.6730 + this.appendChild(this.createElement('html'));
1.6731 + }
1.6732 + var title = this.title;
1.6733 + title.textContent = titleStr;
1.6734 + },
1.6735 +
1.6736 + get body(){
1.6737 + //console.log('get body');
1.6738 + if (!this.documentElement) {
1.6739 + this.appendChild(this.createElement('html'));
1.6740 + }
1.6741 + var body,
1.6742 + element = this.documentElement,
1.6743 + length = element.childNodes.length,
1.6744 + i;
1.6745 + //check for the presence of the head element in this html doc
1.6746 + for(i=0;i<length;i++){
1.6747 + if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
1.6748 + if(element.childNodes[i].tagName.toLowerCase() === 'body'){
1.6749 + return element.childNodes[i];
1.6750 + }
1.6751 + }
1.6752 + }
1.6753 + //no head? ugh bad news html.. I guess we'll force the issue?
1.6754 + return element.appendChild(this.createElement('body'));
1.6755 + },
1.6756 + set body(x){console.log('set body');/**in firefox this is a benevolent do nothing*/},
1.6757 + get cookie(){
1.6758 + return Envjs.getCookies(this.location+'');
1.6759 + },
1.6760 + set cookie(cookie){
1.6761 + return Envjs.setCookie(this.location+'', cookie);
1.6762 + },
1.6763 +
1.6764 + /**
1.6765 + * document.location
1.6766 + *
1.6767 + * should be identical to window.location
1.6768 + *
1.6769 + * HTML5:
1.6770 + * http://dev.w3.org/html5/spec/Overview.html#the-location-interface
1.6771 + *
1.6772 + * Mozilla MDC:
1.6773 + * https://developer.mozilla.org/en/DOM/document.location
1.6774 + *
1.6775 + */
1.6776 + get location() {
1.6777 + if (this.ownerWindow) {
1.6778 + return this.ownerWindow.location;
1.6779 + } else {
1.6780 + return this.baseURI;
1.6781 + }
1.6782 + },
1.6783 + set location(url) {
1.6784 + this.baseURI = url;
1.6785 + if (this.ownerWindow) {
1.6786 + this.ownerWindow.location = url;
1.6787 + }
1.6788 + },
1.6789 +
1.6790 + /**
1.6791 + * document.URL (read-only)
1.6792 + *
1.6793 + * HTML DOM Level 2:
1.6794 + * http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-46183437
1.6795 + *
1.6796 + * HTML5:
1.6797 + * http://dev.w3.org/html5/spec/Overview.html#dom-document-url
1.6798 + *
1.6799 + * Mozilla MDC:
1.6800 + * https://developer.mozilla.org/en/DOM/document.URL
1.6801 + */
1.6802 + get URL() {
1.6803 + return this.location;
1.6804 + },
1.6805 + set URL(url) {
1.6806 + this.location = url;
1.6807 + },
1.6808 +
1.6809 + /**
1.6810 + * document.domain
1.6811 + *
1.6812 + * HTML5 Spec:
1.6813 + * http://dev.w3.org/html5/spec/Overview.html#dom-document-domain
1.6814 + *
1.6815 + * Mozilla MDC:
1.6816 + * https://developer.mozilla.org/en/DOM/document.domain
1.6817 + *
1.6818 + */
1.6819 + get domain(){
1.6820 + var HOSTNAME = new RegExp('\/\/([^\:\/]+)'),
1.6821 + matches = HOSTNAME.exec(this.baseURI);
1.6822 + return matches&&matches.length>1?matches[1]:"";
1.6823 + },
1.6824 + set domain(value){
1.6825 + var i,
1.6826 + domainParts = this.domain.split('.').reverse(),
1.6827 + newDomainParts = value.split('.').reverse();
1.6828 + if(newDomainParts.length > 1){
1.6829 + for(i=0;i<newDomainParts.length;i++){
1.6830 + if(!(newDomainParts[i] === domainParts[i])){
1.6831 + return;
1.6832 + }
1.6833 + }
1.6834 + this.baseURI = this.baseURI.replace(domainParts.join('.'), value);
1.6835 + }
1.6836 + },
1.6837 +
1.6838 + get forms(){
1.6839 + return new HTMLCollection(this.getElementsByTagName('form'));
1.6840 + },
1.6841 + get images(){
1.6842 + return new HTMLCollection(this.getElementsByTagName('img'));
1.6843 + },
1.6844 + get lastModified(){
1.6845 + /* TODO */
1.6846 + return this._lastModified;
1.6847 + },
1.6848 + get links(){
1.6849 + return new HTMLCollection(this.getElementsByTagName('a'));
1.6850 + },
1.6851 + getElementsByName : function(name){
1.6852 + //returns a real Array + the NodeList
1.6853 + var retNodes = __extend__([],new NodeList(this, this.documentElement)),
1.6854 + node;
1.6855 + // loop through all Elements
1.6856 + var all = this.getElementsByTagName('*');
1.6857 + for (var i=0; i < all.length; i++) {
1.6858 + node = all[i];
1.6859 + if (node.nodeType === Node.ELEMENT_NODE &&
1.6860 + node.getAttribute('name') == name) {
1.6861 + retNodes.push(node);
1.6862 + }
1.6863 + }
1.6864 + return retNodes;
1.6865 + },
1.6866 + toString: function(){
1.6867 + return "[object HTMLDocument]";
1.6868 + },
1.6869 + get innerHTML(){
1.6870 + return this.documentElement.outerHTML;
1.6871 + }
1.6872 +});
1.6873 +
1.6874 +
1.6875 +
1.6876 +Aspect.around({
1.6877 + target: Node,
1.6878 + method:"appendChild"
1.6879 +}, function(invocation) {
1.6880 + var event,
1.6881 + okay,
1.6882 + node = invocation.proceed(),
1.6883 + doc = node.ownerDocument;
1.6884 +
1.6885 + //console.log('element appended: %s %s %s', node+'', node.nodeName, node.namespaceURI);
1.6886 + if((node.nodeType !== Node.ELEMENT_NODE)){
1.6887 + //for now we are only handling element insertions. probably
1.6888 + //we will need to handle text node changes to script tags and
1.6889 + //changes to src attributes
1.6890 + return node;
1.6891 + }
1.6892 + //console.log('appended html element %s %s %s',
1.6893 + // node.namespaceURI, node.nodeName, node);
1.6894 + switch(doc.parsing){
1.6895 + case true:
1.6896 + //handled by parser if included
1.6897 + //console.log('html document in parse mode');
1.6898 + break;
1.6899 + case false:
1.6900 + switch(node.namespaceURI){
1.6901 + case null:
1.6902 + //fall through
1.6903 + case "":
1.6904 + //fall through
1.6905 + case "http://www.w3.org/1999/xhtml":
1.6906 + switch(node.tagName.toLowerCase()){
1.6907 + case 'style':
1.6908 + document.styleSheets.push(CSSStyleSheet(node));
1.6909 + break;
1.6910 + case 'script':
1.6911 + if((this.nodeName.toLowerCase() === 'head')){
1.6912 + try{
1.6913 + okay = Envjs.loadLocalScript(node, null);
1.6914 + //console.log('loaded script? %s %s', node.uuid, okay);
1.6915 + // only fire event if we actually had something to load
1.6916 + if (node.src && node.src.length > 0){
1.6917 + event = doc.createEvent('HTMLEvents');
1.6918 + event.initEvent( okay ? "load" : "error", false, false );
1.6919 + node.dispatchEvent( event, false );
1.6920 + }
1.6921 + }catch(e){
1.6922 + console.log('error loading html element %s %e', node, e.toString());
1.6923 + }
1.6924 + }
1.6925 + break;
1.6926 + case 'frame':
1.6927 + case 'iframe':
1.6928 + node.contentWindow = { };
1.6929 + node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
1.6930 + node.contentWindow.document = node.contentDocument;
1.6931 + try{
1.6932 + Window;
1.6933 + }catch(e){
1.6934 + node.contentDocument.addEventListener('DOMContentLoaded', function(){
1.6935 + event = node.contentDocument.createEvent('HTMLEvents');
1.6936 + event.initEvent("load", false, false);
1.6937 + node.dispatchEvent( event, false );
1.6938 + });
1.6939 + }
1.6940 + try{
1.6941 + if (node.src && node.src.length > 0){
1.6942 + //console.log("getting content document for (i)frame from %s", node.src);
1.6943 + Envjs.loadFrame(node, Envjs.uri(node.src));
1.6944 + event = node.contentDocument.createEvent('HTMLEvents');
1.6945 + event.initEvent("load", false, false);
1.6946 + node.dispatchEvent( event, false );
1.6947 + }else{
1.6948 + //I dont like this being here:
1.6949 + //TODO: better mix-in strategy so the try/catch isnt required
1.6950 + try{
1.6951 + if(Window){
1.6952 + Envjs.loadFrame(node);
1.6953 + //console.log('src/html/document.js: triggering frame load');
1.6954 + event = node.contentDocument.createEvent('HTMLEvents');
1.6955 + event.initEvent("load", false, false);
1.6956 + node.dispatchEvent( event, false );
1.6957 + }
1.6958 + }catch(e){}
1.6959 + }
1.6960 + }catch(e){
1.6961 + console.log('error loading html element %s %e', node, e.toString());
1.6962 + }
1.6963 + break;
1.6964 +
1.6965 + case 'link':
1.6966 + if (node.href && node.href.length > 0) {
1.6967 + __loadLink__(node, node.href);
1.6968 + }
1.6969 + break;
1.6970 + /*
1.6971 + case 'img':
1.6972 + if (node.src && node.src.length > 0){
1.6973 + // don't actually load anything, so we're "done" immediately:
1.6974 + event = doc.createEvent('HTMLEvents');
1.6975 + event.initEvent("load", false, false);
1.6976 + node.dispatchEvent( event, false );
1.6977 + }
1.6978 + break;
1.6979 + */
1.6980 + case 'option':
1.6981 + node._updateoptions();
1.6982 + break;
1.6983 + default:
1.6984 + if(node.getAttribute('onload')){
1.6985 + console.log('calling attribute onload %s | %s', node.onload, node.tagName);
1.6986 + node.onload();
1.6987 + }
1.6988 + break;
1.6989 + }//switch on name
1.6990 + default:
1.6991 + break;
1.6992 + }//switch on ns
1.6993 + break;
1.6994 + default:
1.6995 + // console.log('element appended: %s %s', node+'', node.namespaceURI);
1.6996 + }//switch on doc.parsing
1.6997 + return node;
1.6998 +
1.6999 +});
1.7000 +
1.7001 +Aspect.around({
1.7002 + target: Node,
1.7003 + method:"removeChild"
1.7004 +}, function(invocation) {
1.7005 + var event,
1.7006 + okay,
1.7007 + node = invocation.proceed(),
1.7008 + doc = node.ownerDocument;
1.7009 + if((node.nodeType !== Node.ELEMENT_NODE)){
1.7010 + //for now we are only handling element insertions. probably we will need
1.7011 + //to handle text node changes to script tags and changes to src
1.7012 + //attributes
1.7013 + if(node.nodeType !== Node.DOCUMENT_NODE && node.uuid){
1.7014 + //console.log('removing event listeners, %s', node, node.uuid);
1.7015 + node.removeEventListener('*', null, null);
1.7016 + }
1.7017 + return node;
1.7018 + }
1.7019 + //console.log('appended html element %s %s %s', node.namespaceURI, node.nodeName, node);
1.7020 +
1.7021 + switch(doc.parsing){
1.7022 + case true:
1.7023 + //handled by parser if included
1.7024 + break;
1.7025 + case false:
1.7026 + switch(node.namespaceURI){
1.7027 + case null:
1.7028 + //fall through
1.7029 + case "":
1.7030 + //fall through
1.7031 + case "http://www.w3.org/1999/xhtml":
1.7032 + //this is interesting dillema since our event engine is
1.7033 + //storing the registered events in an array accessed
1.7034 + //by the uuid property of the node. unforunately this
1.7035 + //means listeners hang out way after(forever ;)) the node
1.7036 + //has been removed and gone out of scope.
1.7037 + //console.log('removing event listeners, %s', node, node.uuid);
1.7038 + node.removeEventListener('*', null, null);
1.7039 + switch(node.tagName.toLowerCase()){
1.7040 + case 'frame':
1.7041 + case 'iframe':
1.7042 + try{
1.7043 + //console.log('removing iframe document');
1.7044 + try{
1.7045 + Envjs.unloadFrame(node);
1.7046 + }catch(e){
1.7047 + console.log('error freeing resources from frame %s', e);
1.7048 + }
1.7049 + node.contentWindow = null;
1.7050 + node.contentDocument = null;
1.7051 + }catch(e){
1.7052 + console.log('error unloading html element %s %e', node, e.toString());
1.7053 + }
1.7054 + break;
1.7055 + default:
1.7056 + break;
1.7057 + }//switch on name
1.7058 + default:
1.7059 + break;
1.7060 + }//switch on ns
1.7061 + break;
1.7062 + default:
1.7063 + console.log('element appended: %s %s', node+'', node.namespaceURI);
1.7064 + }//switch on doc.parsing
1.7065 + return node;
1.7066 +
1.7067 +});
1.7068 +
1.7069 +
1.7070 +
1.7071 +/**
1.7072 + * Named Element Support
1.7073 + *
1.7074 + *
1.7075 + */
1.7076 +
1.7077 +/*
1.7078 + *
1.7079 + * @returns 'name' if the node has a appropriate name
1.7080 + * null if node does not have a name
1.7081 + */
1.7082 +
1.7083 +var __isNamedElement__ = function(node) {
1.7084 + if (node.nodeType !== Node.ELEMENT_NODE) {
1.7085 + return null;
1.7086 + }
1.7087 + var tagName = node.tagName.toLowerCase();
1.7088 + var nodename = null;
1.7089 +
1.7090 + switch (tagName) {
1.7091 + case 'embed':
1.7092 + case 'form':
1.7093 + case 'iframe':
1.7094 + nodename = node.getAttribute('name');
1.7095 + break;
1.7096 + case 'applet':
1.7097 + nodename = node.id;
1.7098 + break;
1.7099 + case 'object':
1.7100 + // TODO: object needs to be 'fallback free'
1.7101 + nodename = node.id;
1.7102 + break;
1.7103 + case 'img':
1.7104 + nodename = node.id;
1.7105 + if (!nodename || ! node.getAttribute('name')) {
1.7106 + nodename = null;
1.7107 + }
1.7108 + break;
1.7109 + }
1.7110 + return (nodename) ? nodename : null;
1.7111 +};
1.7112 +
1.7113 +
1.7114 +var __addNamedMap__ = function(target, node) {
1.7115 + var nodename = __isNamedElement__(node);
1.7116 + if (nodename) {
1.7117 + target.__defineGetter__(nodename, function() {
1.7118 + return node;
1.7119 + });
1.7120 + }
1.7121 +};
1.7122 +
1.7123 +var __removeNamedMap__ = function(target, node) {
1.7124 + if (!node) {
1.7125 + return;
1.7126 + }
1.7127 + var nodename = __isNamedElement__(node);
1.7128 + if (nodename) {
1.7129 + delete target[nodename];
1.7130 + }
1.7131 +};
1.7132 +
1.7133 +/**
1.7134 + * @name HTMLEvents
1.7135 + * @w3c:domlevel 2
1.7136 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
1.7137 + */
1.7138 +
1.7139 +var __eval__ = function(script, node){
1.7140 + if (!script == ""){
1.7141 + // don't assemble environment if no script...
1.7142 + try{
1.7143 + eval(script);
1.7144 + }catch(e){
1.7145 + console.log('error evaluating %s', e);
1.7146 + }
1.7147 + }
1.7148 +};
1.7149 +
1.7150 +var HTMLEvents= function(){};
1.7151 +HTMLEvents.prototype = {
1.7152 + onload: function(event){
1.7153 + __eval__(this.getAttribute('onload')||'', this);
1.7154 + },
1.7155 + onunload: function(event){
1.7156 + __eval__(this.getAttribute('onunload')||'', this);
1.7157 + },
1.7158 + onabort: function(event){
1.7159 + __eval__(this.getAttribute('onabort')||'', this);
1.7160 + },
1.7161 + onerror: function(event){
1.7162 + __eval__(this.getAttribute('onerror')||'', this);
1.7163 + },
1.7164 + onselect: function(event){
1.7165 + __eval__(this.getAttribute('onselect')||'', this);
1.7166 + },
1.7167 + onchange: function(event){
1.7168 + __eval__(this.getAttribute('onchange')||'', this);
1.7169 + },
1.7170 + onsubmit: function(event){
1.7171 + if (__eval__(this.getAttribute('onsubmit')||'', this)) {
1.7172 + this.submit();
1.7173 + }
1.7174 + },
1.7175 + onreset: function(event){
1.7176 + __eval__(this.getAttribute('onreset')||'', this);
1.7177 + },
1.7178 + onfocus: function(event){
1.7179 + __eval__(this.getAttribute('onfocus')||'', this);
1.7180 + },
1.7181 + onblur: function(event){
1.7182 + __eval__(this.getAttribute('onblur')||'', this);
1.7183 + },
1.7184 + onresize: function(event){
1.7185 + __eval__(this.getAttribute('onresize')||'', this);
1.7186 + },
1.7187 + onscroll: function(event){
1.7188 + __eval__(this.getAttribute('onscroll')||'', this);
1.7189 + }
1.7190 +};
1.7191 +
1.7192 +//HTMLDocument, HTMLFramesetElement, HTMLObjectElement
1.7193 +var __load__ = function(element){
1.7194 + var event = new Event('HTMLEvents');
1.7195 + event.initEvent("load", false, false);
1.7196 + element.dispatchEvent(event);
1.7197 + return event;
1.7198 +};
1.7199 +
1.7200 +//HTMLFramesetElement, HTMLBodyElement
1.7201 +var __unload__ = function(element){
1.7202 + var event = new Event('HTMLEvents');
1.7203 + event.initEvent("unload", false, false);
1.7204 + element.dispatchEvent(event);
1.7205 + return event;
1.7206 +};
1.7207 +
1.7208 +//HTMLObjectElement
1.7209 +var __abort__ = function(element){
1.7210 + var event = new Event('HTMLEvents');
1.7211 + event.initEvent("abort", true, false);
1.7212 + element.dispatchEvent(event);
1.7213 + return event;
1.7214 +};
1.7215 +
1.7216 +//HTMLFramesetElement, HTMLObjectElement, HTMLBodyElement
1.7217 +var __error__ = function(element){
1.7218 + var event = new Event('HTMLEvents');
1.7219 + event.initEvent("error", true, false);
1.7220 + element.dispatchEvent(event);
1.7221 + return event;
1.7222 +};
1.7223 +
1.7224 +//HTMLInputElement, HTMLTextAreaElement
1.7225 +var __select__ = function(element){
1.7226 + var event = new Event('HTMLEvents');
1.7227 + event.initEvent("select", true, false);
1.7228 + element.dispatchEvent(event);
1.7229 + return event;
1.7230 +};
1.7231 +
1.7232 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
1.7233 +var __change__ = function(element){
1.7234 + var event = new Event('HTMLEvents');
1.7235 + event.initEvent("change", true, false);
1.7236 + element.dispatchEvent(event);
1.7237 + return event;
1.7238 +};
1.7239 +
1.7240 +//HtmlFormElement
1.7241 +var __submit__ = function(element){
1.7242 + var event = new Event('HTMLEvents');
1.7243 + event.initEvent("submit", true, true);
1.7244 + element.dispatchEvent(event);
1.7245 + return event;
1.7246 +};
1.7247 +
1.7248 +//HtmlFormElement
1.7249 +var __reset__ = function(element){
1.7250 + var event = new Event('HTMLEvents');
1.7251 + event.initEvent("reset", false, false);
1.7252 + element.dispatchEvent(event);
1.7253 + return event;
1.7254 +};
1.7255 +
1.7256 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
1.7257 +var __focus__ = function(element){
1.7258 + var event = new Event('HTMLEvents');
1.7259 + event.initEvent("focus", false, false);
1.7260 + element.dispatchEvent(event);
1.7261 + return event;
1.7262 +};
1.7263 +
1.7264 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
1.7265 +var __blur__ = function(element){
1.7266 + var event = new Event('HTMLEvents');
1.7267 + event.initEvent("blur", false, false);
1.7268 + element.dispatchEvent(event);
1.7269 + return event;
1.7270 +};
1.7271 +
1.7272 +//Window
1.7273 +var __resize__ = function(element){
1.7274 + var event = new Event('HTMLEvents');
1.7275 + event.initEvent("resize", true, false);
1.7276 + element.dispatchEvent(event);
1.7277 + return event;
1.7278 +};
1.7279 +
1.7280 +//Window
1.7281 +var __scroll__ = function(element){
1.7282 + var event = new Event('HTMLEvents');
1.7283 + event.initEvent("scroll", true, false);
1.7284 + element.dispatchEvent(event);
1.7285 + return event;
1.7286 +};
1.7287 +
1.7288 +/**
1.7289 + * @name KeyboardEvents
1.7290 + * @w3c:domlevel 2
1.7291 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
1.7292 + */
1.7293 +var KeyboardEvents= function(){};
1.7294 +KeyboardEvents.prototype = {
1.7295 + onkeydown: function(event){
1.7296 + __eval__(this.getAttribute('onkeydown')||'', this);
1.7297 + },
1.7298 + onkeypress: function(event){
1.7299 + __eval__(this.getAttribute('onkeypress')||'', this);
1.7300 + },
1.7301 + onkeyup: function(event){
1.7302 + __eval__(this.getAttribute('onkeyup')||'', this);
1.7303 + }
1.7304 +};
1.7305 +
1.7306 +
1.7307 +var __registerKeyboardEventAttrs__ = function(elm){
1.7308 + if(elm.hasAttribute('onkeydown')){
1.7309 + elm.addEventListener('keydown', elm.onkeydown, false);
1.7310 + }
1.7311 + if(elm.hasAttribute('onkeypress')){
1.7312 + elm.addEventListener('keypress', elm.onkeypress, false);
1.7313 + }
1.7314 + if(elm.hasAttribute('onkeyup')){
1.7315 + elm.addEventListener('keyup', elm.onkeyup, false);
1.7316 + }
1.7317 + return elm;
1.7318 +};
1.7319 +
1.7320 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
1.7321 +var __keydown__ = function(element){
1.7322 + var event = new Event('KeyboardEvents');
1.7323 + event.initEvent("keydown", false, false);
1.7324 + element.dispatchEvent(event);
1.7325 +};
1.7326 +
1.7327 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
1.7328 +var __keypress__ = function(element){
1.7329 + var event = new Event('KeyboardEvents');
1.7330 + event.initEvent("keypress", false, false);
1.7331 + element.dispatchEvent(event);
1.7332 +};
1.7333 +
1.7334 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
1.7335 +var __keyup__ = function(element){
1.7336 + var event = new Event('KeyboardEvents');
1.7337 + event.initEvent("keyup", false, false);
1.7338 + element.dispatchEvent(event);
1.7339 +};
1.7340 +
1.7341 +/**
1.7342 + * @name MaouseEvents
1.7343 + * @w3c:domlevel 2
1.7344 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
1.7345 + */
1.7346 +var MouseEvents= function(){};
1.7347 +MouseEvents.prototype = {
1.7348 + onclick: function(event){
1.7349 + __eval__(this.getAttribute('onclick')||'', this);
1.7350 + },
1.7351 + ondblclick: function(event){
1.7352 + __eval__(this.getAttribute('ondblclick')||'', this);
1.7353 + },
1.7354 + onmousedown: function(event){
1.7355 + __eval__(this.getAttribute('onmousedown')||'', this);
1.7356 + },
1.7357 + onmousemove: function(event){
1.7358 + __eval__(this.getAttribute('onmousemove')||'', this);
1.7359 + },
1.7360 + onmouseout: function(event){
1.7361 + __eval__(this.getAttribute('onmouseout')||'', this);
1.7362 + },
1.7363 + onmouseover: function(event){
1.7364 + __eval__(this.getAttribute('onmouseover')||'', this);
1.7365 + },
1.7366 + onmouseup: function(event){
1.7367 + __eval__(this.getAttribute('onmouseup')||'', this);
1.7368 + }
1.7369 +};
1.7370 +
1.7371 +var __registerMouseEventAttrs__ = function(elm){
1.7372 + if(elm.hasAttribute('onclick')){
1.7373 + elm.addEventListener('click', elm.onclick, false);
1.7374 + }
1.7375 + if(elm.hasAttribute('ondblclick')){
1.7376 + elm.addEventListener('dblclick', elm.ondblclick, false);
1.7377 + }
1.7378 + if(elm.hasAttribute('onmousedown')){
1.7379 + elm.addEventListener('mousedown', elm.onmousedown, false);
1.7380 + }
1.7381 + if(elm.hasAttribute('onmousemove')){
1.7382 + elm.addEventListener('mousemove', elm.onmousemove, false);
1.7383 + }
1.7384 + if(elm.hasAttribute('onmouseout')){
1.7385 + elm.addEventListener('mouseout', elm.onmouseout, false);
1.7386 + }
1.7387 + if(elm.hasAttribute('onmouseover')){
1.7388 + elm.addEventListener('mouseover', elm.onmouseover, false);
1.7389 + }
1.7390 + if(elm.hasAttribute('onmouseup')){
1.7391 + elm.addEventListener('mouseup', elm.onmouseup, false);
1.7392 + }
1.7393 + return elm;
1.7394 +};
1.7395 +
1.7396 +
1.7397 +var __click__ = function(element){
1.7398 + var event = new Event('MouseEvents');
1.7399 + event.initEvent("click", true, true, null, 0,
1.7400 + 0, 0, 0, 0, false, false, false,
1.7401 + false, null, null);
1.7402 + element.dispatchEvent(event);
1.7403 +};
1.7404 +var __mousedown__ = function(element){
1.7405 + var event = new Event('MouseEvents');
1.7406 + event.initEvent("mousedown", true, true, null, 0,
1.7407 + 0, 0, 0, 0, false, false, false,
1.7408 + false, null, null);
1.7409 + element.dispatchEvent(event);
1.7410 +};
1.7411 +var __mouseup__ = function(element){
1.7412 + var event = new Event('MouseEvents');
1.7413 + event.initEvent("mouseup", true, true, null, 0,
1.7414 + 0, 0, 0, 0, false, false, false,
1.7415 + false, null, null);
1.7416 + element.dispatchEvent(event);
1.7417 +};
1.7418 +var __mouseover__ = function(element){
1.7419 + var event = new Event('MouseEvents');
1.7420 + event.initEvent("mouseover", true, true, null, 0,
1.7421 + 0, 0, 0, 0, false, false, false,
1.7422 + false, null, null);
1.7423 + element.dispatchEvent(event);
1.7424 +};
1.7425 +var __mousemove__ = function(element){
1.7426 + var event = new Event('MouseEvents');
1.7427 + event.initEvent("mousemove", true, true, null, 0,
1.7428 + 0, 0, 0, 0, false, false, false,
1.7429 + false, null, null);
1.7430 + element.dispatchEvent(event);
1.7431 +};
1.7432 +var __mouseout__ = function(element){
1.7433 + var event = new Event('MouseEvents');
1.7434 + event.initEvent("mouseout", true, true, null, 0,
1.7435 + 0, 0, 0, 0, false, false, false,
1.7436 + false, null, null);
1.7437 + element.dispatchEvent(event);
1.7438 +};
1.7439 +
1.7440 +/**
1.7441 + * HTMLElement - DOM Level 2
1.7442 + */
1.7443 +
1.7444 +
1.7445 +/* Hack for http://www.prototypejs.org/
1.7446 + *
1.7447 + * Prototype 1.6 (the library) creates a new global Element, which causes
1.7448 + * envjs to use the wrong Element.
1.7449 + *
1.7450 + * http://envjs.lighthouseapp.com/projects/21590/tickets/108-prototypejs-wont-load-due-it-clobbering-element
1.7451 + *
1.7452 + * Options:
1.7453 + * (1) Rename the dom/element to something else
1.7454 + * rejected: been done before. people want Element.
1.7455 + * (2) merge dom+html and not export Element to global namespace
1.7456 + * (meaning we would use a local var Element in a closure, so prototype
1.7457 + * can do what ever it wants)
1.7458 + * rejected: want dom and html separate
1.7459 + * (3) use global namespace (put everything under Envjs = {})
1.7460 + * rejected: massive change
1.7461 + * (4) use commonjs modules (similar to (3) in spirit)
1.7462 + * rejected: massive change
1.7463 + *
1.7464 + * or
1.7465 + *
1.7466 + * (5) take a reference to Element during initial loading ("compile
1.7467 + * time"), and use the reference instead of "Element". That's
1.7468 + * what the next line does. We use __DOMElement__ if we need to
1.7469 + * reference the parent class. Only this file explcity uses
1.7470 + * Element so this should work, and is the most minimal change I
1.7471 + * could think of with no external API changes.
1.7472 + *
1.7473 + */
1.7474 +var __DOMElement__ = Element;
1.7475 +
1.7476 +HTMLElement = function(ownerDocument) {
1.7477 + __DOMElement__.apply(this, arguments);
1.7478 +};
1.7479 +
1.7480 +HTMLElement.prototype = new Element();
1.7481 +__extend__(HTMLElement.prototype, HTMLEvents.prototype);
1.7482 +__extend__(HTMLElement.prototype, {
1.7483 + get className() {
1.7484 + return this.getAttribute("class")||'';
1.7485 + },
1.7486 + set className(value) {
1.7487 + return this.setAttribute("class",__trim__(value));
1.7488 + },
1.7489 + get dir() {
1.7490 + return this.getAttribute("dir")||"ltr";
1.7491 + },
1.7492 + set dir(val) {
1.7493 + return this.setAttribute("dir",val);
1.7494 + },
1.7495 + get id(){
1.7496 + return this.getAttribute('id');
1.7497 + },
1.7498 + set id(id){
1.7499 + this.setAttribute('id', id);
1.7500 + },
1.7501 + get innerHTML(){
1.7502 + var ret = "",
1.7503 + i;
1.7504 +
1.7505 + // create string containing the concatenation of the string
1.7506 + // values of each child
1.7507 + for (i=0; i < this.childNodes.length; i++) {
1.7508 + if(this.childNodes[i]){
1.7509 + if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
1.7510 + ret += this.childNodes[i].xhtml;
1.7511 + } else if (this.childNodes[i].nodeType === Node.TEXT_NODE && i>0 &&
1.7512 + this.childNodes[i-1].nodeType === Node.TEXT_NODE){
1.7513 + //add a single space between adjacent text nodes
1.7514 + ret += " "+this.childNodes[i].xml;
1.7515 + }else{
1.7516 + ret += this.childNodes[i].xml;
1.7517 + }
1.7518 + }
1.7519 + }
1.7520 + return ret;
1.7521 + },
1.7522 + get lang() {
1.7523 + return this.getAttribute("lang");
1.7524 + },
1.7525 + set lang(val) {
1.7526 + return this.setAttribute("lang",val);
1.7527 + },
1.7528 + get offsetHeight(){
1.7529 + return Number((this.style.height || '').replace("px",""));
1.7530 + },
1.7531 + get offsetWidth(){
1.7532 + return Number((this.style.width || '').replace("px",""));
1.7533 + },
1.7534 + offsetLeft: 0,
1.7535 + offsetRight: 0,
1.7536 + get offsetParent(){
1.7537 + /* TODO */
1.7538 + return;
1.7539 + },
1.7540 + set offsetParent(element){
1.7541 + /* TODO */
1.7542 + return;
1.7543 + },
1.7544 + scrollHeight: 0,
1.7545 + scrollWidth: 0,
1.7546 + scrollLeft: 0,
1.7547 + scrollRight: 0,
1.7548 + get style(){
1.7549 + return this.getAttribute('style')||'';
1.7550 + },
1.7551 + get title() {
1.7552 + return this.getAttribute("title");
1.7553 + },
1.7554 + set title(value) {
1.7555 + return this.setAttribute("title", value);
1.7556 + },
1.7557 + get tabIndex(){
1.7558 + var tabindex = this.getAttribute('tabindex');
1.7559 + if(tabindex!==null){
1.7560 + return Number(tabindex);
1.7561 + } else {
1.7562 + return 0;
1.7563 + }
1.7564 + },
1.7565 + set tabIndex(value){
1.7566 + if (value === undefined || value === null) {
1.7567 + value = 0;
1.7568 + }
1.7569 + this.setAttribute('tabindex',Number(value));
1.7570 + },
1.7571 + get outerHTML(){
1.7572 + //Not in the specs but I'll leave it here for now.
1.7573 + return this.xhtml;
1.7574 + },
1.7575 + scrollIntoView: function(){
1.7576 + /*TODO*/
1.7577 + return;
1.7578 + },
1.7579 + toString: function(){
1.7580 + return '[object HTMLElement]';
1.7581 + },
1.7582 + get xhtml() {
1.7583 + // HTMLDocument.xhtml is non-standard
1.7584 + // This is exactly like Document.xml except the tagName has to be
1.7585 + // lower cased. I dont like to duplicate this but its really not
1.7586 + // a simple work around between xml and html serialization via
1.7587 + // XMLSerializer (which uppercases html tags) and innerHTML (which
1.7588 + // lowercases tags)
1.7589 +
1.7590 + var ret = "",
1.7591 + ns = "",
1.7592 + name = (this.tagName+"").toLowerCase(),
1.7593 + attrs,
1.7594 + attrstring = "",
1.7595 + i;
1.7596 +
1.7597 + // serialize namespace declarations
1.7598 + if (this.namespaceURI){
1.7599 + if((this === this.ownerDocument.documentElement) ||
1.7600 + (!this.parentNode) ||
1.7601 + (this.parentNode &&
1.7602 + (this.parentNode.namespaceURI !== this.namespaceURI))) {
1.7603 + ns = ' xmlns' + (this.prefix ? (':' + this.prefix) : '') +
1.7604 + '="' + this.namespaceURI + '"';
1.7605 + }
1.7606 + }
1.7607 +
1.7608 + // serialize Attribute declarations
1.7609 + attrs = this.attributes;
1.7610 + for(i=0;i< attrs.length;i++){
1.7611 + attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
1.7612 + }
1.7613 +
1.7614 + if(this.hasChildNodes()){
1.7615 + // serialize this Element
1.7616 + ret += "<" + name + ns + attrstring +">";
1.7617 + for(i=0;i< this.childNodes.length;i++){
1.7618 + ret += this.childNodes[i].xhtml ?
1.7619 + this.childNodes[i].xhtml :
1.7620 + this.childNodes[i].xml;
1.7621 + }
1.7622 + ret += "</" + name + ">";
1.7623 + }else{
1.7624 + switch(name){
1.7625 + case 'script':
1.7626 + ret += "<" + name + ns + attrstring +"></"+name+">";
1.7627 + break;
1.7628 + default:
1.7629 + ret += "<" + name + ns + attrstring +"/>";
1.7630 + }
1.7631 + }
1.7632 +
1.7633 + return ret;
1.7634 + },
1.7635 +
1.7636 + /**
1.7637 + * setAttribute use a dispatch table that other tags can set to
1.7638 + * "listen" to various values being set. The dispatch table
1.7639 + * and registration functions are at the end of the file.
1.7640 + *
1.7641 + */
1.7642 +
1.7643 + setAttribute: function(name, value) {
1.7644 + var result = __DOMElement__.prototype.setAttribute.apply(this, arguments);
1.7645 + __addNamedMap__(this.ownerDocument, this);
1.7646 + var tagname = this.tagName;
1.7647 + var callback = HTMLElement.getAttributeCallback('set', tagname, name);
1.7648 + if (callback) {
1.7649 + callback(this, value);
1.7650 + }
1.7651 + },
1.7652 + setAttributeNS: function(namespaceURI, name, value) {
1.7653 + var result = __DOMElement__.prototype.setAttributeNS.apply(this, arguments);
1.7654 + __addNamedMap__(this.ownerDocument, this);
1.7655 + var tagname = this.tagName;
1.7656 + var callback = HTMLElement.getAttributeCallback('set', tagname, name);
1.7657 + if (callback) {
1.7658 + callback(this, value);
1.7659 + }
1.7660 +
1.7661 + return result;
1.7662 + },
1.7663 + setAttributeNode: function(newnode) {
1.7664 + var result = __DOMElement__.prototype.setAttributeNode.apply(this, arguments);
1.7665 + __addNamedMap__(this.ownerDocument, this);
1.7666 + var tagname = this.tagName;
1.7667 + var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
1.7668 + if (callback) {
1.7669 + callback(this, node.value);
1.7670 + }
1.7671 + return result;
1.7672 + },
1.7673 + setAttributeNodeNS: function(newnode) {
1.7674 + var result = __DOMElement__.prototype.setAttributeNodeNS.apply(this, arguments);
1.7675 + __addNamedMap__(this.ownerDocument, this);
1.7676 + var tagname = this.tagName;
1.7677 + var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
1.7678 + if (callback) {
1.7679 + callback(this, node.value);
1.7680 + }
1.7681 + return result;
1.7682 + },
1.7683 + removeAttribute: function(name) {
1.7684 + __removeNamedMap__(this.ownerDocument, this);
1.7685 + return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
1.7686 + },
1.7687 + removeAttributeNS: function(namespace, localname) {
1.7688 + __removeNamedMap__(this.ownerDocument, this);
1.7689 + return __DOMElement__.prototype.removeAttributeNS.apply(this, arguments);
1.7690 + },
1.7691 + removeAttributeNode: function(name) {
1.7692 + __removeNamedMap__(this.ownerDocument, this);
1.7693 + return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
1.7694 + },
1.7695 + removeChild: function(oldChild) {
1.7696 + __removeNamedMap__(this.ownerDocument, oldChild);
1.7697 + return __DOMElement__.prototype.removeChild.apply(this, arguments);
1.7698 + },
1.7699 + importNode: function(othernode, deep) {
1.7700 + var newnode = __DOMElement__.prototype.importNode.apply(this, arguments);
1.7701 + __addNamedMap__(this.ownerDocument, newnode);
1.7702 + return newnode;
1.7703 + },
1.7704 +
1.7705 + // not actually sure if this is needed or not
1.7706 + replaceNode: function(newchild, oldchild) {
1.7707 + var newnode = __DOMElement__.prototype.replaceNode.apply(this, arguments);
1.7708 + __removeNamedMap__(this.ownerDocument, oldchild);
1.7709 + __addNamedMap__(this.ownerDocument, newnode);
1.7710 + return newnode;
1.7711 + }
1.7712 +});
1.7713 +
1.7714 +
1.7715 +HTMLElement.attributeCallbacks = {};
1.7716 +HTMLElement.registerSetAttribute = function(tag, attrib, callbackfn) {
1.7717 + HTMLElement.attributeCallbacks[tag + ':set:' + attrib] = callbackfn;
1.7718 +};
1.7719 +HTMLElement.registerRemoveAttribute = function(tag, attrib, callbackfn) {
1.7720 + HTMLElement.attributeCallbacks[tag + ':remove:' + attrib] = callbackfn;
1.7721 +};
1.7722 +
1.7723 +/**
1.7724 + * This is really only useful internally
1.7725 + *
1.7726 + */
1.7727 +HTMLElement.getAttributeCallback = function(type, tag, attrib) {
1.7728 + return HTMLElement.attributeCallbacks[tag + ':' + type + ':' + attrib] || null;
1.7729 +};
1.7730 +/*
1.7731 + * HTMLCollection
1.7732 + *
1.7733 + * HTML5 -- 2.7.2.1 HTMLCollection
1.7734 + * http://dev.w3.org/html5/spec/Overview.html#htmlcollection
1.7735 + * http://dev.w3.org/html5/spec/Overview.html#collections
1.7736 + */
1.7737 +HTMLCollection = function(nodelist, type) {
1.7738 +
1.7739 + __setArray__(this, []);
1.7740 + var n;
1.7741 + for (var i=0; i<nodelist.length; i++) {
1.7742 + this[i] = nodelist[i];
1.7743 + n = nodelist[i].name;
1.7744 + if (n) {
1.7745 + this[n] = nodelist[i];
1.7746 + }
1.7747 + n = nodelist[i].id;
1.7748 + if (n) {
1.7749 + this[n] = nodelist[i];
1.7750 + }
1.7751 + }
1.7752 +
1.7753 + this.length = nodelist.length;
1.7754 +};
1.7755 +
1.7756 +HTMLCollection.prototype = {
1.7757 +
1.7758 + item: function (idx) {
1.7759 + return ((idx >= 0) && (idx < this.length)) ? this[idx] : null;
1.7760 + },
1.7761 +
1.7762 + namedItem: function (name) {
1.7763 + return this[name] || null;
1.7764 + },
1.7765 +
1.7766 + toString: function() {
1.7767 + return '[object HTMLCollection]';
1.7768 + }
1.7769 +};
1.7770 +/*
1.7771 + * a set of convenience classes to centralize implementation of
1.7772 + * properties and methods across multiple in-form elements
1.7773 + *
1.7774 + * the hierarchy of related HTML elements and their members is as follows:
1.7775 + *
1.7776 + * Condensed Version
1.7777 + *
1.7778 + * HTMLInputCommon
1.7779 + * * legent (no value attr)
1.7780 + * * fieldset (no value attr)
1.7781 + * * label (no value attr)
1.7782 + * * option (custom value)
1.7783 + * HTMLTypeValueInputs (extends InputCommon)
1.7784 + * * select (custom value)
1.7785 + * * button (just sets value)
1.7786 + * HTMLInputAreaCommon (extends TypeValueIput)
1.7787 + * * input (custom)
1.7788 + * * textarea (just sets value)
1.7789 + *
1.7790 + * -----------------------
1.7791 + * HTMLInputCommon: common to all elements
1.7792 + * .form
1.7793 + *
1.7794 + * <legend>
1.7795 + * [common plus:]
1.7796 + * .align
1.7797 + *
1.7798 + * <fieldset>
1.7799 + * [identical to "legend" plus:]
1.7800 + * .margin
1.7801 + *
1.7802 + *
1.7803 + * ****
1.7804 + *
1.7805 + * <label>
1.7806 + * [common plus:]
1.7807 + * .dataFormatAs
1.7808 + * .htmlFor
1.7809 + * [plus data properties]
1.7810 + *
1.7811 + * <option>
1.7812 + * [common plus:]
1.7813 + * .defaultSelected
1.7814 + * .index
1.7815 + * .label
1.7816 + * .selected
1.7817 + * .text
1.7818 + * .value // unique implementation, not duplicated
1.7819 + * .form // unique implementation, not duplicated
1.7820 + * ****
1.7821 + *
1.7822 + * HTMLTypeValueInputs: common to remaining elements
1.7823 + * [common plus:]
1.7824 + * .name
1.7825 + * .type
1.7826 + * .value
1.7827 + * [plus data properties]
1.7828 + *
1.7829 + *
1.7830 + * <select>
1.7831 + * .length
1.7832 + * .multiple
1.7833 + * .options[]
1.7834 + * .selectedIndex
1.7835 + * .add()
1.7836 + * .remove()
1.7837 + * .item() // unimplemented
1.7838 + * .namedItem() // unimplemented
1.7839 + * [plus ".onchange"]
1.7840 + * [plus focus events]
1.7841 + * [plus data properties]
1.7842 + * [plus ".size"]
1.7843 + *
1.7844 + * <button>
1.7845 + * .dataFormatAs // duplicated from above, oh well....
1.7846 + * [plus ".status", ".createTextRange()"]
1.7847 + *
1.7848 + * ****
1.7849 + *
1.7850 + * HTMLInputAreaCommon: common to remaining elements
1.7851 + * .defaultValue
1.7852 + * .readOnly
1.7853 + * .handleEvent() // unimplemented
1.7854 + * .select()
1.7855 + * .onselect
1.7856 + * [plus ".size"]
1.7857 + * [plus ".status", ".createTextRange()"]
1.7858 + * [plus focus events]
1.7859 + * [plus ".onchange"]
1.7860 + *
1.7861 + * <textarea>
1.7862 + * .cols
1.7863 + * .rows
1.7864 + * .wrap // unimplemented
1.7865 + * .onscroll // unimplemented
1.7866 + *
1.7867 + * <input>
1.7868 + * .alt
1.7869 + * .accept // unimplemented
1.7870 + * .checked
1.7871 + * .complete // unimplemented
1.7872 + * .defaultChecked
1.7873 + * .dynsrc // unimplemented
1.7874 + * .height
1.7875 + * .hspace // unimplemented
1.7876 + * .indeterminate // unimplemented
1.7877 + * .loop // unimplemented
1.7878 + * .lowsrc // unimplemented
1.7879 + * .maxLength
1.7880 + * .src
1.7881 + * .start // unimplemented
1.7882 + * .useMap
1.7883 + * .vspace // unimplemented
1.7884 + * .width
1.7885 + * .onclick
1.7886 + * [plus ".size"]
1.7887 + * [plus ".status", ".createTextRange()"]
1.7888 +
1.7889 + * [data properties] // unimplemented
1.7890 + * .dataFld
1.7891 + * .dataSrc
1.7892 +
1.7893 + * [status stuff] // unimplemented
1.7894 + * .status
1.7895 + * .createTextRange()
1.7896 +
1.7897 + * [focus events]
1.7898 + * .onblur
1.7899 + * .onfocus
1.7900 +
1.7901 + */
1.7902 +
1.7903 +
1.7904 +
1.7905 +var inputElements_dataProperties = {};
1.7906 +var inputElements_status = {};
1.7907 +
1.7908 +var inputElements_onchange = {
1.7909 + onchange: function(event){
1.7910 + __eval__(this.getAttribute('onchange')||'', this);
1.7911 + }
1.7912 +};
1.7913 +
1.7914 +var inputElements_size = {
1.7915 + get size(){
1.7916 + return Number(this.getAttribute('size'));
1.7917 + },
1.7918 + set size(value){
1.7919 + this.setAttribute('size',value);
1.7920 + }
1.7921 +};
1.7922 +
1.7923 +var inputElements_focusEvents = {
1.7924 + blur: function(){
1.7925 + __blur__(this);
1.7926 +
1.7927 + if (this._oldValue != this.value){
1.7928 + var event = document.createEvent("HTMLEvents");
1.7929 + event.initEvent("change", true, true);
1.7930 + this.dispatchEvent( event );
1.7931 + }
1.7932 + },
1.7933 + focus: function(){
1.7934 + __focus__(this);
1.7935 + this._oldValue = this.value;
1.7936 + }
1.7937 +};
1.7938 +
1.7939 +
1.7940 +/*
1.7941 +* HTMLInputCommon - convenience class, not DOM
1.7942 +*/
1.7943 +var HTMLInputCommon = function(ownerDocument) {
1.7944 + HTMLElement.apply(this, arguments);
1.7945 +};
1.7946 +HTMLInputCommon.prototype = new HTMLElement();
1.7947 +__extend__(HTMLInputCommon.prototype, {
1.7948 + get form() {
1.7949 + // parent can be null if element is outside of a form
1.7950 + // or not yet added to the document
1.7951 + var parent = this.parentNode;
1.7952 + while (parent && parent.nodeName.toLowerCase() !== 'form') {
1.7953 + parent = parent.parentNode;
1.7954 + }
1.7955 + return parent;
1.7956 + },
1.7957 + get accessKey(){
1.7958 + return this.getAttribute('accesskey');
1.7959 + },
1.7960 + set accessKey(value){
1.7961 + this.setAttribute('accesskey',value);
1.7962 + },
1.7963 + get access(){
1.7964 + return this.getAttribute('access');
1.7965 + },
1.7966 + set access(value){
1.7967 + this.setAttribute('access', value);
1.7968 + },
1.7969 + get disabled(){
1.7970 + return (this.getAttribute('disabled') === 'disabled');
1.7971 + },
1.7972 + set disabled(value){
1.7973 + this.setAttribute('disabled', (value ? 'disabled' :''));
1.7974 + }
1.7975 +});
1.7976 +
1.7977 +
1.7978 +
1.7979 +
1.7980 +/*
1.7981 +* HTMLTypeValueInputs - convenience class, not DOM
1.7982 +*/
1.7983 +var HTMLTypeValueInputs = function(ownerDocument) {
1.7984 +
1.7985 + HTMLInputCommon.apply(this, arguments);
1.7986 +
1.7987 + this._oldValue = "";
1.7988 +};
1.7989 +HTMLTypeValueInputs.prototype = new HTMLInputCommon();
1.7990 +__extend__(HTMLTypeValueInputs.prototype, inputElements_size);
1.7991 +__extend__(HTMLTypeValueInputs.prototype, inputElements_status);
1.7992 +__extend__(HTMLTypeValueInputs.prototype, inputElements_dataProperties);
1.7993 +__extend__(HTMLTypeValueInputs.prototype, {
1.7994 + get name(){
1.7995 + return this.getAttribute('name')||'';
1.7996 + },
1.7997 + set name(value){
1.7998 + this.setAttribute('name',value);
1.7999 + },
1.8000 +});
1.8001 +
1.8002 +
1.8003 +/*
1.8004 +* HTMLInputAreaCommon - convenience class, not DOM
1.8005 +*/
1.8006 +var HTMLInputAreaCommon = function(ownerDocument) {
1.8007 + HTMLTypeValueInputs.apply(this, arguments);
1.8008 +};
1.8009 +HTMLInputAreaCommon.prototype = new HTMLTypeValueInputs();
1.8010 +__extend__(HTMLInputAreaCommon.prototype, inputElements_focusEvents);
1.8011 +__extend__(HTMLInputAreaCommon.prototype, inputElements_onchange);
1.8012 +__extend__(HTMLInputAreaCommon.prototype, {
1.8013 + get readOnly(){
1.8014 + return (this.getAttribute('readonly')=='readonly');
1.8015 + },
1.8016 + set readOnly(value){
1.8017 + this.setAttribute('readonly', (value ? 'readonly' :''));
1.8018 + },
1.8019 + select:function(){
1.8020 + __select__(this);
1.8021 +
1.8022 + }
1.8023 +});
1.8024 +
1.8025 +
1.8026 +var __updateFormForNamedElement__ = function(node, value) {
1.8027 + if (node.form) {
1.8028 + // to check for ID or NAME attribute too
1.8029 + // not, then nothing to do
1.8030 + node.form._updateElements();
1.8031 + }
1.8032 +};
1.8033 +
1.8034 +/**
1.8035 + * HTMLAnchorElement - DOM Level 2
1.8036 + *
1.8037 + * HTML5: 4.6.1 The a element
1.8038 + * http://dev.w3.org/html5/spec/Overview.html#the-a-element
1.8039 + */
1.8040 +HTMLAnchorElement = function(ownerDocument) {
1.8041 + HTMLElement.apply(this, arguments);
1.8042 +};
1.8043 +HTMLAnchorElement.prototype = new HTMLElement();
1.8044 +__extend__(HTMLAnchorElement.prototype, {
1.8045 + get accessKey() {
1.8046 + return this.getAttribute("accesskey")||'';
1.8047 + },
1.8048 + set accessKey(val) {
1.8049 + return this.setAttribute("accesskey",val);
1.8050 + },
1.8051 + get charset() {
1.8052 + return this.getAttribute("charset")||'';
1.8053 + },
1.8054 + set charset(val) {
1.8055 + return this.setAttribute("charset",val);
1.8056 + },
1.8057 + get coords() {
1.8058 + return this.getAttribute("coords")||'';
1.8059 + },
1.8060 + set coords(val) {
1.8061 + return this.setAttribute("coords",val);
1.8062 + },
1.8063 + get href() {
1.8064 + var link = this.getAttribute('href');
1.8065 + if (!link) {
1.8066 + return '';
1.8067 + }
1.8068 + return Envjs.uri(link,
1.8069 + this.ownerDocument.location.toString());
1.8070 + },
1.8071 + set href(val) {
1.8072 + return this.setAttribute("href", val);
1.8073 + },
1.8074 + get hreflang() {
1.8075 + return this.getAttribute("hreflang")||'';
1.8076 + },
1.8077 + set hreflang(val) {
1.8078 + this.setAttribute("hreflang",val);
1.8079 + },
1.8080 + get name() {
1.8081 + return this.getAttribute("name")||'';
1.8082 + },
1.8083 + set name(val) {
1.8084 + this.setAttribute("name",val);
1.8085 + },
1.8086 + get rel() {
1.8087 + return this.getAttribute("rel")||'';
1.8088 + },
1.8089 + set rel(val) {
1.8090 + return this.setAttribute("rel", val);
1.8091 + },
1.8092 + get rev() {
1.8093 + return this.getAttribute("rev")||'';
1.8094 + },
1.8095 + set rev(val) {
1.8096 + return this.setAttribute("rev",val);
1.8097 + },
1.8098 + get shape() {
1.8099 + return this.getAttribute("shape")||'';
1.8100 + },
1.8101 + set shape(val) {
1.8102 + return this.setAttribute("shape",val);
1.8103 + },
1.8104 + get target() {
1.8105 + return this.getAttribute("target")||'';
1.8106 + },
1.8107 + set target(val) {
1.8108 + return this.setAttribute("target",val);
1.8109 + },
1.8110 + get type() {
1.8111 + return this.getAttribute("type")||'';
1.8112 + },
1.8113 + set type(val) {
1.8114 + return this.setAttribute("type",val);
1.8115 + },
1.8116 + blur: function() {
1.8117 + __blur__(this);
1.8118 + },
1.8119 + focus: function() {
1.8120 + __focus__(this);
1.8121 + },
1.8122 +
1.8123 + /**
1.8124 + * Unlike other elements, toString returns the href
1.8125 + */
1.8126 + toString: function() {
1.8127 + return this.href;
1.8128 + }
1.8129 +});
1.8130 +
1.8131 +/*
1.8132 + * HTMLAreaElement - DOM Level 2
1.8133 + *
1.8134 + * HTML5: 4.8.13 The area element
1.8135 + * http://dev.w3.org/html5/spec/Overview.html#the-area-element
1.8136 + */
1.8137 +HTMLAreaElement = function(ownerDocument) {
1.8138 + HTMLElement.apply(this, arguments);
1.8139 +};
1.8140 +HTMLAreaElement.prototype = new HTMLElement();
1.8141 +__extend__(HTMLAreaElement.prototype, {
1.8142 + get accessKey(){
1.8143 + return this.getAttribute('accesskey');
1.8144 + },
1.8145 + set accessKey(value){
1.8146 + this.setAttribute('accesskey',value);
1.8147 + },
1.8148 + get alt(){
1.8149 + return this.getAttribute('alt') || '';
1.8150 + },
1.8151 + set alt(value){
1.8152 + this.setAttribute('alt',value);
1.8153 + },
1.8154 + get coords(){
1.8155 + return this.getAttribute('coords');
1.8156 + },
1.8157 + set coords(value){
1.8158 + this.setAttribute('coords',value);
1.8159 + },
1.8160 + get href(){
1.8161 + return this.getAttribute('href') || '';
1.8162 + },
1.8163 + set href(value){
1.8164 + this.setAttribute('href',value);
1.8165 + },
1.8166 + get noHref(){
1.8167 + return this.hasAttribute('href');
1.8168 + },
1.8169 + get shape(){
1.8170 + //TODO
1.8171 + return 0;
1.8172 + },
1.8173 + /*get tabIndex(){
1.8174 + return this.getAttribute('tabindex');
1.8175 + },
1.8176 + set tabIndex(value){
1.8177 + this.setAttribute('tabindex',value);
1.8178 + },*/
1.8179 + get target(){
1.8180 + return this.getAttribute('target');
1.8181 + },
1.8182 + set target(value){
1.8183 + this.setAttribute('target',value);
1.8184 + },
1.8185 +
1.8186 + /**
1.8187 + * toString like <a>, returns the href
1.8188 + */
1.8189 + toString: function() {
1.8190 + return this.href;
1.8191 + }
1.8192 +});
1.8193 +
1.8194 +
1.8195 +/*
1.8196 + * HTMLBaseElement - DOM Level 2
1.8197 + *
1.8198 + * HTML5: 4.2.3 The base element
1.8199 + * http://dev.w3.org/html5/spec/Overview.html#the-base-element
1.8200 + */
1.8201 +HTMLBaseElement = function(ownerDocument) {
1.8202 + HTMLElement.apply(this, arguments);
1.8203 +};
1.8204 +HTMLBaseElement.prototype = new HTMLElement();
1.8205 +__extend__(HTMLBaseElement.prototype, {
1.8206 + get href(){
1.8207 + return this.getAttribute('href');
1.8208 + },
1.8209 + set href(value){
1.8210 + this.setAttribute('href',value);
1.8211 + },
1.8212 + get target(){
1.8213 + return this.getAttribute('target');
1.8214 + },
1.8215 + set target(value){
1.8216 + this.setAttribute('target',value);
1.8217 + },
1.8218 + toString: function() {
1.8219 + return '[object HTMLBaseElement]';
1.8220 + }
1.8221 +});
1.8222 +
1.8223 +
1.8224 +/*
1.8225 + * HTMLQuoteElement - DOM Level 2
1.8226 + * HTML5: 4.5.5 The blockquote element
1.8227 + * http://dev.w3.org/html5/spec/Overview.html#htmlquoteelement
1.8228 + */
1.8229 +HTMLQuoteElement = function(ownerDocument) {
1.8230 + HTMLElement.apply(this, arguments);
1.8231 +};
1.8232 +__extend__(HTMLQuoteElement.prototype, HTMLElement.prototype);
1.8233 +__extend__(HTMLQuoteElement.prototype, {
1.8234 + /**
1.8235 + * Quoth the spec:
1.8236 + * """
1.8237 + * If the cite attribute is present, it must be a valid URL. To
1.8238 + * obtain the corresponding citation link, the value of the
1.8239 + * attribute must be resolved relative to the element. User agents
1.8240 + * should allow users to follow such citation links.
1.8241 + * """
1.8242 + *
1.8243 + * TODO: normalize
1.8244 + *
1.8245 + */
1.8246 + get cite() {
1.8247 + return this.getAttribute('cite') || '';
1.8248 + },
1.8249 +
1.8250 + set cite(value) {
1.8251 + this.setAttribute('cite', value);
1.8252 + },
1.8253 + toString: function() {
1.8254 + return '[object HTMLQuoteElement]';
1.8255 + }
1.8256 +});
1.8257 +
1.8258 +/*
1.8259 + * HTMLBodyElement - DOM Level 2
1.8260 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-body-element-0
1.8261 + */
1.8262 +HTMLBodyElement = function(ownerDocument) {
1.8263 + HTMLElement.apply(this, arguments);
1.8264 +};
1.8265 +HTMLBodyElement.prototype = new HTMLElement();
1.8266 +__extend__(HTMLBodyElement.prototype, {
1.8267 + onload: function(event){
1.8268 + __eval__(this.getAttribute('onload')||'', this);
1.8269 + },
1.8270 + onunload: function(event){
1.8271 + __eval__(this.getAttribute('onunload')||'', this);
1.8272 + },
1.8273 + toString: function() {
1.8274 + return '[object HTMLBodyElement]';
1.8275 + }
1.8276 +});
1.8277 +
1.8278 +/*
1.8279 + * HTMLBRElement
1.8280 + * HTML5: 4.5.3 The hr Element
1.8281 + * http://dev.w3.org/html5/spec/Overview.html#the-br-element
1.8282 + */
1.8283 +HTMLBRElement = function(ownerDocument) {
1.8284 + HTMLElement.apply(this, arguments);
1.8285 +};
1.8286 +
1.8287 +HTMLBRElement.prototype = new HTMLElement();
1.8288 +__extend__(HTMLBRElement.prototype, {
1.8289 +
1.8290 + // no additional properties or elements
1.8291 +
1.8292 + toString: function() {
1.8293 + return '[object HTMLBRElement]';
1.8294 + }
1.8295 +});
1.8296 +
1.8297 +
1.8298 +/*
1.8299 + * HTMLButtonElement - DOM Level 2
1.8300 + *
1.8301 + * HTML5: 4.10.6 The button element
1.8302 + * http://dev.w3.org/html5/spec/Overview.html#the-button-element
1.8303 + */
1.8304 +HTMLButtonElement = function(ownerDocument) {
1.8305 + HTMLTypeValueInputs.apply(this, arguments);
1.8306 +};
1.8307 +HTMLButtonElement.prototype = new HTMLTypeValueInputs();
1.8308 +__extend__(HTMLButtonElement.prototype, inputElements_status);
1.8309 +__extend__(HTMLButtonElement.prototype, {
1.8310 + get dataFormatAs(){
1.8311 + return this.getAttribute('dataFormatAs');
1.8312 + },
1.8313 + set dataFormatAs(value){
1.8314 + this.setAttribute('dataFormatAs',value);
1.8315 + },
1.8316 + get type() {
1.8317 + return this.getAttribute('type') || 'submit';
1.8318 + },
1.8319 + set type(value) {
1.8320 + this.setAttribute('type', value);
1.8321 + },
1.8322 + get value() {
1.8323 + return this.getAttribute('value') || '';
1.8324 + },
1.8325 + set value(value) {
1.8326 + this.setAttribute('value', value);
1.8327 + },
1.8328 + toString: function() {
1.8329 + return '[object HTMLButtonElement]';
1.8330 + }
1.8331 +});
1.8332 +
1.8333 +// Named Element Support
1.8334 +HTMLElement.registerSetAttribute('BUTTON', 'name',
1.8335 + __updateFormForNamedElement__);
1.8336 +
1.8337 +/*
1.8338 + * HTMLCanvasElement - DOM Level 2
1.8339 + * HTML5: 4.8.11 The canvas element
1.8340 + * http://dev.w3.org/html5/spec/Overview.html#the-canvas-element
1.8341 + */
1.8342 +
1.8343 +
1.8344 +/*
1.8345 + * This is a "non-Abstract Base Class". For an implmentation that actually
1.8346 + * did something, all these methods would need to over-written
1.8347 + */
1.8348 +CanvasRenderingContext2D = function() {
1.8349 + // NOP
1.8350 +};
1.8351 +
1.8352 +var nullfunction = function() {};
1.8353 +
1.8354 +CanvasRenderingContext2D.prototype = {
1.8355 + addColorStop: nullfunction,
1.8356 + arc: nullfunction,
1.8357 + beginPath: nullfunction,
1.8358 + bezierCurveTo: nullfunction,
1.8359 + clearRect: nullfunction,
1.8360 + clip: nullfunction,
1.8361 + closePath: nullfunction,
1.8362 + createLinearGradient: nullfunction,
1.8363 + createPattern: nullfunction,
1.8364 + createRadialGradient: nullfunction,
1.8365 + drawImage: nullfunction,
1.8366 + fill: nullfunction,
1.8367 + fillRect: nullfunction,
1.8368 + lineTo: nullfunction,
1.8369 + moveTo: nullfunction,
1.8370 + quadraticCurveTo: nullfunction,
1.8371 + rect: nullfunction,
1.8372 + restore: nullfunction,
1.8373 + rotate: nullfunction,
1.8374 + save: nullfunction,
1.8375 + scale: nullfunction,
1.8376 + setTranform: nullfunction,
1.8377 + stroke: nullfunction,
1.8378 + strokeRect: nullfunction,
1.8379 + transform: nullfunction,
1.8380 + translate: nullfunction,
1.8381 +
1.8382 + toString: function() {
1.8383 + return '[object CanvasRenderingContext2D]';
1.8384 + }
1.8385 +};
1.8386 +
1.8387 +HTMLCanvasElement = function(ownerDocument) {
1.8388 + HTMLElement.apply(this, arguments);
1.8389 +};
1.8390 +HTMLCanvasElement.prototype = new HTMLElement();
1.8391 +__extend__(HTMLCanvasElement.prototype, {
1.8392 +
1.8393 + getContext: function(ctxtype) {
1.8394 + if (ctxtype === '2d') {
1.8395 + return new CanvasRenderingContext2D();
1.8396 + }
1.8397 + throw new Error("Unknown context type of '" + ctxtype + '"');
1.8398 + },
1.8399 +
1.8400 + get height(){
1.8401 + return Number(this.getAttribute('height')|| 150);
1.8402 + },
1.8403 + set height(value){
1.8404 + this.setAttribute('height', value);
1.8405 + },
1.8406 +
1.8407 + get width(){
1.8408 + return Number(this.getAttribute('width')|| 300);
1.8409 + },
1.8410 + set width(value){
1.8411 + this.setAttribute('width', value);
1.8412 + },
1.8413 +
1.8414 + toString: function() {
1.8415 + return '[object HTMLCanvasElement]';
1.8416 + }
1.8417 +
1.8418 +});
1.8419 +
1.8420 +
1.8421 +/*
1.8422 +* HTMLTableColElement - DOM Level 2
1.8423 +*
1.8424 +* HTML5: 4.9.3 The colgroup element
1.8425 +* http://dev.w3.org/html5/spec/Overview.html#the-colgroup-element
1.8426 +*/
1.8427 +HTMLTableColElement = function(ownerDocument) {
1.8428 + HTMLElement.apply(this, arguments);
1.8429 +};
1.8430 +HTMLTableColElement.prototype = new HTMLElement();
1.8431 +__extend__(HTMLTableColElement.prototype, {
1.8432 + get align(){
1.8433 + return this.getAttribute('align');
1.8434 + },
1.8435 + set align(value){
1.8436 + this.setAttribute('align', value);
1.8437 + },
1.8438 + get ch(){
1.8439 + return this.getAttribute('ch');
1.8440 + },
1.8441 + set ch(value){
1.8442 + this.setAttribute('ch', value);
1.8443 + },
1.8444 + get chOff(){
1.8445 + return this.getAttribute('ch');
1.8446 + },
1.8447 + set chOff(value){
1.8448 + this.setAttribute('ch', value);
1.8449 + },
1.8450 + get span(){
1.8451 + return this.getAttribute('span');
1.8452 + },
1.8453 + set span(value){
1.8454 + this.setAttribute('span', value);
1.8455 + },
1.8456 + get vAlign(){
1.8457 + return this.getAttribute('valign');
1.8458 + },
1.8459 + set vAlign(value){
1.8460 + this.setAttribute('valign', value);
1.8461 + },
1.8462 + get width(){
1.8463 + return this.getAttribute('width');
1.8464 + },
1.8465 + set width(value){
1.8466 + this.setAttribute('width', value);
1.8467 + },
1.8468 + toString: function() {
1.8469 + return '[object HTMLTableColElement]';
1.8470 + }
1.8471 +});
1.8472 +
1.8473 +
1.8474 +/*
1.8475 + * HTMLModElement - DOM Level 2
1.8476 + * http://dev.w3.org/html5/spec/Overview.html#htmlmodelement
1.8477 + */
1.8478 +HTMLModElement = function(ownerDocument) {
1.8479 + HTMLElement.apply(this, arguments);
1.8480 +};
1.8481 +HTMLModElement.prototype = new HTMLElement();
1.8482 +__extend__(HTMLModElement.prototype, {
1.8483 + get cite(){
1.8484 + return this.getAttribute('cite');
1.8485 + },
1.8486 + set cite(value){
1.8487 + this.setAttribute('cite', value);
1.8488 + },
1.8489 + get dateTime(){
1.8490 + return this.getAttribute('datetime');
1.8491 + },
1.8492 + set dateTime(value){
1.8493 + this.setAttribute('datetime', value);
1.8494 + },
1.8495 + toString: function() {
1.8496 + return '[object HTMLModElement]';
1.8497 + }
1.8498 +});
1.8499 +
1.8500 +/*
1.8501 + * HTMLDivElement - DOM Level 2
1.8502 + * HTML5: 4.5.12 The Div Element
1.8503 + * http://dev.w3.org/html5/spec/Overview.html#the-div-element
1.8504 + */
1.8505 +HTMLDivElement = function(ownerDocument) {
1.8506 + HTMLElement.apply(this, arguments);
1.8507 +};
1.8508 +
1.8509 +HTMLDivElement.prototype = new HTMLElement();
1.8510 +__extend__(HTMLDivElement.prototype, {
1.8511 + get align(){
1.8512 + return this.getAttribute('align') || 'left';
1.8513 + },
1.8514 + set align(value){
1.8515 + this.setAttribute('align', value);
1.8516 + },
1.8517 + toString: function() {
1.8518 + return '[object HTMLDivElement]';
1.8519 + }
1.8520 +});
1.8521 +
1.8522 +
1.8523 +/*
1.8524 + * HTMLDListElement
1.8525 + * HTML5: 4.5.7 The dl Element
1.8526 + * http://dev.w3.org/html5/spec/Overview.html#the-dl-element
1.8527 + */
1.8528 +HTMLDListElement = function(ownerDocument) {
1.8529 + HTMLElement.apply(this, arguments);
1.8530 +};
1.8531 +
1.8532 +HTMLDListElement.prototype = new HTMLElement();
1.8533 +__extend__(HTMLDListElement.prototype, {
1.8534 +
1.8535 + // no additional properties or elements
1.8536 +
1.8537 + toString: function() {
1.8538 + return '[object HTMLDListElement]';
1.8539 + }
1.8540 +});
1.8541 +
1.8542 +
1.8543 +/**
1.8544 + * HTMLLegendElement - DOM Level 2
1.8545 + *
1.8546 + * HTML5: 4.10.3 The legend element
1.8547 + * http://dev.w3.org/html5/spec/Overview.html#the-legend-element
1.8548 + */
1.8549 +HTMLLegendElement = function(ownerDocument) {
1.8550 + HTMLInputCommon.apply(this, arguments);
1.8551 +};
1.8552 +HTMLLegendElement.prototype = new HTMLInputCommon();
1.8553 +__extend__(HTMLLegendElement.prototype, {
1.8554 + get align(){
1.8555 + return this.getAttribute('align');
1.8556 + },
1.8557 + set align(value){
1.8558 + this.setAttribute('align',value);
1.8559 + }
1.8560 +});
1.8561 +
1.8562 +
1.8563 +/*
1.8564 + * HTMLFieldSetElement - DOM Level 2
1.8565 + *
1.8566 + * HTML5: 4.10.2 The fieldset element
1.8567 + * http://dev.w3.org/html5/spec/Overview.html#the-fieldset-element
1.8568 + */
1.8569 +HTMLFieldSetElement = function(ownerDocument) {
1.8570 + HTMLLegendElement.apply(this, arguments);
1.8571 +};
1.8572 +HTMLFieldSetElement.prototype = new HTMLLegendElement();
1.8573 +__extend__(HTMLFieldSetElement.prototype, {
1.8574 + get margin(){
1.8575 + return this.getAttribute('margin');
1.8576 + },
1.8577 + set margin(value){
1.8578 + this.setAttribute('margin',value);
1.8579 + },
1.8580 + toString: function() {
1.8581 + return '[object HTMLFieldSetElement]';
1.8582 + }
1.8583 +});
1.8584 +
1.8585 +// Named Element Support
1.8586 +HTMLElement.registerSetAttribute('FIELDSET', 'name',
1.8587 + __updateFormForNamedElement__);
1.8588 +/*
1.8589 + * HTMLFormElement - DOM Level 2
1.8590 + *
1.8591 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-form-element
1.8592 + */
1.8593 +HTMLFormElement = function(ownerDocument){
1.8594 + HTMLElement.apply(this, arguments);
1.8595 +
1.8596 + //TODO: on __elementPopped__ from the parser
1.8597 + // we need to determine all the forms default
1.8598 + // values
1.8599 +};
1.8600 +HTMLFormElement.prototype = new HTMLElement();
1.8601 +__extend__(HTMLFormElement.prototype,{
1.8602 + get acceptCharset(){
1.8603 + return this.getAttribute('accept-charset');
1.8604 + },
1.8605 + set acceptCharset(acceptCharset) {
1.8606 + this.setAttribute('accept-charset', acceptCharset);
1.8607 + },
1.8608 + get action() {
1.8609 + return this.getAttribute('action');
1.8610 + },
1.8611 + set action(action){
1.8612 + this.setAttribute('action', action);
1.8613 + },
1.8614 +
1.8615 + get enctype() {
1.8616 + return this.getAttribute('enctype');
1.8617 + },
1.8618 + set enctype(enctype) {
1.8619 + this.setAttribute('enctype', enctype);
1.8620 + },
1.8621 + get method() {
1.8622 + return this.getAttribute('method');
1.8623 + },
1.8624 + set method(method) {
1.8625 + this.setAttribute('method', method);
1.8626 + },
1.8627 + get name() {
1.8628 + return this.getAttribute("name");
1.8629 + },
1.8630 + set name(val) {
1.8631 + return this.setAttribute("name",val);
1.8632 + },
1.8633 + get target() {
1.8634 + return this.getAttribute("target");
1.8635 + },
1.8636 + set target(val) {
1.8637 + return this.setAttribute("target",val);
1.8638 + },
1.8639 +
1.8640 + /**
1.8641 + * "Named Elements"
1.8642 + *
1.8643 + */
1.8644 + /**
1.8645 + * returns HTMLFormControlsCollection
1.8646 + * http://dev.w3.org/html5/spec/Overview.html#dom-form-elements
1.8647 + *
1.8648 + * button fieldset input keygen object output select textarea
1.8649 + */
1.8650 + get elements() {
1.8651 + var nodes = this.getElementsByTagName('*');
1.8652 + var alist = [];
1.8653 + var i, tmp;
1.8654 + for (i = 0; i < nodes.length; ++i) {
1.8655 + nodename = nodes[i].nodeName;
1.8656 + // would like to replace switch with something else
1.8657 + // since it's redundant with the SetAttribute callbacks
1.8658 + switch (nodes[i].nodeName) {
1.8659 + case 'BUTTON':
1.8660 + case 'FIELDSET':
1.8661 + case 'INPUT':
1.8662 + case 'KEYGEN':
1.8663 + case 'OBJECT':
1.8664 + case 'OUTPUT':
1.8665 + case 'SELECT':
1.8666 + case 'TEXTAREA':
1.8667 + alist.push(nodes[i]);
1.8668 + this[i] = nodes[i];
1.8669 + tmp = nodes[i].name;
1.8670 + if (tmp) {
1.8671 + this[tmp] = nodes[i];
1.8672 + }
1.8673 + tmp = nodes[i].id;
1.8674 + if (tmp) {
1.8675 + this[tmp] = nodes[i];
1.8676 + }
1.8677 + }
1.8678 + }
1.8679 + return new HTMLCollection(alist);
1.8680 + },
1.8681 + _updateElements: function() {
1.8682 + this.elements;
1.8683 + },
1.8684 + get length() {
1.8685 + return this.elements.length;
1.8686 + },
1.8687 + item: function(idx) {
1.8688 + return this.elements[idx];
1.8689 + },
1.8690 + namedItem: function(aname) {
1.8691 + return this.elements.namedItem(aname);
1.8692 + },
1.8693 + toString: function() {
1.8694 + return '[object HTMLFormElement]';
1.8695 + },
1.8696 + submit: function() {
1.8697 + //TODO: this needs to perform the form inputs serialization
1.8698 + // and submission
1.8699 + // DONE: see xhr/form.js
1.8700 + var event = __submit__(this);
1.8701 +
1.8702 + },
1.8703 + reset: function() {
1.8704 + //TODO: this needs to reset all values specified in the form
1.8705 + // to those which where set as defaults
1.8706 + __reset__(this);
1.8707 +
1.8708 + },
1.8709 + onsubmit: HTMLEvents.prototype.onsubmit,
1.8710 + onreset: HTMLEvents.prototype.onreset
1.8711 +});
1.8712 +
1.8713 +/**
1.8714 + * HTMLFrameElement - DOM Level 2
1.8715 + */
1.8716 +HTMLFrameElement = function(ownerDocument) {
1.8717 + HTMLElement.apply(this, arguments);
1.8718 + // this is normally a getter but we need to be
1.8719 + // able to set it to correctly emulate behavior
1.8720 + this.contentDocument = null;
1.8721 + this.contentWindow = null;
1.8722 +};
1.8723 +HTMLFrameElement.prototype = new HTMLElement();
1.8724 +__extend__(HTMLFrameElement.prototype, {
1.8725 +
1.8726 + get frameBorder(){
1.8727 + return this.getAttribute('border')||"";
1.8728 + },
1.8729 + set frameBorder(value){
1.8730 + this.setAttribute('border', value);
1.8731 + },
1.8732 + get longDesc(){
1.8733 + return this.getAttribute('longdesc')||"";
1.8734 + },
1.8735 + set longDesc(value){
1.8736 + this.setAttribute('longdesc', value);
1.8737 + },
1.8738 + get marginHeight(){
1.8739 + return this.getAttribute('marginheight')||"";
1.8740 + },
1.8741 + set marginHeight(value){
1.8742 + this.setAttribute('marginheight', value);
1.8743 + },
1.8744 + get marginWidth(){
1.8745 + return this.getAttribute('marginwidth')||"";
1.8746 + },
1.8747 + set marginWidth(value){
1.8748 + this.setAttribute('marginwidth', value);
1.8749 + },
1.8750 + get name(){
1.8751 + return this.getAttribute('name')||"";
1.8752 + },
1.8753 + set name(value){
1.8754 + this.setAttribute('name', value);
1.8755 + },
1.8756 + get noResize(){
1.8757 + return this.getAttribute('noresize')||false;
1.8758 + },
1.8759 + set noResize(value){
1.8760 + this.setAttribute('noresize', value);
1.8761 + },
1.8762 + get scrolling(){
1.8763 + return this.getAttribute('scrolling')||"";
1.8764 + },
1.8765 + set scrolling(value){
1.8766 + this.setAttribute('scrolling', value);
1.8767 + },
1.8768 + get src(){
1.8769 + return this.getAttribute('src')||"";
1.8770 + },
1.8771 + set src(value){
1.8772 + this.setAttribute('src', value);
1.8773 + },
1.8774 + toString: function(){
1.8775 + return '[object HTMLFrameElement]';
1.8776 + },
1.8777 + onload: HTMLEvents.prototype.onload
1.8778 +});
1.8779 +
1.8780 +/**
1.8781 + * HTMLFrameSetElement - DOM Level 2
1.8782 + *
1.8783 + * HTML5: 12.3.3 Frames
1.8784 + * http://dev.w3.org/html5/spec/Overview.html#frameset
1.8785 + */
1.8786 +HTMLFrameSetElement = function(ownerDocument) {
1.8787 + HTMLElement.apply(this, arguments);
1.8788 +};
1.8789 +HTMLFrameSetElement.prototype = new HTMLElement();
1.8790 +__extend__(HTMLFrameSetElement.prototype, {
1.8791 + get cols(){
1.8792 + return this.getAttribute('cols');
1.8793 + },
1.8794 + set cols(value){
1.8795 + this.setAttribute('cols', value);
1.8796 + },
1.8797 + get rows(){
1.8798 + return this.getAttribute('rows');
1.8799 + },
1.8800 + set rows(value){
1.8801 + this.setAttribute('rows', value);
1.8802 + },
1.8803 + toString: function() {
1.8804 + return '[object HTMLFrameSetElement]';
1.8805 + }
1.8806 +});
1.8807 +
1.8808 +/*
1.8809 + * HTMLHeadingElement
1.8810 + * HTML5: 4.4.6 The h1, h2, h3, h4, h5, and h6 elements
1.8811 + * http://dev.w3.org/html5/spec/Overview.html#the-h1-h2-h3-h4-h5-and-h6-elements
1.8812 + */
1.8813 +HTMLHeadingElement = function(ownerDocument) {
1.8814 + HTMLElement.apply(this, arguments);
1.8815 +};
1.8816 +
1.8817 +HTMLHeadingElement.prototype = new HTMLElement();
1.8818 +__extend__(HTMLHeadingElement.prototype, {
1.8819 + toString: function() {
1.8820 + return '[object HTMLHeadingElement]';
1.8821 + }
1.8822 +});
1.8823 +
1.8824 +/**
1.8825 + * HTMLHeadElement - DOM Level 2
1.8826 + *
1.8827 + * HTML5: 4.2.1 The head element
1.8828 + * http://dev.w3.org/html5/spec/Overview.html#the-head-element-0
1.8829 + */
1.8830 +HTMLHeadElement = function(ownerDocument) {
1.8831 + HTMLElement.apply(this, arguments);
1.8832 +};
1.8833 +HTMLHeadElement.prototype = new HTMLElement();
1.8834 +__extend__(HTMLHeadElement.prototype, {
1.8835 + get profile(){
1.8836 + return this.getAttribute('profile');
1.8837 + },
1.8838 + set profile(value){
1.8839 + this.setAttribute('profile', value);
1.8840 + },
1.8841 + //we override this so we can apply browser behavior specific to head children
1.8842 + //like loading scripts
1.8843 + appendChild : function(newChild) {
1.8844 + newChild = HTMLElement.prototype.appendChild.apply(this,[newChild]);
1.8845 + //TODO: evaluate scripts which are appended to the head
1.8846 + //__evalScript__(newChild);
1.8847 + return newChild;
1.8848 + },
1.8849 + insertBefore : function(newChild, refChild) {
1.8850 + newChild = HTMLElement.prototype.insertBefore.apply(this,[newChild]);
1.8851 + //TODO: evaluate scripts which are appended to the head
1.8852 + //__evalScript__(newChild);
1.8853 + return newChild;
1.8854 + },
1.8855 + toString: function(){
1.8856 + return '[object HTMLHeadElement]';
1.8857 + }
1.8858 +});
1.8859 +
1.8860 +
1.8861 +/*
1.8862 + * HTMLHRElement
1.8863 + * HTML5: 4.5.2 The hr Element
1.8864 + * http://dev.w3.org/html5/spec/Overview.html#the-hr-element
1.8865 + */
1.8866 +HTMLHRElement = function(ownerDocument) {
1.8867 + HTMLElement.apply(this, arguments);
1.8868 +};
1.8869 +
1.8870 +HTMLHRElement.prototype = new HTMLElement();
1.8871 +__extend__(HTMLHRElement.prototype, {
1.8872 +
1.8873 + // no additional properties or elements
1.8874 +
1.8875 + toString: function() {
1.8876 + return '[object HTMLHRElement]';
1.8877 + }
1.8878 +});
1.8879 +
1.8880 +
1.8881 +/*
1.8882 + * HTMLHtmlElement
1.8883 + * HTML5: 4.1.1 The Html Element
1.8884 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
1.8885 + */
1.8886 +HTMLHtmlElement = function(ownerDocument) {
1.8887 + HTMLElement.apply(this, arguments);
1.8888 +};
1.8889 +
1.8890 +HTMLHtmlElement.prototype = new HTMLElement();
1.8891 +__extend__(HTMLHtmlElement.prototype, {
1.8892 +
1.8893 + // no additional properties or elements
1.8894 +
1.8895 + toString: function() {
1.8896 + return '[object HTMLHtmlElement]';
1.8897 + }
1.8898 +});
1.8899 +
1.8900 +
1.8901 +/*
1.8902 + * HTMLIFrameElement - DOM Level 2
1.8903 + *
1.8904 + * HTML5: 4.8.3 The iframe element
1.8905 + * http://dev.w3.org/html5/spec/Overview.html#the-iframe-element
1.8906 + */
1.8907 +HTMLIFrameElement = function(ownerDocument) {
1.8908 + HTMLFrameElement.apply(this, arguments);
1.8909 +};
1.8910 +HTMLIFrameElement.prototype = new HTMLFrameElement();
1.8911 +__extend__(HTMLIFrameElement.prototype, {
1.8912 + get height() {
1.8913 + return this.getAttribute("height") || "";
1.8914 + },
1.8915 + set height(val) {
1.8916 + return this.setAttribute("height",val);
1.8917 + },
1.8918 + get width() {
1.8919 + return this.getAttribute("width") || "";
1.8920 + },
1.8921 + set width(val) {
1.8922 + return this.setAttribute("width",val);
1.8923 + },
1.8924 + toString: function(){
1.8925 + return '[object HTMLIFrameElement]';
1.8926 + }
1.8927 +});
1.8928 +
1.8929 +/**
1.8930 + * HTMLImageElement and Image
1.8931 + */
1.8932 +
1.8933 +
1.8934 +HTMLImageElement = function(ownerDocument) {
1.8935 + HTMLElement.apply(this, arguments);
1.8936 +};
1.8937 +HTMLImageElement.prototype = new HTMLElement();
1.8938 +__extend__(HTMLImageElement.prototype, {
1.8939 + get alt(){
1.8940 + return this.getAttribute('alt');
1.8941 + },
1.8942 + set alt(value){
1.8943 + this.setAttribute('alt', value);
1.8944 + },
1.8945 + get height(){
1.8946 + return parseInt(this.getAttribute('height'), 10) || 0;
1.8947 + },
1.8948 + set height(value){
1.8949 + this.setAttribute('height', value);
1.8950 + },
1.8951 + get isMap(){
1.8952 + return this.hasAttribute('map');
1.8953 + },
1.8954 + set useMap(value){
1.8955 + this.setAttribute('map', value);
1.8956 + },
1.8957 + get longDesc(){
1.8958 + return this.getAttribute('longdesc');
1.8959 + },
1.8960 + set longDesc(value){
1.8961 + this.setAttribute('longdesc', value);
1.8962 + },
1.8963 + get name(){
1.8964 + return this.getAttribute('name');
1.8965 + },
1.8966 + set name(value){
1.8967 + this.setAttribute('name', value);
1.8968 + },
1.8969 + get src(){
1.8970 + return this.getAttribute('src') || '';
1.8971 + },
1.8972 + set src(value){
1.8973 + this.setAttribute('src', value);
1.8974 + },
1.8975 + get width(){
1.8976 + return parseInt(this.getAttribute('width'), 10) || 0;
1.8977 + },
1.8978 + set width(value){
1.8979 + this.setAttribute('width', value);
1.8980 + },
1.8981 + toString: function(){
1.8982 + return '[object HTMLImageElement]';
1.8983 + }
1.8984 +});
1.8985 +
1.8986 +/*
1.8987 + * html5 4.8.1
1.8988 + * http://dev.w3.org/html5/spec/Overview.html#the-img-element
1.8989 + */
1.8990 +Image = function(width, height) {
1.8991 + // Not sure if "[global].document" satifies this requirement:
1.8992 + // "The element's document must be the active document of the
1.8993 + // browsing context of the Window object on which the interface
1.8994 + // object of the invoked constructor is found."
1.8995 +
1.8996 + HTMLElement.apply(this, [document]);
1.8997 + // Note: firefox will throw an error if the width/height
1.8998 + // is not an integer. Safari just converts to 0 on error.
1.8999 + this.width = parseInt(width, 10) || 0;
1.9000 + this.height = parseInt(height, 10) || 0;
1.9001 + this.nodeName = 'IMG';
1.9002 +};
1.9003 +Image.prototype = new HTMLImageElement();
1.9004 +
1.9005 +
1.9006 +/*
1.9007 + * Image.src attribute events.
1.9008 + *
1.9009 + * Not sure where this should live... in events/img.js? in parser/img.js?
1.9010 + * Split out to make it easy to move.
1.9011 + */
1.9012 +
1.9013 +/**
1.9014 + * HTMLImageElement && Image are a bit odd in that the 'src' attribute
1.9015 + * is 'active' -- changing it triggers loading of the image from the
1.9016 + * network.
1.9017 + *
1.9018 + * This can occur by
1.9019 + * - Directly setting the Image.src =
1.9020 + * - Using one of the Element.setAttributeXXX methods
1.9021 + * - Node.importNode an image
1.9022 + * - The initial creation and parsing of an <img> tag
1.9023 + *
1.9024 + * __onImageRequest__ is a function that handles eventing
1.9025 + * and dispatches to a user-callback.
1.9026 + *
1.9027 + */
1.9028 +__loadImage__ = function(node, value) {
1.9029 + var event;
1.9030 + if (value && (!Envjs.loadImage ||
1.9031 + (Envjs.loadImage &&
1.9032 + Envjs.loadImage(node, value)))) {
1.9033 + // value has to be something (easy)
1.9034 + // if the user-land API doesn't exist
1.9035 + // Or if the API exists and it returns true, then ok:
1.9036 + event = document.createEvent('Events');
1.9037 + event.initEvent('load');
1.9038 + } else {
1.9039 + // oops
1.9040 + event = document.createEvent('Events');
1.9041 + event.initEvent('error');
1.9042 + }
1.9043 + node.dispatchEvent(event, false);
1.9044 +};
1.9045 +
1.9046 +__extend__(HTMLImageElement.prototype, {
1.9047 + onload: function(event){
1.9048 + __eval__(this.getAttribute('onload') || '', this);
1.9049 + }
1.9050 +});
1.9051 +
1.9052 +
1.9053 +/*
1.9054 + * Image Loading
1.9055 + *
1.9056 + * The difference between "owner.parsing" and "owner.fragment"
1.9057 + *
1.9058 + * If owner.parsing === true, then during the html5 parsing then,
1.9059 + * __elementPopped__ is called when a compete tag (with attrs and
1.9060 + * children) is full parsed and added the DOM.
1.9061 + *
1.9062 + * For images, __elementPopped__ is called with everything the
1.9063 + * tag has. which in turn looks for a "src" attr and calls
1.9064 + * __loadImage__
1.9065 + *
1.9066 + * If owner.parser === false (or non-existant), then we are not in
1.9067 + * a parsing step. For images, perhaps someone directly modified
1.9068 + * a 'src' attribute of an existing image.
1.9069 + *
1.9070 + * 'innerHTML' is tricky since we first create a "fake document",
1.9071 + * parse it, then import the right parts. This may call
1.9072 + * img.setAttributeNS twice. once during the parse and once
1.9073 + * during the clone of the node. We want event to trigger on the
1.9074 + * later and not during th fake doco. "owner.fragment" is set by
1.9075 + * the fake doco parser to indicate that events should not be
1.9076 + * triggered on this.
1.9077 + *
1.9078 + * We coud make 'owner.parser' == [ 'none', 'full', 'fragment']
1.9079 + * and just use one variable That was not done since the patch is
1.9080 + * quite large as is.
1.9081 + *
1.9082 + * This same problem occurs with scripts. innerHTML oddly does
1.9083 + * not eval any <script> tags inside.
1.9084 + */
1.9085 +HTMLElement.registerSetAttribute('IMG', 'src', function(node, value) {
1.9086 + var owner = node.ownerDocument;
1.9087 + if (!owner.parsing && !owner.fragment) {
1.9088 + __loadImage__(node, value);
1.9089 + }
1.9090 +});
1.9091 +/**
1.9092 + * HTMLInputElement
1.9093 + *
1.9094 + * HTML5: 4.10.5 The input element
1.9095 + * http://dev.w3.org/html5/spec/Overview.html#the-input-element
1.9096 + */
1.9097 +HTMLInputElement = function(ownerDocument) {
1.9098 + HTMLInputAreaCommon.apply(this, arguments);
1.9099 + this._dirty = false;
1.9100 + this._checked = null;
1.9101 + this._value = null;
1.9102 +};
1.9103 +HTMLInputElement.prototype = new HTMLInputAreaCommon();
1.9104 +__extend__(HTMLInputElement.prototype, {
1.9105 + get alt(){
1.9106 + return this.getAttribute('alt') || '';
1.9107 + },
1.9108 + set alt(value){
1.9109 + this.setAttribute('alt', value);
1.9110 + },
1.9111 +
1.9112 + /**
1.9113 + * 'checked' returns state, NOT the value of the attribute
1.9114 + */
1.9115 + get checked(){
1.9116 + if (this._checked === null) {
1.9117 + this._checked = this.defaultChecked;
1.9118 + }
1.9119 + return this._checked;
1.9120 + },
1.9121 + set checked(value){
1.9122 + // force to boolean value
1.9123 + this._checked = (value) ? true : false;
1.9124 + },
1.9125 +
1.9126 + /**
1.9127 + * 'defaultChecked' actually reflects if the 'checked' attribute
1.9128 + * is present or not
1.9129 + */
1.9130 + get defaultChecked(){
1.9131 + return this.hasAttribute('checked');
1.9132 + },
1.9133 + set defaultChecked(val){
1.9134 + if (val) {
1.9135 + this.setAttribute('checked', '');
1.9136 + } else {
1.9137 + if (this.defaultChecked) {
1.9138 + this.removeAttribute('checked');
1.9139 + }
1.9140 + }
1.9141 + },
1.9142 + get defaultValue() {
1.9143 + return this.getAttribute('value') || '';
1.9144 + },
1.9145 + set defaultValue(value) {
1.9146 + this._dirty = true;
1.9147 + this.setAttribute('value', value);
1.9148 + },
1.9149 + get value() {
1.9150 + return (this._value === null) ? this.defaultValue : this._value;
1.9151 + },
1.9152 + set value(newvalue) {
1.9153 + this._value = newvalue;
1.9154 + },
1.9155 + /**
1.9156 + * Height is a string
1.9157 + */
1.9158 + get height(){
1.9159 + // spec says it is a string
1.9160 + return this.getAttribute('height') || '';
1.9161 + },
1.9162 + set height(value){
1.9163 + this.setAttribute('height',value);
1.9164 + },
1.9165 +
1.9166 + /**
1.9167 + * MaxLength is a number
1.9168 + */
1.9169 + get maxLength(){
1.9170 + return Number(this.getAttribute('maxlength')||'-1');
1.9171 + },
1.9172 + set maxLength(value){
1.9173 + this.setAttribute('maxlength', value);
1.9174 + },
1.9175 +
1.9176 + /**
1.9177 + * Src is a URL string
1.9178 + */
1.9179 + get src(){
1.9180 + return this.getAttribute('src') || '';
1.9181 + },
1.9182 + set src(value){
1.9183 + // TODO: make absolute any relative URLS
1.9184 + this.setAttribute('src', value);
1.9185 + },
1.9186 +
1.9187 + get type() {
1.9188 + return this.getAttribute('type') || 'text';
1.9189 + },
1.9190 + set type(value) {
1.9191 + this.setAttribute('type', value);
1.9192 + },
1.9193 +
1.9194 + get useMap(){
1.9195 + return this.getAttribute('map') || '';
1.9196 + },
1.9197 +
1.9198 + /**
1.9199 + * Width: spec says it is a string
1.9200 + */
1.9201 + get width(){
1.9202 + return this.getAttribute('width') || '';
1.9203 + },
1.9204 + set width(value){
1.9205 + this.setAttribute('width',value);
1.9206 + },
1.9207 + click:function(){
1.9208 + __click__(this);
1.9209 + },
1.9210 + toString: function() {
1.9211 + return '[object HTMLInputElement]';
1.9212 + }
1.9213 +});
1.9214 +
1.9215 +//http://dev.w3.org/html5/spec/Overview.html#dom-input-value
1.9216 +// if someone directly modifies the value attribute, then the input's value
1.9217 +// also directly changes.
1.9218 +HTMLElement.registerSetAttribute('INPUT', 'value', function(node, value) {
1.9219 + if (!node._dirty) {
1.9220 + node._value = value;
1.9221 + node._dirty = true;
1.9222 + }
1.9223 +});
1.9224 +
1.9225 +/*
1.9226 + *The checked content attribute is a boolean attribute that gives the
1.9227 + *default checkedness of the input element. When the checked content
1.9228 + *attribute is added, if the control does not have dirty checkedness,
1.9229 + *the user agent must set the checkedness of the element to true; when
1.9230 + *the checked content attribute is removed, if the control does not
1.9231 + *have dirty checkedness, the user agent must set the checkedness of
1.9232 + *the element to false.
1.9233 + */
1.9234 +// Named Element Support
1.9235 +HTMLElement.registerSetAttribute('INPUT', 'name',
1.9236 + __updateFormForNamedElement__);
1.9237 +
1.9238 +/**
1.9239 + * HTMLLabelElement - DOM Level 2
1.9240 + * HTML5 4.10.4 The label element
1.9241 + * http://dev.w3.org/html5/spec/Overview.html#the-label-element
1.9242 + */
1.9243 +HTMLLabelElement = function(ownerDocument) {
1.9244 + HTMLInputCommon.apply(this, arguments);
1.9245 +};
1.9246 +HTMLLabelElement.prototype = new HTMLInputCommon();
1.9247 +__extend__(HTMLLabelElement.prototype, inputElements_dataProperties);
1.9248 +__extend__(HTMLLabelElement.prototype, {
1.9249 + get htmlFor() {
1.9250 + return this.getAttribute('for');
1.9251 + },
1.9252 + set htmlFor(value) {
1.9253 + this.setAttribute('for',value);
1.9254 + },
1.9255 + get dataFormatAs() {
1.9256 + return this.getAttribute('dataFormatAs');
1.9257 + },
1.9258 + set dataFormatAs(value) {
1.9259 + this.setAttribute('dataFormatAs',value);
1.9260 + },
1.9261 + toString: function() {
1.9262 + return '[object HTMLLabelElement]';
1.9263 + }
1.9264 +});
1.9265 +
1.9266 +/*
1.9267 + * HTMLLIElement
1.9268 + * HTML5: 4.5.8 The li Element
1.9269 + * http://dev.w3.org/html5/spec/Overview.html#the-li-element
1.9270 + */
1.9271 +HTMLLIElement = function(ownerDocument) {
1.9272 + HTMLElement.apply(this, arguments);
1.9273 +};
1.9274 +
1.9275 +HTMLLIElement.prototype = new HTMLElement();
1.9276 +__extend__(HTMLLIElement.prototype, {
1.9277 +
1.9278 + // TODO: attribute long value;
1.9279 +
1.9280 + toString: function() {
1.9281 + return '[object HTMLLIElement]';
1.9282 + }
1.9283 +});
1.9284 +
1.9285 +
1.9286 +/*
1.9287 + * HTMLLinkElement - DOM Level 2
1.9288 + *
1.9289 + * HTML5: 4.8.12 The map element
1.9290 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
1.9291 + */
1.9292 +HTMLLinkElement = function(ownerDocument) {
1.9293 + HTMLElement.apply(this, arguments);
1.9294 +};
1.9295 +HTMLLinkElement.prototype = new HTMLElement();
1.9296 +__extend__(HTMLLinkElement.prototype, {
1.9297 + get disabled(){
1.9298 + return this.getAttribute('disabled');
1.9299 + },
1.9300 + set disabled(value){
1.9301 + this.setAttribute('disabled',value);
1.9302 + },
1.9303 + get charset(){
1.9304 + return this.getAttribute('charset');
1.9305 + },
1.9306 + set charset(value){
1.9307 + this.setAttribute('charset',value);
1.9308 + },
1.9309 + get href(){
1.9310 + return this.getAttribute('href');
1.9311 + },
1.9312 + set href(value){
1.9313 + this.setAttribute('href',value);
1.9314 + },
1.9315 + get hreflang(){
1.9316 + return this.getAttribute('hreflang');
1.9317 + },
1.9318 + set hreflang(value){
1.9319 + this.setAttribute('hreflang',value);
1.9320 + },
1.9321 + get media(){
1.9322 + return this.getAttribute('media');
1.9323 + },
1.9324 + set media(value){
1.9325 + this.setAttribute('media',value);
1.9326 + },
1.9327 + get rel(){
1.9328 + return this.getAttribute('rel');
1.9329 + },
1.9330 + set rel(value){
1.9331 + this.setAttribute('rel',value);
1.9332 + },
1.9333 + get rev(){
1.9334 + return this.getAttribute('rev');
1.9335 + },
1.9336 + set rev(value){
1.9337 + this.setAttribute('rev',value);
1.9338 + },
1.9339 + get target(){
1.9340 + return this.getAttribute('target');
1.9341 + },
1.9342 + set target(value){
1.9343 + this.setAttribute('target',value);
1.9344 + },
1.9345 + get type(){
1.9346 + return this.getAttribute('type');
1.9347 + },
1.9348 + set type(value){
1.9349 + this.setAttribute('type',value);
1.9350 + },
1.9351 + toString: function() {
1.9352 + return '[object HTMLLinkElement]';
1.9353 + }
1.9354 +});
1.9355 +
1.9356 +__loadLink__ = function(node, value) {
1.9357 + var event;
1.9358 + var owner = node.ownerDocument;
1.9359 +
1.9360 + if (owner.fragment) {
1.9361 + /**
1.9362 + * if we are in an innerHTML fragment parsing step
1.9363 + * then ignore. It will be handled once the fragment is
1.9364 + * added to the real doco
1.9365 + */
1.9366 + return;
1.9367 + }
1.9368 +
1.9369 + if (node.parentNode === null) {
1.9370 + /*
1.9371 + * if a <link> is parentless (normally by create a new link
1.9372 + * via document.createElement('link'), then do *not* fire an
1.9373 + * event, even if it has a valid 'href' attribute.
1.9374 + */
1.9375 + return;
1.9376 + }
1.9377 + if (value != '' && (!Envjs.loadLink ||
1.9378 + (Envjs.loadLink &&
1.9379 + Envjs.loadLink(node, value)))) {
1.9380 + // value has to be something (easy)
1.9381 + // if the user-land API doesn't exist
1.9382 + // Or if the API exists and it returns true, then ok:
1.9383 + event = document.createEvent('Events');
1.9384 + event.initEvent('load');
1.9385 + } else {
1.9386 + // oops
1.9387 + event = document.createEvent('Events');
1.9388 + event.initEvent('error');
1.9389 + }
1.9390 + node.dispatchEvent(event, false);
1.9391 +};
1.9392 +
1.9393 +
1.9394 +HTMLElement.registerSetAttribute('LINK', 'href', function(node, value) {
1.9395 + __loadLink__(node, value);
1.9396 +});
1.9397 +
1.9398 +/**
1.9399 + * Event stuff, not sure where it goes
1.9400 + */
1.9401 +__extend__(HTMLLinkElement.prototype, {
1.9402 + onload: function(event){
1.9403 + __eval__(this.getAttribute('onload')||'', this);
1.9404 + },
1.9405 +});
1.9406 +
1.9407 +/**
1.9408 + * HTMLMapElement
1.9409 + *
1.9410 + * 4.8.12 The map element
1.9411 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
1.9412 + */
1.9413 +HTMLMapElement = function(ownerDocument) {
1.9414 + HTMLElement.apply(this, arguments);
1.9415 +};
1.9416 +HTMLMapElement.prototype = new HTMLElement();
1.9417 +__extend__(HTMLMapElement.prototype, {
1.9418 + get areas(){
1.9419 + return this.getElementsByTagName('area');
1.9420 + },
1.9421 + get name(){
1.9422 + return this.getAttribute('name') || '';
1.9423 + },
1.9424 + set name(value){
1.9425 + this.setAttribute('name',value);
1.9426 + },
1.9427 + toString: function() {
1.9428 + return '[object HTMLMapElement]';
1.9429 + }
1.9430 +});
1.9431 +
1.9432 +/**
1.9433 + * HTMLMetaElement - DOM Level 2
1.9434 + * HTML5: 4.2.5 The meta element
1.9435 + * http://dev.w3.org/html5/spec/Overview.html#meta
1.9436 + */
1.9437 +HTMLMetaElement = function(ownerDocument) {
1.9438 + HTMLElement.apply(this, arguments);
1.9439 +};
1.9440 +HTMLMetaElement.prototype = new HTMLElement();
1.9441 +__extend__(HTMLMetaElement.prototype, {
1.9442 + get content() {
1.9443 + return this.getAttribute('content') || '';
1.9444 + },
1.9445 + set content(value){
1.9446 + this.setAttribute('content',value);
1.9447 + },
1.9448 + get httpEquiv(){
1.9449 + return this.getAttribute('http-equiv') || '';
1.9450 + },
1.9451 + set httpEquiv(value){
1.9452 + this.setAttribute('http-equiv',value);
1.9453 + },
1.9454 + get name(){
1.9455 + return this.getAttribute('name') || '';
1.9456 + },
1.9457 + set name(value){
1.9458 + this.setAttribute('name',value);
1.9459 + },
1.9460 + get scheme(){
1.9461 + return this.getAttribute('scheme');
1.9462 + },
1.9463 + set scheme(value){
1.9464 + this.setAttribute('scheme',value);
1.9465 + },
1.9466 + toString: function() {
1.9467 + return '[object HTMLMetaElement]';
1.9468 + }
1.9469 +});
1.9470 +
1.9471 +
1.9472 +/**
1.9473 + * HTMLObjectElement - DOM Level 2
1.9474 + * HTML5: 4.8.5 The object element
1.9475 + * http://dev.w3.org/html5/spec/Overview.html#the-object-element
1.9476 + */
1.9477 +HTMLObjectElement = function(ownerDocument) {
1.9478 + HTMLElement.apply(this, arguments);
1.9479 +};
1.9480 +HTMLObjectElement.prototype = new HTMLElement();
1.9481 +__extend__(HTMLObjectElement.prototype, {
1.9482 + get code(){
1.9483 + return this.getAttribute('code');
1.9484 + },
1.9485 + set code(value){
1.9486 + this.setAttribute('code',value);
1.9487 + },
1.9488 + get archive(){
1.9489 + return this.getAttribute('archive');
1.9490 + },
1.9491 + set archive(value){
1.9492 + this.setAttribute('archive',value);
1.9493 + },
1.9494 + get codeBase(){
1.9495 + return this.getAttribute('codebase');
1.9496 + },
1.9497 + set codeBase(value){
1.9498 + this.setAttribute('codebase',value);
1.9499 + },
1.9500 + get codeType(){
1.9501 + return this.getAttribute('codetype');
1.9502 + },
1.9503 + set codeType(value){
1.9504 + this.setAttribute('codetype',value);
1.9505 + },
1.9506 + get data(){
1.9507 + return this.getAttribute('data');
1.9508 + },
1.9509 + set data(value){
1.9510 + this.setAttribute('data',value);
1.9511 + },
1.9512 + get declare(){
1.9513 + return this.getAttribute('declare');
1.9514 + },
1.9515 + set declare(value){
1.9516 + this.setAttribute('declare',value);
1.9517 + },
1.9518 + get height(){
1.9519 + return this.getAttribute('height');
1.9520 + },
1.9521 + set height(value){
1.9522 + this.setAttribute('height',value);
1.9523 + },
1.9524 + get standby(){
1.9525 + return this.getAttribute('standby');
1.9526 + },
1.9527 + set standby(value){
1.9528 + this.setAttribute('standby',value);
1.9529 + },
1.9530 + /*get tabIndex(){
1.9531 + return this.getAttribute('tabindex');
1.9532 + },
1.9533 + set tabIndex(value){
1.9534 + this.setAttribute('tabindex',value);
1.9535 + },*/
1.9536 + get type(){
1.9537 + return this.getAttribute('type');
1.9538 + },
1.9539 + set type(value){
1.9540 + this.setAttribute('type',value);
1.9541 + },
1.9542 + get useMap(){
1.9543 + return this.getAttribute('usemap');
1.9544 + },
1.9545 + set useMap(value){
1.9546 + this.setAttribute('usemap',value);
1.9547 + },
1.9548 + get width(){
1.9549 + return this.getAttribute('width');
1.9550 + },
1.9551 + set width(value){
1.9552 + this.setAttribute('width',value);
1.9553 + },
1.9554 + get contentDocument(){
1.9555 + return this.ownerDocument;
1.9556 + },
1.9557 + toString: function() {
1.9558 + return '[object HTMLObjectElement]';
1.9559 + }
1.9560 +});
1.9561 +
1.9562 +// Named Element Support
1.9563 +HTMLElement.registerSetAttribute('OBJECT', 'name',
1.9564 + __updateFormForNamedElement__);
1.9565 +
1.9566 +/*
1.9567 + * HTMLOListElement
1.9568 + * HTML5: 4.5.6 The ol Element
1.9569 + * http://dev.w3.org/html5/spec/Overview.html#the-ol-element
1.9570 + */
1.9571 +HTMLOListElement = function(ownerDocument) {
1.9572 + HTMLElement.apply(this, arguments);
1.9573 +};
1.9574 +
1.9575 +HTMLOListElement.prototype = new HTMLElement();
1.9576 +__extend__(HTMLOListElement.prototype, {
1.9577 +
1.9578 + // TODO: attribute boolean reversed;
1.9579 + // TODO: attribute long start;
1.9580 +
1.9581 + toString: function() {
1.9582 + return '[object HTMLOListElement]';
1.9583 + }
1.9584 +});
1.9585 +
1.9586 +
1.9587 +/**
1.9588 + * HTMLOptGroupElement - DOM Level 2
1.9589 + * HTML 5: 4.10.9 The optgroup element
1.9590 + * http://dev.w3.org/html5/spec/Overview.html#the-optgroup-element
1.9591 + */
1.9592 +HTMLOptGroupElement = function(ownerDocument) {
1.9593 + HTMLElement.apply(this, arguments);
1.9594 +};
1.9595 +HTMLOptGroupElement.prototype = new HTMLElement();
1.9596 +__extend__(HTMLOptGroupElement.prototype, {
1.9597 + get disabled(){
1.9598 + return this.getAttribute('disabled');
1.9599 + },
1.9600 + set disabled(value){
1.9601 + this.setAttribute('disabled',value);
1.9602 + },
1.9603 + get label(){
1.9604 + return this.getAttribute('label');
1.9605 + },
1.9606 + set label(value){
1.9607 + this.setAttribute('label',value);
1.9608 + },
1.9609 + appendChild: function(node){
1.9610 + var i,
1.9611 + length,
1.9612 + selected = false;
1.9613 + //make sure at least one is selected by default
1.9614 + if(node.nodeType === Node.ELEMENT_NODE && node.tagName === 'OPTION'){
1.9615 + length = this.childNodes.length;
1.9616 + for(i=0;i<length;i++){
1.9617 + if(this.childNodes[i].nodeType === Node.ELEMENT_NODE &&
1.9618 + this.childNodes[i].tagName === 'OPTION'){
1.9619 + //check if it is selected
1.9620 + if(this.selected){
1.9621 + selected = true;
1.9622 + break;
1.9623 + }
1.9624 + }
1.9625 + }
1.9626 + if(!selected){
1.9627 + node.selected = true;
1.9628 + this.value = node.value?node.value:'';
1.9629 + }
1.9630 + }
1.9631 + return HTMLElement.prototype.appendChild.apply(this, [node]);
1.9632 + },
1.9633 + toString: function() {
1.9634 + return '[object HTMLOptGroupElement]';
1.9635 + }
1.9636 +});
1.9637 +
1.9638 +/**
1.9639 + * HTMLOptionElement, Option
1.9640 + * HTML5: 4.10.10 The option element
1.9641 + * http://dev.w3.org/html5/spec/Overview.html#the-option-element
1.9642 + */
1.9643 +HTMLOptionElement = function(ownerDocument) {
1.9644 + HTMLInputCommon.apply(this, arguments);
1.9645 + this._selected = null;
1.9646 +};
1.9647 +HTMLOptionElement.prototype = new HTMLInputCommon();
1.9648 +__extend__(HTMLOptionElement.prototype, {
1.9649 +
1.9650 + /**
1.9651 + * defaultSelected actually reflects the presence of the
1.9652 + * 'selected' attribute.
1.9653 + */
1.9654 + get defaultSelected() {
1.9655 + return this.hasAttribute('selected');
1.9656 + },
1.9657 + set defaultSelected(value) {
1.9658 + if (value) {
1.9659 + this.setAttribute('selected','');
1.9660 + } else {
1.9661 + if (this.hasAttribute('selected')) {
1.9662 + this.removeAttribute('selected');
1.9663 + }
1.9664 + }
1.9665 + },
1.9666 +
1.9667 + /*
1.9668 + * HTML5: The form IDL attribute's behavior depends on whether the
1.9669 + * option element is in a select element or not. If the option has
1.9670 + * a select element as its parent, or has a colgroup element as
1.9671 + * its parent and that colgroup element has a select element as
1.9672 + * its parent, then the form IDL attribute must return the same
1.9673 + * value as the form IDL attribute on that select
1.9674 + * element. Otherwise, it must return null.
1.9675 + */
1.9676 + _selectparent: function() {
1.9677 + var parent = this.parentNode;
1.9678 + if (!parent) {
1.9679 + return null;
1.9680 + }
1.9681 +
1.9682 + if (parent.tagName === 'SELECT') {
1.9683 + return parent;
1.9684 + }
1.9685 + if (parent.tagName === 'COLGROUP') {
1.9686 + parent = parent.parentNode;
1.9687 + if (parent && parent.tagName === 'SELECT') {
1.9688 + return parent;
1.9689 + }
1.9690 + }
1.9691 + },
1.9692 + _updateoptions: function() {
1.9693 + var parent = this._selectparent();
1.9694 + if (parent) {
1.9695 + // has side effects and updates owner select's options
1.9696 + parent.options;
1.9697 + }
1.9698 + },
1.9699 + get form() {
1.9700 + var parent = this._selectparent();
1.9701 + return parent ? parent.form : null;
1.9702 + },
1.9703 + get index() {
1.9704 + var options, i;
1.9705 +
1.9706 + if (! this.parentNode) {
1.9707 + return -1;
1.9708 + }
1.9709 + options = this.parentNode.options;
1.9710 + for (i=0; i < options.length; ++i) {
1.9711 + if (this === options[i]) {
1.9712 + return i;
1.9713 + }
1.9714 + }
1.9715 + return 0;
1.9716 + },
1.9717 + get label() {
1.9718 + return this.getAttribute('label');
1.9719 + },
1.9720 + set label(value) {
1.9721 + this.setAttribute('label', value);
1.9722 + },
1.9723 +
1.9724 + /*
1.9725 + * This is not in the spec, but safari and firefox both
1.9726 + * use this
1.9727 + */
1.9728 + get name() {
1.9729 + return this.getAttribute('name');
1.9730 + },
1.9731 + set name(value) {
1.9732 + this.setAttribute('name', value);
1.9733 + },
1.9734 +
1.9735 + /**
1.9736 + *
1.9737 + */
1.9738 + get selected() {
1.9739 + // if disabled, return false, no matter what
1.9740 + if (this.disabled) {
1.9741 + return false;
1.9742 + }
1.9743 + if (this._selected === null) {
1.9744 + return this.defaultSelected;
1.9745 + }
1.9746 +
1.9747 + return this._selected;
1.9748 + },
1.9749 + set selected(value) {
1.9750 + this._selected = (value) ? true : false;
1.9751 + },
1.9752 +
1.9753 + get text() {
1.9754 + var val = this.nodeValue;
1.9755 + return (val === null || this.value === undefined) ?
1.9756 + this.innerHTML :
1.9757 + val;
1.9758 + },
1.9759 + get value() {
1.9760 + var val = this.getAttribute('value');
1.9761 + return (val === null || val === undefined) ?
1.9762 + this.textContent :
1.9763 + val;
1.9764 + },
1.9765 + set value(value) {
1.9766 + this.setAttribute('value', value);
1.9767 + },
1.9768 + toString: function() {
1.9769 + return '[object HTMLOptionElement]';
1.9770 + }
1.9771 +});
1.9772 +
1.9773 +Option = function(text, value, defaultSelected, selected) {
1.9774 +
1.9775 + // Not sure if this is correct:
1.9776 + //
1.9777 + // The element's document must be the active document of the
1.9778 + // browsing context of the Window object on which the interface
1.9779 + // object of the invoked constructor is found.
1.9780 + HTMLOptionElement.apply(this, [document]);
1.9781 + this.nodeName = 'OPTION';
1.9782 +
1.9783 + if (arguments.length >= 1) {
1.9784 + this.appendChild(document.createTextNode('' + text));
1.9785 + }
1.9786 + if (arguments.length >= 2) {
1.9787 + this.value = value;
1.9788 + }
1.9789 + if (arguments.length >= 3) {
1.9790 + if (defaultSelected) {
1.9791 + this.defaultSelected = '';
1.9792 + }
1.9793 + }
1.9794 + if (arguments.length >= 4) {
1.9795 + this.selected = (selected) ? true : false;
1.9796 + }
1.9797 +};
1.9798 +
1.9799 +Option.prototype = new HTMLOptionElement();
1.9800 +
1.9801 +// Named Element Support
1.9802 +
1.9803 +function updater(node, value) {
1.9804 + node._updateoptions();
1.9805 +}
1.9806 +HTMLElement.registerSetAttribute('OPTION', 'name', updater);
1.9807 +HTMLElement.registerSetAttribute('OPTION', 'id', updater);
1.9808 +
1.9809 +/*
1.9810 +* HTMLParagraphElement - DOM Level 2
1.9811 +*/
1.9812 +HTMLParagraphElement = function(ownerDocument) {
1.9813 + HTMLElement.apply(this, arguments);
1.9814 +};
1.9815 +HTMLParagraphElement.prototype = new HTMLElement();
1.9816 +__extend__(HTMLParagraphElement.prototype, {
1.9817 + toString: function(){
1.9818 + return '[object HTMLParagraphElement]';
1.9819 + }
1.9820 +});
1.9821 +
1.9822 +
1.9823 +/**
1.9824 + * HTMLParamElement
1.9825 + *
1.9826 + * HTML5: 4.8.6 The param element
1.9827 + * http://dev.w3.org/html5/spec/Overview.html#the-param-element
1.9828 + */
1.9829 +HTMLParamElement = function(ownerDocument) {
1.9830 + HTMLElement.apply(this, arguments);
1.9831 +};
1.9832 +HTMLParamElement.prototype = new HTMLElement();
1.9833 +__extend__(HTMLParamElement.prototype, {
1.9834 + get name() {
1.9835 + return this.getAttribute('name') || '';
1.9836 + },
1.9837 + set name(value) {
1.9838 + this.setAttribute('name', value);
1.9839 + },
1.9840 + get type(){
1.9841 + return this.getAttribute('type');
1.9842 + },
1.9843 + set type(value){
1.9844 + this.setAttribute('type',value);
1.9845 + },
1.9846 + get value(){
1.9847 + return this.getAttribute('value');
1.9848 + },
1.9849 + set value(value){
1.9850 + this.setAttribute('value',value);
1.9851 + },
1.9852 + get valueType(){
1.9853 + return this.getAttribute('valuetype');
1.9854 + },
1.9855 + set valueType(value){
1.9856 + this.setAttribute('valuetype',value);
1.9857 + },
1.9858 + toString: function() {
1.9859 + return '[object HTMLParamElement]';
1.9860 + }
1.9861 +});
1.9862 +
1.9863 +
1.9864 +/**
1.9865 + * HTMLScriptElement - DOM Level 2
1.9866 + *
1.9867 + * HTML5: 4.3.1 The script element
1.9868 + * http://dev.w3.org/html5/spec/Overview.html#script
1.9869 + */
1.9870 +HTMLScriptElement = function(ownerDocument) {
1.9871 + HTMLElement.apply(this, arguments);
1.9872 +};
1.9873 +HTMLScriptElement.prototype = new HTMLElement();
1.9874 +__extend__(HTMLScriptElement.prototype, {
1.9875 +
1.9876 + /**
1.9877 + * HTML5 spec @ http://dev.w3.org/html5/spec/Overview.html#script
1.9878 + *
1.9879 + * "The IDL attribute text must return a concatenation of the
1.9880 + * contents of all the text nodes that are direct children of the
1.9881 + * script element (ignoring any other nodes such as comments or
1.9882 + * elements), in tree order. On setting, it must act the same way
1.9883 + * as the textContent IDL attribute."
1.9884 + *
1.9885 + * AND... "The term text node refers to any Text node,
1.9886 + * including CDATASection nodes; specifically, any Node with node
1.9887 + * type TEXT_NODE (3) or CDATA_SECTION_NODE (4)"
1.9888 + */
1.9889 + get text() {
1.9890 + var kids = this.childNodes;
1.9891 + var kid;
1.9892 + var s = '';
1.9893 + var imax = kids.length;
1.9894 + for (var i = 0; i < imax; ++i) {
1.9895 + kid = kids[i];
1.9896 + if (kid.nodeType === Node.TEXT_NODE ||
1.9897 + kid.nodeType === Node.CDATA_SECTION_NODE) {
1.9898 + s += kid.nodeValue;
1.9899 + }
1.9900 + }
1.9901 + return s;
1.9902 + },
1.9903 +
1.9904 + /**
1.9905 + * HTML5 spec "Can be set, to replace the element's children with
1.9906 + * the given value."
1.9907 + */
1.9908 + set text(value) {
1.9909 + // this deletes all children, and make a new single text node
1.9910 + // with value
1.9911 + this.textContent = value;
1.9912 +
1.9913 + /* Currently we always execute, but this isn't quite right if
1.9914 + * the node has *not* been inserted into the document, then it
1.9915 + * should *not* fire. The more detailed answer from the spec:
1.9916 + *
1.9917 + * When a script element that is neither marked as having
1.9918 + * "already started" nor marked as being "parser-inserted"
1.9919 + * experiences one of the events listed in the following list,
1.9920 + * the user agent must synchronously run the script element:
1.9921 + *
1.9922 + * * The script element gets inserted into a document.
1.9923 + * * The script element is in a Document and its child nodes
1.9924 + * are changed.
1.9925 + * * The script element is in a Document and has a src
1.9926 + * attribute set where previously the element had no such
1.9927 + * attribute.
1.9928 + *
1.9929 + * And no doubt there are other cases as well.
1.9930 + */
1.9931 + Envjs.loadInlineScript(this);
1.9932 + },
1.9933 +
1.9934 + get htmlFor(){
1.9935 + return this.getAttribute('for');
1.9936 + },
1.9937 + set htmlFor(value){
1.9938 + this.setAttribute('for',value);
1.9939 + },
1.9940 + get event(){
1.9941 + return this.getAttribute('event');
1.9942 + },
1.9943 + set event(value){
1.9944 + this.setAttribute('event',value);
1.9945 + },
1.9946 + get charset(){
1.9947 + return this.getAttribute('charset');
1.9948 + },
1.9949 + set charset(value){
1.9950 + this.setAttribute('charset',value);
1.9951 + },
1.9952 + get defer(){
1.9953 + return this.getAttribute('defer');
1.9954 + },
1.9955 + set defer(value){
1.9956 + this.setAttribute('defer',value);
1.9957 + },
1.9958 + get src(){
1.9959 + return this.getAttribute('src')||'';
1.9960 + },
1.9961 + set src(value){
1.9962 + this.setAttribute('src',value);
1.9963 + },
1.9964 + get type(){
1.9965 + return this.getAttribute('type')||'';
1.9966 + },
1.9967 + set type(value){
1.9968 + this.setAttribute('type',value);
1.9969 + },
1.9970 + onload: HTMLEvents.prototype.onload,
1.9971 + onerror: HTMLEvents.prototype.onerror,
1.9972 + toString: function() {
1.9973 + return '[object HTMLScriptElement]';
1.9974 + }
1.9975 +});
1.9976 +
1.9977 +
1.9978 +/**
1.9979 + * HTMLSelectElement
1.9980 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-select-element
1.9981 + */
1.9982 +HTMLSelectElement = function(ownerDocument) {
1.9983 + HTMLTypeValueInputs.apply(this, arguments);
1.9984 + this._oldIndex = -1;
1.9985 +};
1.9986 +
1.9987 +HTMLSelectElement.prototype = new HTMLTypeValueInputs();
1.9988 +__extend__(HTMLSelectElement.prototype, inputElements_dataProperties);
1.9989 +__extend__(HTMLButtonElement.prototype, inputElements_size);
1.9990 +__extend__(HTMLSelectElement.prototype, inputElements_onchange);
1.9991 +__extend__(HTMLSelectElement.prototype, inputElements_focusEvents);
1.9992 +__extend__(HTMLSelectElement.prototype, {
1.9993 +
1.9994 + get value() {
1.9995 + var index = this.selectedIndex;
1.9996 + return (index === -1) ? '' : this.options[index].value;
1.9997 + },
1.9998 + set value(newValue) {
1.9999 + var options = this.options;
1.10000 + var imax = options.length;
1.10001 + for (var i=0; i< imax; ++i) {
1.10002 + if (options[i].value == newValue) {
1.10003 + this.setAttribute('value', newValue);
1.10004 + this.selectedIndex = i;
1.10005 + return;
1.10006 + }
1.10007 + }
1.10008 + },
1.10009 + get multiple() {
1.10010 + return this.hasAttribute('multiple');
1.10011 + },
1.10012 + set multiple(value) {
1.10013 + if (value) {
1.10014 + this.setAttribute('multiple', '');
1.10015 + } else {
1.10016 + if (this.hasAttribute('multiple')) {
1.10017 + this.removeAttribute('multiple');
1.10018 + }
1.10019 + }
1.10020 + },
1.10021 + // Returns HTMLOptionsCollection
1.10022 + get options() {
1.10023 + var nodes = this.getElementsByTagName('option');
1.10024 + var alist = [];
1.10025 + var i, tmp;
1.10026 + for (i = 0; i < nodes.length; ++i) {
1.10027 + alist.push(nodes[i]);
1.10028 + this[i] = nodes[i];
1.10029 + tmp = nodes[i].name;
1.10030 + if (tmp) {
1.10031 + this[tmp] = nodes[i];
1.10032 + }
1.10033 + tmp = nodes[i].id;
1.10034 + if (tmp) {
1.10035 + this[tmp] = nodes[i];
1.10036 + }
1.10037 + }
1.10038 + return new HTMLCollection(alist);
1.10039 + },
1.10040 + get length() {
1.10041 + return this.options.length;
1.10042 + },
1.10043 + item: function(idx) {
1.10044 + return this.options[idx];
1.10045 + },
1.10046 + namedItem: function(aname) {
1.10047 + return this.options[aname];
1.10048 + },
1.10049 +
1.10050 + get selectedIndex() {
1.10051 + var options = this.options;
1.10052 + var imax = options.length;
1.10053 + for (var i=0; i < imax; ++i) {
1.10054 + if (options[i].selected) {
1.10055 + //console.log('select get selectedIndex %s', i);
1.10056 + return i;
1.10057 + }
1.10058 + }
1.10059 + //console.log('select get selectedIndex %s', -1);
1.10060 + return -1;
1.10061 + },
1.10062 +
1.10063 + set selectedIndex(value) {
1.10064 + var options = this.options;
1.10065 + var num = Number(value);
1.10066 + var imax = options.length;
1.10067 + for (var i = 0; i < imax; ++i) {
1.10068 + options[i].selected = (i === num);
1.10069 + }
1.10070 + },
1.10071 + get type() {
1.10072 + return this.multiple ? 'select-multiple' : 'select-one';
1.10073 + },
1.10074 +
1.10075 + add: function(element, before) {
1.10076 + this.appendChild(element);
1.10077 + //__add__(this);
1.10078 + },
1.10079 + remove: function() {
1.10080 + __remove__(this);
1.10081 + },
1.10082 + toString: function() {
1.10083 + return '[object HTMLSelectElement]';
1.10084 + }
1.10085 +});
1.10086 +
1.10087 +// Named Element Support
1.10088 +HTMLElement.registerSetAttribute('SELECT', 'name',
1.10089 + __updateFormForNamedElement__);
1.10090 +/**
1.10091 + * HTML 5: 4.6.22 The span element
1.10092 + * http://dev.w3.org/html5/spec/Overview.html#the-span-element
1.10093 + *
1.10094 + */
1.10095 +HTMLSpanElement = function(ownerDocument) {
1.10096 + HTMLElement.apply(this, arguments);
1.10097 +};
1.10098 +HTMLSpanElement.prototype = new HTMLElement();
1.10099 +__extend__(HTMLSpanElement.prototype, {
1.10100 + toString: function(){
1.10101 + return '[object HTMLSpanElement]';
1.10102 + }
1.10103 +});
1.10104 +
1.10105 +
1.10106 +/**
1.10107 + * HTMLStyleElement - DOM Level 2
1.10108 + * HTML5 4.2.6 The style element
1.10109 + * http://dev.w3.org/html5/spec/Overview.html#the-style-element
1.10110 + */
1.10111 +HTMLStyleElement = function(ownerDocument) {
1.10112 + HTMLElement.apply(this, arguments);
1.10113 +};
1.10114 +HTMLStyleElement.prototype = new HTMLElement();
1.10115 +__extend__(HTMLStyleElement.prototype, {
1.10116 + get disabled(){
1.10117 + return this.getAttribute('disabled');
1.10118 + },
1.10119 + set disabled(value){
1.10120 + this.setAttribute('disabled',value);
1.10121 + },
1.10122 + get media(){
1.10123 + return this.getAttribute('media');
1.10124 + },
1.10125 + set media(value){
1.10126 + this.setAttribute('media',value);
1.10127 + },
1.10128 + get type(){
1.10129 + return this.getAttribute('type');
1.10130 + },
1.10131 + set type(value){
1.10132 + this.setAttribute('type',value);
1.10133 + },
1.10134 + toString: function() {
1.10135 + return '[object HTMLStyleElement]';
1.10136 + }
1.10137 +});
1.10138 +
1.10139 +/**
1.10140 + * HTMLTableElement - DOM Level 2
1.10141 + * Implementation Provided by Steven Wood
1.10142 + *
1.10143 + * HTML5: 4.9.1 The table element
1.10144 + * http://dev.w3.org/html5/spec/Overview.html#the-table-element
1.10145 + */
1.10146 +HTMLTableElement = function(ownerDocument) {
1.10147 + HTMLElement.apply(this, arguments);
1.10148 +};
1.10149 +HTMLTableElement.prototype = new HTMLElement();
1.10150 +__extend__(HTMLTableElement.prototype, {
1.10151 +
1.10152 + get tFoot() {
1.10153 + //tFoot returns the table footer.
1.10154 + return this.getElementsByTagName("tfoot")[0];
1.10155 + },
1.10156 +
1.10157 + createTFoot : function () {
1.10158 + var tFoot = this.tFoot;
1.10159 +
1.10160 + if (!tFoot) {
1.10161 + tFoot = document.createElement("tfoot");
1.10162 + this.appendChild(tFoot);
1.10163 + }
1.10164 +
1.10165 + return tFoot;
1.10166 + },
1.10167 +
1.10168 + deleteTFoot : function () {
1.10169 + var foot = this.tFoot;
1.10170 + if (foot) {
1.10171 + foot.parentNode.removeChild(foot);
1.10172 + }
1.10173 + },
1.10174 +
1.10175 + get tHead() {
1.10176 + //tHead returns the table head.
1.10177 + return this.getElementsByTagName("thead")[0];
1.10178 + },
1.10179 +
1.10180 + createTHead : function () {
1.10181 + var tHead = this.tHead;
1.10182 +
1.10183 + if (!tHead) {
1.10184 + tHead = document.createElement("thead");
1.10185 + this.insertBefore(tHead, this.firstChild);
1.10186 + }
1.10187 +
1.10188 + return tHead;
1.10189 + },
1.10190 +
1.10191 + deleteTHead : function () {
1.10192 + var head = this.tHead;
1.10193 + if (head) {
1.10194 + head.parentNode.removeChild(head);
1.10195 + }
1.10196 + },
1.10197 +
1.10198 + /*appendChild : function (child) {
1.10199 +
1.10200 + var tagName;
1.10201 + if(child&&child.nodeType==Node.ELEMENT_NODE){
1.10202 + tagName = child.tagName.toLowerCase();
1.10203 + if (tagName === "tr") {
1.10204 + // need an implcit <tbody> to contain this...
1.10205 + if (!this.currentBody) {
1.10206 + this.currentBody = document.createElement("tbody");
1.10207 +
1.10208 + Node.prototype.appendChild.apply(this, [this.currentBody]);
1.10209 + }
1.10210 +
1.10211 + return this.currentBody.appendChild(child);
1.10212 +
1.10213 + } else if (tagName === "tbody" || tagName === "tfoot" && this.currentBody) {
1.10214 + this.currentBody = child;
1.10215 + return Node.prototype.appendChild.apply(this, arguments);
1.10216 +
1.10217 + } else {
1.10218 + return Node.prototype.appendChild.apply(this, arguments);
1.10219 + }
1.10220 + }else{
1.10221 + //tables can still have text node from white space
1.10222 + return Node.prototype.appendChild.apply(this, arguments);
1.10223 + }
1.10224 + },*/
1.10225 +
1.10226 + get tBodies() {
1.10227 + return new HTMLCollection(this.getElementsByTagName("tbody"));
1.10228 +
1.10229 + },
1.10230 +
1.10231 + get rows() {
1.10232 + return new HTMLCollection(this.getElementsByTagName("tr"));
1.10233 + },
1.10234 +
1.10235 + insertRow : function (idx) {
1.10236 + if (idx === undefined) {
1.10237 + throw new Error("Index omitted in call to HTMLTableElement.insertRow ");
1.10238 + }
1.10239 +
1.10240 + var rows = this.rows,
1.10241 + numRows = rows.length,
1.10242 + node,
1.10243 + inserted,
1.10244 + lastRow;
1.10245 +
1.10246 + if (idx > numRows) {
1.10247 + throw new Error("Index > rows.length in call to HTMLTableElement.insertRow");
1.10248 + }
1.10249 +
1.10250 + inserted = document.createElement("tr");
1.10251 + // If index is -1 or equal to the number of rows,
1.10252 + // the row is appended as the last row. If index is omitted
1.10253 + // or greater than the number of rows, an error will result
1.10254 + if (idx === -1 || idx === numRows) {
1.10255 + this.appendChild(inserted);
1.10256 + } else {
1.10257 + rows[idx].parentNode.insertBefore(inserted, rows[idx]);
1.10258 + }
1.10259 +
1.10260 + return inserted;
1.10261 + },
1.10262 +
1.10263 + deleteRow : function (idx) {
1.10264 + var elem = this.rows[idx];
1.10265 + elem.parentNode.removeChild(elem);
1.10266 + },
1.10267 +
1.10268 + get summary() {
1.10269 + return this.getAttribute("summary");
1.10270 + },
1.10271 +
1.10272 + set summary(summary) {
1.10273 + this.setAttribute("summary", summary);
1.10274 + },
1.10275 +
1.10276 + get align() {
1.10277 + return this.getAttribute("align");
1.10278 + },
1.10279 +
1.10280 + set align(align) {
1.10281 + this.setAttribute("align", align);
1.10282 + },
1.10283 +
1.10284 + get bgColor() {
1.10285 + return this.getAttribute("bgColor");
1.10286 + },
1.10287 +
1.10288 + set bgColor(bgColor) {
1.10289 + return this.setAttribute("bgColor", bgColor);
1.10290 + },
1.10291 +
1.10292 + get cellPadding() {
1.10293 + return this.getAttribute("cellPadding");
1.10294 + },
1.10295 +
1.10296 + set cellPadding(cellPadding) {
1.10297 + return this.setAttribute("cellPadding", cellPadding);
1.10298 + },
1.10299 +
1.10300 + get cellSpacing() {
1.10301 + return this.getAttribute("cellSpacing");
1.10302 + },
1.10303 +
1.10304 + set cellSpacing(cellSpacing) {
1.10305 + this.setAttribute("cellSpacing", cellSpacing);
1.10306 + },
1.10307 +
1.10308 + get frame() {
1.10309 + return this.getAttribute("frame");
1.10310 + },
1.10311 +
1.10312 + set frame(frame) {
1.10313 + this.setAttribute("frame", frame);
1.10314 + },
1.10315 +
1.10316 + get rules() {
1.10317 + return this.getAttribute("rules");
1.10318 + },
1.10319 +
1.10320 + set rules(rules) {
1.10321 + this.setAttribute("rules", rules);
1.10322 + },
1.10323 +
1.10324 + get width() {
1.10325 + return this.getAttribute("width");
1.10326 + },
1.10327 +
1.10328 + set width(width) {
1.10329 + this.setAttribute("width", width);
1.10330 + },
1.10331 + toString: function() {
1.10332 + return '[object HTMLTableElement]';
1.10333 + }
1.10334 +});
1.10335 +
1.10336 +/*
1.10337 + * HTMLxElement - DOM Level 2
1.10338 + * - Contributed by Steven Wood
1.10339 + *
1.10340 + * HTML5: 4.9.5 The tbody element
1.10341 + * http://dev.w3.org/html5/spec/Overview.html#the-tbody-element
1.10342 + * http://dev.w3.org/html5/spec/Overview.html#htmltablesectionelement
1.10343 + */
1.10344 +HTMLTableSectionElement = function(ownerDocument) {
1.10345 + HTMLElement.apply(this, arguments);
1.10346 +};
1.10347 +HTMLTableSectionElement.prototype = new HTMLElement();
1.10348 +__extend__(HTMLTableSectionElement.prototype, {
1.10349 +
1.10350 + /*appendChild : function (child) {
1.10351 +
1.10352 + // disallow nesting of these elements.
1.10353 + if (child.tagName.match(/TBODY|TFOOT|THEAD/)) {
1.10354 + return this.parentNode.appendChild(child);
1.10355 + } else {
1.10356 + return Node.prototype.appendChild.apply(this, arguments);
1.10357 + }
1.10358 +
1.10359 + },*/
1.10360 +
1.10361 + get align() {
1.10362 + return this.getAttribute("align");
1.10363 + },
1.10364 +
1.10365 + get ch() {
1.10366 + return this.getAttribute("ch");
1.10367 + },
1.10368 +
1.10369 + set ch(ch) {
1.10370 + this.setAttribute("ch", ch);
1.10371 + },
1.10372 +
1.10373 + // ch gets or sets the alignment character for cells in a column.
1.10374 + set chOff(chOff) {
1.10375 + this.setAttribute("chOff", chOff);
1.10376 + },
1.10377 +
1.10378 + get chOff() {
1.10379 + return this.getAttribute("chOff");
1.10380 + },
1.10381 +
1.10382 + get vAlign () {
1.10383 + return this.getAttribute("vAlign");
1.10384 + },
1.10385 +
1.10386 + get rows() {
1.10387 + return new HTMLCollection(this.getElementsByTagName("tr"));
1.10388 + },
1.10389 +
1.10390 + insertRow : function (idx) {
1.10391 + if (idx === undefined) {
1.10392 + throw new Error("Index omitted in call to HTMLTableSectionElement.insertRow ");
1.10393 + }
1.10394 +
1.10395 + var numRows = this.rows.length,
1.10396 + node = null;
1.10397 +
1.10398 + if (idx > numRows) {
1.10399 + throw new Error("Index > rows.length in call to HTMLTableSectionElement.insertRow");
1.10400 + }
1.10401 +
1.10402 + var row = document.createElement("tr");
1.10403 + // If index is -1 or equal to the number of rows,
1.10404 + // the row is appended as the last row. If index is omitted
1.10405 + // or greater than the number of rows, an error will result
1.10406 + if (idx === -1 || idx === numRows) {
1.10407 + this.appendChild(row);
1.10408 + } else {
1.10409 + node = this.firstChild;
1.10410 +
1.10411 + for (var i=0; i<idx; i++) {
1.10412 + node = node.nextSibling;
1.10413 + }
1.10414 + }
1.10415 +
1.10416 + this.insertBefore(row, node);
1.10417 +
1.10418 + return row;
1.10419 + },
1.10420 +
1.10421 + deleteRow : function (idx) {
1.10422 + var elem = this.rows[idx];
1.10423 + this.removeChild(elem);
1.10424 + },
1.10425 +
1.10426 + toString: function() {
1.10427 + return '[object HTMLTableSectionElement]';
1.10428 + }
1.10429 +});
1.10430 +
1.10431 +/**
1.10432 + * HTMLTableCellElement
1.10433 + * base interface for TD and TH
1.10434 + *
1.10435 + * HTML5: 4.9.11 Attributes common to td and th elements
1.10436 + * http://dev.w3.org/html5/spec/Overview.html#htmltablecellelement
1.10437 + */
1.10438 +HTMLTableCellElement = function(ownerDocument) {
1.10439 + HTMLElement.apply(this, arguments);
1.10440 +};
1.10441 +HTMLTableCellElement.prototype = new HTMLElement();
1.10442 +__extend__(HTMLTableCellElement.prototype, {
1.10443 +
1.10444 +
1.10445 + // TOOD: attribute unsigned long colSpan;
1.10446 + // TODO: attribute unsigned long rowSpan;
1.10447 + // TODO: attribute DOMString headers;
1.10448 + // TODO: readonly attribute long cellIndex;
1.10449 +
1.10450 + // Not really necessary but might be helpful in debugging
1.10451 + toString: function() {
1.10452 + return '[object HTMLTableCellElement]';
1.10453 + }
1.10454 +
1.10455 +});
1.10456 +
1.10457 +/**
1.10458 + * HTMLTableDataCellElement
1.10459 + * HTML5: 4.9.9 The td Element
1.10460 + * http://dev.w3.org/html5/spec/Overview.html#the-td-element
1.10461 + */
1.10462 +HTMLTableDataCellElement = function(ownerDocument) {
1.10463 + HTMLElement.apply(this, arguments);
1.10464 +};
1.10465 +HTMLTableDataCellElement.prototype = new HTMLTableCellElement();
1.10466 +__extend__(HTMLTableDataCellElement.prototype, {
1.10467 +
1.10468 + // adds no new properties or methods
1.10469 +
1.10470 + toString: function() {
1.10471 + return '[object HTMLTableDataCellElement]';
1.10472 + }
1.10473 +});
1.10474 +
1.10475 +/**
1.10476 + * HTMLTableHeaderCellElement
1.10477 + * HTML5: 4.9.10 The th Element
1.10478 + * http://dev.w3.org/html5/spec/Overview.html#the-th-element
1.10479 + */
1.10480 +HTMLTableHeaderCellElement = function(ownerDocument) {
1.10481 + HTMLElement.apply(this, arguments);
1.10482 +};
1.10483 +HTMLTableHeaderCellElement.prototype = new HTMLTableCellElement();
1.10484 +__extend__(HTMLTableHeaderCellElement.prototype, {
1.10485 +
1.10486 + // TODO: attribute DOMString scope
1.10487 +
1.10488 + toString: function() {
1.10489 + return '[object HTMLTableHeaderCellElement]';
1.10490 + }
1.10491 +});
1.10492 +
1.10493 +
1.10494 +/**
1.10495 + * HTMLTextAreaElement - DOM Level 2
1.10496 + * HTML5: 4.10.11 The textarea element
1.10497 + * http://dev.w3.org/html5/spec/Overview.html#the-textarea-element
1.10498 + */
1.10499 +HTMLTextAreaElement = function(ownerDocument) {
1.10500 + HTMLInputAreaCommon.apply(this, arguments);
1.10501 + this._rawvalue = null;
1.10502 +};
1.10503 +HTMLTextAreaElement.prototype = new HTMLInputAreaCommon();
1.10504 +__extend__(HTMLTextAreaElement.prototype, {
1.10505 + get cols(){
1.10506 + return Number(this.getAttribute('cols')||'-1');
1.10507 + },
1.10508 + set cols(value){
1.10509 + this.setAttribute('cols', value);
1.10510 + },
1.10511 + get rows(){
1.10512 + return Number(this.getAttribute('rows')||'-1');
1.10513 + },
1.10514 + set rows(value){
1.10515 + this.setAttribute('rows', value);
1.10516 + },
1.10517 +
1.10518 + /*
1.10519 + * read-only
1.10520 + */
1.10521 + get type() {
1.10522 + return this.getAttribute('type') || 'textarea';
1.10523 + },
1.10524 +
1.10525 + /**
1.10526 + * This modifies the text node under the widget
1.10527 + */
1.10528 + get defaultValue() {
1.10529 + return this.textContent;
1.10530 + },
1.10531 + set defaultValue(value) {
1.10532 + this.textContent = value;
1.10533 + },
1.10534 +
1.10535 + /**
1.10536 + * http://dev.w3.org/html5/spec/Overview.html#concept-textarea-raw-value
1.10537 + */
1.10538 + get value() {
1.10539 + return (this._rawvalue === null) ? this.defaultValue : this._rawvalue;
1.10540 + },
1.10541 + set value(value) {
1.10542 + this._rawvalue = value;
1.10543 + },
1.10544 + toString: function() {
1.10545 + return '[object HTMLTextAreaElement]';
1.10546 + }
1.10547 +});
1.10548 +
1.10549 +// Named Element Support
1.10550 +HTMLElement.registerSetAttribute('TEXTAREA', 'name',
1.10551 + __updateFormForNamedElement__);
1.10552 +
1.10553 +/**
1.10554 + * HTMLTitleElement - DOM Level 2
1.10555 + *
1.10556 + * HTML5: 4.2.2 The title element
1.10557 + * http://dev.w3.org/html5/spec/Overview.html#the-title-element-0
1.10558 + */
1.10559 +HTMLTitleElement = function(ownerDocument) {
1.10560 + HTMLElement.apply(this, arguments);
1.10561 +};
1.10562 +HTMLTitleElement.prototype = new HTMLElement();
1.10563 +__extend__(HTMLTitleElement.prototype, {
1.10564 + get text() {
1.10565 + return this.innerText;
1.10566 + },
1.10567 +
1.10568 + set text(titleStr) {
1.10569 + this.textContent = titleStr;
1.10570 + },
1.10571 + toString: function() {
1.10572 + return '[object HTMLTitleElement]';
1.10573 + }
1.10574 +});
1.10575 +
1.10576 +
1.10577 +
1.10578 +/**
1.10579 + * HTMLRowElement - DOM Level 2
1.10580 + * Implementation Provided by Steven Wood
1.10581 + *
1.10582 + * HTML5: 4.9.8 The tr element
1.10583 + * http://dev.w3.org/html5/spec/Overview.html#the-tr-element
1.10584 + */
1.10585 +HTMLTableRowElement = function(ownerDocument) {
1.10586 + HTMLElement.apply(this, arguments);
1.10587 +};
1.10588 +HTMLTableRowElement.prototype = new HTMLElement();
1.10589 +__extend__(HTMLTableRowElement.prototype, {
1.10590 +
1.10591 + /*appendChild : function (child) {
1.10592 +
1.10593 + var retVal = Node.prototype.appendChild.apply(this, arguments);
1.10594 + retVal.cellIndex = this.cells.length -1;
1.10595 +
1.10596 + return retVal;
1.10597 + },*/
1.10598 + // align gets or sets the horizontal alignment of data within cells of the row.
1.10599 + get align() {
1.10600 + return this.getAttribute("align");
1.10601 + },
1.10602 +
1.10603 + get bgColor() {
1.10604 + return this.getAttribute("bgcolor");
1.10605 + },
1.10606 +
1.10607 + get cells() {
1.10608 + var nl = this.getElementsByTagName("td");
1.10609 + return new HTMLCollection(nl);
1.10610 + },
1.10611 +
1.10612 + get ch() {
1.10613 + return this.getAttribute("ch");
1.10614 + },
1.10615 +
1.10616 + set ch(ch) {
1.10617 + this.setAttribute("ch", ch);
1.10618 + },
1.10619 +
1.10620 + // ch gets or sets the alignment character for cells in a column.
1.10621 + set chOff(chOff) {
1.10622 + this.setAttribute("chOff", chOff);
1.10623 + },
1.10624 +
1.10625 + get chOff() {
1.10626 + return this.getAttribute("chOff");
1.10627 + },
1.10628 +
1.10629 + /**
1.10630 + * http://dev.w3.org/html5/spec/Overview.html#dom-tr-rowindex
1.10631 + */
1.10632 + get rowIndex() {
1.10633 + var nl = this.parentNode.childNodes;
1.10634 + for (var i=0; i<nl.length; i++) {
1.10635 + if (nl[i] === this) {
1.10636 + return i;
1.10637 + }
1.10638 + }
1.10639 + return -1;
1.10640 + },
1.10641 +
1.10642 + /**
1.10643 + * http://dev.w3.org/html5/spec/Overview.html#dom-tr-sectionrowindex
1.10644 + */
1.10645 + get sectionRowIndex() {
1.10646 + var nl = this.parentNode.getElementsByTagName(this.tagName);
1.10647 + for (var i=0; i<nl.length; i++) {
1.10648 + if (nl[i] === this) {
1.10649 + return i;
1.10650 + }
1.10651 + }
1.10652 + return -1;
1.10653 + },
1.10654 +
1.10655 + get vAlign () {
1.10656 + return this.getAttribute("vAlign");
1.10657 + },
1.10658 +
1.10659 + insertCell : function (idx) {
1.10660 + if (idx === undefined) {
1.10661 + throw new Error("Index omitted in call to HTMLTableRow.insertCell");
1.10662 + }
1.10663 +
1.10664 + var numCells = this.cells.length,
1.10665 + node = null;
1.10666 +
1.10667 + if (idx > numCells) {
1.10668 + throw new Error("Index > rows.length in call to HTMLTableRow.insertCell");
1.10669 + }
1.10670 +
1.10671 + var cell = document.createElement("td");
1.10672 +
1.10673 + if (idx === -1 || idx === numCells) {
1.10674 + this.appendChild(cell);
1.10675 + } else {
1.10676 +
1.10677 +
1.10678 + node = this.firstChild;
1.10679 +
1.10680 + for (var i=0; i<idx; i++) {
1.10681 + node = node.nextSibling;
1.10682 + }
1.10683 + }
1.10684 +
1.10685 + this.insertBefore(cell, node);
1.10686 + cell.cellIndex = idx;
1.10687 +
1.10688 + return cell;
1.10689 + },
1.10690 + deleteCell : function (idx) {
1.10691 + var elem = this.cells[idx];
1.10692 + this.removeChild(elem);
1.10693 + },
1.10694 + toString: function() {
1.10695 + return '[object HTMLTableRowElement]';
1.10696 + }
1.10697 +
1.10698 +});
1.10699 +
1.10700 +/*
1.10701 + * HTMLUListElement
1.10702 + * HTML5: 4.5.7 The ul Element
1.10703 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
1.10704 + */
1.10705 +HTMLUListElement = function(ownerDocument) {
1.10706 + HTMLElement.apply(this, arguments);
1.10707 +};
1.10708 +
1.10709 +HTMLUListElement.prototype = new HTMLElement();
1.10710 +__extend__(HTMLUListElement.prototype, {
1.10711 +
1.10712 + // no additional properties or elements
1.10713 +
1.10714 + toString: function() {
1.10715 + return '[object HTMLUListElement]';
1.10716 + }
1.10717 +});
1.10718 +
1.10719 +
1.10720 +/**
1.10721 + * HTMLUnknownElement DOM Level 2
1.10722 + */
1.10723 +HTMLUnknownElement = function(ownerDocument) {
1.10724 + HTMLElement.apply(this, arguments);
1.10725 +};
1.10726 +HTMLUnknownElement.prototype = new HTMLElement();
1.10727 +__extend__(HTMLUnknownElement.prototype,{
1.10728 + toString: function(){
1.10729 + return '[object HTMLUnknownElement]';
1.10730 + }
1.10731 +});
1.10732 +
1.10733 +/**
1.10734 + * @author john resig & the envjs team
1.10735 + * @uri http://www.envjs.com/
1.10736 + * @copyright 2008-2010
1.10737 + * @license MIT
1.10738 + */
1.10739 +//CLOSURE_END
1.10740 +}());
1.10741 +
1.10742 +/**
1.10743 + * DOM Style Level 2
1.10744 + */
1.10745 +var CSS2Properties,
1.10746 + CSSRule,
1.10747 + CSSStyleRule,
1.10748 + CSSImportRule,
1.10749 + CSSMediaRule,
1.10750 + CSSFontFaceRule,
1.10751 + CSSPageRule,
1.10752 + CSSRuleList,
1.10753 + CSSStyleSheet,
1.10754 + StyleSheet,
1.10755 + StyleSheetList;
1.10756 +;
1.10757 +
1.10758 +/*
1.10759 + * Envjs css.1.2.13
1.10760 + * Pure JavaScript Browser Environment
1.10761 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.10762 + * Copyright 2008-2010 John Resig, under the MIT License
1.10763 + */
1.10764 +
1.10765 +//CLOSURE_START
1.10766 +(function(){
1.10767 +
1.10768 +
1.10769 +
1.10770 +
1.10771 +
1.10772 +/**
1.10773 + * @author john resig
1.10774 + */
1.10775 +// Helper method for extending one object with another.
1.10776 +function __extend__(a,b) {
1.10777 + for ( var i in b ) {
1.10778 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.10779 + if ( g || s ) {
1.10780 + if ( g ) { a.__defineGetter__(i, g); }
1.10781 + if ( s ) { a.__defineSetter__(i, s); }
1.10782 + } else {
1.10783 + a[i] = b[i];
1.10784 + }
1.10785 + } return a;
1.10786 +}
1.10787 +
1.10788 +/**
1.10789 + * @author john resig
1.10790 + */
1.10791 +//from jQuery
1.10792 +function __setArray__( target, array ) {
1.10793 + // Resetting the length to 0, then using the native Array push
1.10794 + // is a super-fast way to populate an object with array-like properties
1.10795 + target.length = 0;
1.10796 + Array.prototype.push.apply( target, array );
1.10797 +}
1.10798 +
1.10799 +/**
1.10800 + * @author ariel flesler
1.10801 + * http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
1.10802 + * @param {Object} str
1.10803 + */
1.10804 +function __trim__( str ){
1.10805 + return (str || "").replace( /^\s+|\s+$/g, "" );
1.10806 +}
1.10807 +
1.10808 +/*
1.10809 + * Interface DocumentStyle (introduced in DOM Level 2)
1.10810 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/stylesheets.html#StyleSheets-StyleSheet-DocumentStyle
1.10811 + *
1.10812 + * interface DocumentStyle {
1.10813 + * readonly attribute StyleSheetList styleSheets;
1.10814 + * };
1.10815 + *
1.10816 + */
1.10817 +__extend__(Document.prototype, {
1.10818 + get styleSheets() {
1.10819 + if (! this._styleSheets) {
1.10820 + this._styleSheets = new StyleSheetList();
1.10821 + }
1.10822 + return this._styleSheets;
1.10823 + }
1.10824 +});
1.10825 +/*
1.10826 + * CSS2Properties - DOM Level 2 CSS
1.10827 + * Renamed to CSSStyleDeclaration??
1.10828 + */
1.10829 +
1.10830 +var __toCamelCase__ = function(name) {
1.10831 + if (name) {
1.10832 + return name.replace(/\-(\w)/g, function(all, letter) {
1.10833 + return letter.toUpperCase();
1.10834 + });
1.10835 + }
1.10836 + return name;
1.10837 +};
1.10838 +
1.10839 +var __toDashed__ = function(camelCaseName) {
1.10840 + if (camelCaseName) {
1.10841 + return camelCaseName.replace(/[A-Z]/g, function(all) {
1.10842 + return '-' + all.toLowerCase();
1.10843 + });
1.10844 + }
1.10845 + return camelCaseName;
1.10846 +};
1.10847 +
1.10848 +CSS2Properties = function(element){
1.10849 + //console.log('css2properties %s', __cssproperties__++);
1.10850 + this.styleIndex = __supportedStyles__;//non-standard
1.10851 + this.type = element.tagName;//non-standard
1.10852 + __setArray__(this, []);
1.10853 + __cssTextToStyles__(this, element.cssText || '');
1.10854 +};
1.10855 +__extend__(CSS2Properties.prototype, {
1.10856 + get cssText() {
1.10857 + var i, css = [];
1.10858 + for (i = 0; i < this.length; ++i) {
1.10859 + css.push(this[i] + ': ' + this.getPropertyValue(this[i]) + ';');
1.10860 + }
1.10861 + return css.join(' ');
1.10862 + },
1.10863 + set cssText(cssText) {
1.10864 + __cssTextToStyles__(this, cssText);
1.10865 + },
1.10866 + getPropertyCSSValue: function(name) {
1.10867 + //?
1.10868 + },
1.10869 + getPropertyPriority: function() {
1.10870 +
1.10871 + },
1.10872 + getPropertyValue: function(name) {
1.10873 + var index, cname = __toCamelCase__(name);
1.10874 + if (cname in this.styleIndex) {
1.10875 + return this[cname];
1.10876 + } else {
1.10877 + index = Array.prototype.indexOf.apply(this, [name]);
1.10878 + if (index > -1) {
1.10879 + return this[index];
1.10880 + }
1.10881 + }
1.10882 + return null;
1.10883 + },
1.10884 + item: function(index) {
1.10885 + return this[index];
1.10886 + },
1.10887 + removeProperty: function(name) {
1.10888 + this.styleIndex[name] = null;
1.10889 + name = __toDashed__(name);
1.10890 + var index = Array.prototype.indexOf.apply(this, [name]);
1.10891 + if (index > -1) {
1.10892 + Array.prototype.splice.apply(this, [1,index]);
1.10893 + }
1.10894 + },
1.10895 + setProperty: function(name, value, priority) {
1.10896 + var nval;
1.10897 + name = __toCamelCase__(name);
1.10898 + if (value !== undefined && name in this.styleIndex) {
1.10899 + // NOTE: parseFloat('300px') ==> 300 no
1.10900 + // NOTE: Number('300px') ==> Nan yes
1.10901 + nval = Number(value);
1.10902 + this.styleIndex[name] = isNaN(nval) ? value : nval;
1.10903 + name = __toDashed__(name);
1.10904 + if (Array.prototype.indexOf.apply(this, [name]) === -1 ){
1.10905 + Array.prototype.push.apply(this,[name]);
1.10906 + }
1.10907 + }
1.10908 + },
1.10909 + toString: function() {
1.10910 + return '[object CSS2Properties]';
1.10911 + }
1.10912 +});
1.10913 +
1.10914 +
1.10915 +
1.10916 +var __cssTextToStyles__ = function(css2props, cssText) {
1.10917 + //console.log('__cssTextToStyles__ %s %s', css2props, cssText);
1.10918 + //var styleArray=[];
1.10919 + var i, style, styles = cssText.split(';');
1.10920 + for (i = 0; i < styles.length; ++i) {
1.10921 + style = styles[i].split(':');
1.10922 + if (style.length === 2) {
1.10923 + css2props.setProperty(style[0].replace(' ', '', 'g'),
1.10924 + style[1].replace(' ', '', 'g'));
1.10925 + }
1.10926 + }
1.10927 +};
1.10928 +
1.10929 +//Obviously these arent all supported but by commenting out various
1.10930 +//sections this provides a single location to configure what is
1.10931 +//exposed as supported.
1.10932 +var __supportedStyles__ = {
1.10933 + azimuth: null,
1.10934 + background: null,
1.10935 + backgroundAttachment: null,
1.10936 + backgroundColor: 'rgb(0,0,0)',
1.10937 + backgroundImage: null,
1.10938 + backgroundPosition: null,
1.10939 + backgroundRepeat: null,
1.10940 + border: null,
1.10941 + borderBottom: null,
1.10942 + borderBottomColor: null,
1.10943 + borderBottomStyle: null,
1.10944 + borderBottomWidth: null,
1.10945 + borderCollapse: null,
1.10946 + borderColor: null,
1.10947 + borderLeft: null,
1.10948 + borderLeftColor: null,
1.10949 + borderLeftStyle: null,
1.10950 + borderLeftWidth: null,
1.10951 + borderRight: null,
1.10952 + borderRightColor: null,
1.10953 + borderRightStyle: null,
1.10954 + borderRightWidth: null,
1.10955 + borderSpacing: null,
1.10956 + borderStyle: null,
1.10957 + borderTop: null,
1.10958 + borderTopColor: null,
1.10959 + borderTopStyle: null,
1.10960 + borderTopWidth: null,
1.10961 + borderWidth: null,
1.10962 + bottom: null,
1.10963 + captionSide: null,
1.10964 + clear: null,
1.10965 + clip: null,
1.10966 + color: null,
1.10967 + content: null,
1.10968 + counterIncrement: null,
1.10969 + counterReset: null,
1.10970 + cssFloat: null,
1.10971 + cue: null,
1.10972 + cueAfter: null,
1.10973 + cueBefore: null,
1.10974 + cursor: null,
1.10975 + direction: 'ltr',
1.10976 + display: null,
1.10977 + elevation: null,
1.10978 + emptyCells: null,
1.10979 + font: null,
1.10980 + fontFamily: null,
1.10981 + fontSize: '1em',
1.10982 + fontSizeAdjust: null,
1.10983 + fontStretch: null,
1.10984 + fontStyle: null,
1.10985 + fontVariant: null,
1.10986 + fontWeight: null,
1.10987 + height: '',
1.10988 + left: null,
1.10989 + letterSpacing: null,
1.10990 + lineHeight: null,
1.10991 + listStyle: null,
1.10992 + listStyleImage: null,
1.10993 + listStylePosition: null,
1.10994 + listStyleType: null,
1.10995 + margin: null,
1.10996 + marginBottom: '0px',
1.10997 + marginLeft: '0px',
1.10998 + marginRight: '0px',
1.10999 + marginTop: '0px',
1.11000 + markerOffset: null,
1.11001 + marks: null,
1.11002 + maxHeight: null,
1.11003 + maxWidth: null,
1.11004 + minHeight: null,
1.11005 + minWidth: null,
1.11006 + opacity: 1,
1.11007 + orphans: null,
1.11008 + outline: null,
1.11009 + outlineColor: null,
1.11010 + outlineOffset: null,
1.11011 + outlineStyle: null,
1.11012 + outlineWidth: null,
1.11013 + overflow: null,
1.11014 + overflowX: null,
1.11015 + overflowY: null,
1.11016 + padding: null,
1.11017 + paddingBottom: '0px',
1.11018 + paddingLeft: '0px',
1.11019 + paddingRight: '0px',
1.11020 + paddingTop: '0px',
1.11021 + page: null,
1.11022 + pageBreakAfter: null,
1.11023 + pageBreakBefore: null,
1.11024 + pageBreakInside: null,
1.11025 + pause: null,
1.11026 + pauseAfter: null,
1.11027 + pauseBefore: null,
1.11028 + pitch: null,
1.11029 + pitchRange: null,
1.11030 + position: null,
1.11031 + quotes: null,
1.11032 + richness: null,
1.11033 + right: null,
1.11034 + size: null,
1.11035 + speak: null,
1.11036 + speakHeader: null,
1.11037 + speakNumeral: null,
1.11038 + speakPunctuation: null,
1.11039 + speechRate: null,
1.11040 + stress: null,
1.11041 + tableLayout: null,
1.11042 + textAlign: null,
1.11043 + textDecoration: null,
1.11044 + textIndent: null,
1.11045 + textShadow: null,
1.11046 + textTransform: null,
1.11047 + top: null,
1.11048 + unicodeBidi: null,
1.11049 + verticalAlign: null,
1.11050 + visibility: '',
1.11051 + voiceFamily: null,
1.11052 + volume: null,
1.11053 + whiteSpace: null,
1.11054 + widows: null,
1.11055 + width: '1px',
1.11056 + wordSpacing: null,
1.11057 + zIndex: 1
1.11058 +};
1.11059 +
1.11060 +var __displayMap__ = {
1.11061 + DIV : 'block',
1.11062 + P : 'block',
1.11063 + A : 'inline',
1.11064 + CODE : 'inline',
1.11065 + PRE : 'block',
1.11066 + SPAN : 'inline',
1.11067 + TABLE : 'table',
1.11068 + THEAD : 'table-header-group',
1.11069 + TBODY : 'table-row-group',
1.11070 + TR : 'table-row',
1.11071 + TH : 'table-cell',
1.11072 + TD : 'table-cell',
1.11073 + UL : 'block',
1.11074 + LI : 'list-item'
1.11075 +};
1.11076 +
1.11077 +for (var style in __supportedStyles__) {
1.11078 + if (__supportedStyles__.hasOwnProperty(style)) {
1.11079 + (function(name) {
1.11080 + if (name === 'width' || name === 'height') {
1.11081 + CSS2Properties.prototype.__defineGetter__(name, function() {
1.11082 + if (this.display === 'none'){
1.11083 + return '0px';
1.11084 + }
1.11085 + return this.styleIndex[name];
1.11086 + });
1.11087 + } else if (name === 'display') {
1.11088 + //display will be set to a tagName specific value if ''
1.11089 + CSS2Properties.prototype.__defineGetter__(name, function() {
1.11090 + var val = this.styleIndex[name];
1.11091 + val = val ? val :__displayMap__[this.type];
1.11092 + return val;
1.11093 + });
1.11094 + } else {
1.11095 + CSS2Properties.prototype.__defineGetter__(name, function() {
1.11096 + return this.styleIndex[name];
1.11097 + });
1.11098 + }
1.11099 + CSS2Properties.prototype.__defineSetter__(name, function(value) {
1.11100 + this.setProperty(name, value);
1.11101 + });
1.11102 + }(style));
1.11103 + }
1.11104 +}
1.11105 +
1.11106 +/*
1.11107 + * CSSRule - DOM Level 2
1.11108 + */
1.11109 +CSSRule = function(options) {
1.11110 +
1.11111 +
1.11112 +
1.11113 + var $style,
1.11114 + $selectorText = options.selectorText ? options.selectorText : '';
1.11115 + $style = new CSS2Properties({
1.11116 + cssText: options.cssText ? options.cssText : null
1.11117 + });
1.11118 +
1.11119 + return __extend__(this, {
1.11120 + get style(){
1.11121 + return $style;
1.11122 + },
1.11123 + get selectorText(){
1.11124 + return $selectorText;
1.11125 + },
1.11126 + set selectorText(selectorText){
1.11127 + $selectorText = selectorText;
1.11128 + },
1.11129 + toString : function(){
1.11130 + return "[object CSSRule]";
1.11131 + }
1.11132 + });
1.11133 +};
1.11134 +CSSRule.STYLE_RULE = 1;
1.11135 +CSSRule.IMPORT_RULE = 3;
1.11136 +CSSRule.MEDIA_RULE = 4;
1.11137 +CSSRule.FONT_FACE_RULE = 5;
1.11138 +CSSRule.PAGE_RULE = 6;
1.11139 +//CSSRule.NAMESPACE_RULE = 10;
1.11140 +
1.11141 +
1.11142 +CSSStyleRule = function() {
1.11143 +
1.11144 +};
1.11145 +
1.11146 +CSSImportRule = function() {
1.11147 +
1.11148 +};
1.11149 +
1.11150 +CSSMediaRule = function() {
1.11151 +
1.11152 +};
1.11153 +
1.11154 +CSSFontFaceRule = function() {
1.11155 +
1.11156 +};
1.11157 +
1.11158 +CSSPageRule = function() {
1.11159 +
1.11160 +};
1.11161 +
1.11162 +
1.11163 +CSSRuleList = function(data) {
1.11164 + this.length = 0;
1.11165 + __setArray__(this, data);
1.11166 +};
1.11167 +
1.11168 +__extend__(CSSRuleList.prototype, {
1.11169 + item : function(index) {
1.11170 + if ((index >= 0) && (index < this.length)) {
1.11171 + // bounds check
1.11172 + return this[index];
1.11173 + }
1.11174 + return null;
1.11175 + },
1.11176 + toString: function() {
1.11177 + return '[object CSSRuleList]';
1.11178 + }
1.11179 +});
1.11180 +
1.11181 +/**
1.11182 + * StyleSheet
1.11183 + * http://dev.w3.org/csswg/cssom/#stylesheet
1.11184 + *
1.11185 + * interface StyleSheet {
1.11186 + * readonly attribute DOMString type;
1.11187 + * readonly attribute DOMString href;
1.11188 + * readonly attribute Node ownerNode;
1.11189 + * readonly attribute StyleSheet parentStyleSheet;
1.11190 + * readonly attribute DOMString title;
1.11191 + * [PutForwards=mediaText] readonly attribute MediaList media;
1.11192 + * attribute boolean disabled;
1.11193 + * };
1.11194 + */
1.11195 +StyleSheet = function() {
1.11196 +}
1.11197 +
1.11198 +/*
1.11199 + * CSSStyleSheet
1.11200 + * http://dev.w3.org/csswg/cssom/#cssstylesheet
1.11201 + *
1.11202 + * interface CSSStyleSheet : StyleSheet {
1.11203 + * readonly attribute CSSRule ownerRule;
1.11204 + * readonly attribute CSSRuleList cssRules;
1.11205 + * unsigned long insertRule(DOMString rule, unsigned long index);
1.11206 + * void deleteRule(unsigned long index);
1.11207 + * };
1.11208 + */
1.11209 +CSSStyleSheet = function(options){
1.11210 + var $cssRules,
1.11211 + $disabled = options.disabled ? options.disabled : false,
1.11212 + $href = options.href ? options.href : null,
1.11213 + $parentStyleSheet = options.parentStyleSheet ? options.parentStyleSheet : null,
1.11214 + $title = options.title ? options.title : "",
1.11215 + $type = "text/css";
1.11216 +
1.11217 + function parseStyleSheet(text){
1.11218 + //$debug("parsing css");
1.11219 + //this is pretty ugly, but text is the entire text of a stylesheet
1.11220 + var cssRules = [];
1.11221 + if (!text) {
1.11222 + text = '';
1.11223 + }
1.11224 + text = __trim__(text.replace(/\/\*(\r|\n|.)*\*\//g,""));
1.11225 + // TODO: @import
1.11226 + var blocks = text.split("}");
1.11227 + blocks.pop();
1.11228 + var i, j, len = blocks.length;
1.11229 + var definition_block, properties, selectors;
1.11230 + for (i=0; i<len; i++) {
1.11231 + definition_block = blocks[i].split("{");
1.11232 + if (definition_block.length === 2) {
1.11233 + selectors = definition_block[0].split(",");
1.11234 + for (j=0; j<selectors.length; j++) {
1.11235 + cssRules.push(new CSSRule({
1.11236 + selectorText : __trim__(selectors[j]),
1.11237 + cssText : definition_block[1]
1.11238 + }));
1.11239 + }
1.11240 + }
1.11241 + }
1.11242 + return cssRules;
1.11243 + }
1.11244 +
1.11245 + $cssRules = new CSSRuleList(parseStyleSheet(options.textContent));
1.11246 +
1.11247 + return __extend__(this, {
1.11248 + get cssRules(){
1.11249 + return $cssRules;
1.11250 + },
1.11251 + get rule(){
1.11252 + return $cssRules;
1.11253 + },//IE - may be deprecated
1.11254 + get href(){
1.11255 + return $href;
1.11256 + },
1.11257 + get parentStyleSheet(){
1.11258 + return $parentStyleSheet;
1.11259 + },
1.11260 + get title(){
1.11261 + return $title;
1.11262 + },
1.11263 + get type(){
1.11264 + return $type;
1.11265 + },
1.11266 + addRule: function(selector, style, index){/*TODO*/},
1.11267 + deleteRule: function(index){/*TODO*/},
1.11268 + insertRule: function(rule, index){/*TODO*/},
1.11269 + //IE - may be deprecated
1.11270 + removeRule: function(index){
1.11271 + this.deleteRule(index);
1.11272 + }
1.11273 + });
1.11274 +};
1.11275 +
1.11276 +StyleSheetList = function() {
1.11277 +}
1.11278 +StyleSheetList.prototype = new Array();
1.11279 +__extend__(StyleSheetList.prototype, {
1.11280 + item : function(index) {
1.11281 + if ((index >= 0) && (index < this.length)) {
1.11282 + // bounds check
1.11283 + return this[index];
1.11284 + }
1.11285 + return null;
1.11286 + },
1.11287 + toString: function() {
1.11288 + return '[object StyleSheetList]';
1.11289 + }
1.11290 +});
1.11291 +/**
1.11292 + * This extends HTMLElement to handle CSS-specific interfaces.
1.11293 + *
1.11294 + * More work / research would be needed to extend just (DOM) Element
1.11295 + * for xml use and additional changes for just HTMLElement.
1.11296 + */
1.11297 +
1.11298 +
1.11299 +/**
1.11300 + * Replace or add the getter for 'style'
1.11301 + *
1.11302 + * This could be wrapped in a closure
1.11303 + */
1.11304 +var $css2properties = [{}];
1.11305 +
1.11306 +__extend__(HTMLElement.prototype, {
1.11307 + get style(){
1.11308 + if ( !this.css2uuid ) {
1.11309 + this.css2uuid = $css2properties.length;
1.11310 + $css2properties[this.css2uuid] = new CSS2Properties(this);
1.11311 + }
1.11312 + return $css2properties[this.css2uuid];
1.11313 + },
1.11314 +});
1.11315 +
1.11316 +/**
1.11317 + * Change for how 'setAttribute("style", ...)' works
1.11318 + *
1.11319 + * We are truly adding functionality to HtmlElement.setAttribute, not
1.11320 + * replacing it. So we need to save the old one first, call it, then
1.11321 + * do our stuff. If we need to do more hacks like this, HTMLElement
1.11322 + * (or regular Element) needs to have a hooks array or dispatch table
1.11323 + * for global changes.
1.11324 + *
1.11325 + * This could be wrapped in a closure if desired.
1.11326 + */
1.11327 +var updateCss2Props = function(elem, values) {
1.11328 + //console.log('__updateCss2Props__ %s %s', elem, values);
1.11329 + if ( !elem.css2uuid ) {
1.11330 + elem.css2uuid = $css2properties.length;
1.11331 + $css2properties[elem.css2uuid] = new CSS2Properties(elem);
1.11332 + }
1.11333 + __cssTextToStyles__($css2properties[elem.css2uuid], values);
1.11334 +}
1.11335 +
1.11336 +var origSetAttribute = HTMLElement.prototype.setAttribute;
1.11337 +
1.11338 +HTMLElement.prototype.setAttribute = function(name, value) {
1.11339 + //console.log("CSS set attribute: " + name + ", " + value);
1.11340 + origSetAttribute.apply(this, arguments);
1.11341 + if (name === "style") {
1.11342 + updateCss2Props(this, value);
1.11343 + }
1.11344 +}
1.11345 +
1.11346 +/**
1.11347 + * @author john resig & the envjs team
1.11348 + * @uri http://www.envjs.com/
1.11349 + * @copyright 2008-2010
1.11350 + * @license MIT
1.11351 + */
1.11352 +//CLOSURE_END
1.11353 +}());
1.11354 +
1.11355 +//these are both non-standard globals that
1.11356 +//provide static namespaces and functions
1.11357 +//to support the html 5 parser from nu.
1.11358 +var XMLParser = {},
1.11359 + HTMLParser = {};
1.11360 +
1.11361 +
1.11362 +/*
1.11363 + * Envjs parser.1.2.13
1.11364 + * Pure JavaScript Browser Environment
1.11365 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.11366 + * Copyright 2008-2010 John Resig, under the MIT License
1.11367 + */
1.11368 +
1.11369 +//CLOSURE_START
1.11370 +(function(){
1.11371 +
1.11372 +
1.11373 +
1.11374 +
1.11375 +
1.11376 +/**
1.11377 + * @author john resig
1.11378 + */
1.11379 +// Helper method for extending one object with another.
1.11380 +function __extend__(a,b) {
1.11381 + for ( var i in b ) {
1.11382 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.11383 + if ( g || s ) {
1.11384 + if ( g ) { a.__defineGetter__(i, g); }
1.11385 + if ( s ) { a.__defineSetter__(i, s); }
1.11386 + } else {
1.11387 + a[i] = b[i];
1.11388 + }
1.11389 + } return a;
1.11390 +}
1.11391 +
1.11392 +/**
1.11393 + * @author john resig
1.11394 + */
1.11395 +//from jQuery
1.11396 +function __setArray__( target, array ) {
1.11397 + // Resetting the length to 0, then using the native Array push
1.11398 + // is a super-fast way to populate an object with array-like properties
1.11399 + target.length = 0;
1.11400 + Array.prototype.push.apply( target, array );
1.11401 +}
1.11402 +var __defineParser__;
1.11403 +(function () {var $gwt_version = "1.5.1";var $wnd = {};var $doc = {};var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var _, N8000000000000000_longLit = [0, -9223372036854775808], P1000000_longLit = [16777216, 0], P7fffffffffffffff_longLit = [4294967295, 9223372032559808512];
1.11404 +function equals_1(other){
1.11405 + return (this == null?null:this) === (other == null?null:other);
1.11406 +}
1.11407 +
1.11408 +function getClass_13(){
1.11409 + return Ljava_lang_Object_2_classLit;
1.11410 +}
1.11411 +
1.11412 +function hashCode_2(){
1.11413 + return this.$H || (this.$H = ++sNextHashId);
1.11414 +}
1.11415 +
1.11416 +function toString_3(){
1.11417 + return (this.typeMarker$ == nullMethod || this.typeId$ == 2?this.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName + '@' + toPowerOfTwoString(this.typeMarker$ == nullMethod || this.typeId$ == 2?this.hashCode$():this.$H || (this.$H = ++sNextHashId), 4);
1.11418 +}
1.11419 +
1.11420 +function Object_0(){
1.11421 +}
1.11422 +
1.11423 +_ = Object_0.prototype = {};
1.11424 +_.equals$ = equals_1;
1.11425 +_.getClass$ = getClass_13;
1.11426 +_.hashCode$ = hashCode_2;
1.11427 +_.toString$ = toString_3;
1.11428 +_.toString = function(){
1.11429 + return this.toString$();
1.11430 +}
1.11431 +;
1.11432 +_.typeMarker$ = nullMethod;
1.11433 +_.typeId$ = 1;
1.11434 +function $toString_1(this$static){
1.11435 + var className, msg;
1.11436 + className = this$static.getClass$().typeName;
1.11437 + msg = this$static.getMessage();
1.11438 + if (msg != null) {
1.11439 + return className + ': ' + msg;
1.11440 + }
1.11441 + else {
1.11442 + return className;
1.11443 + }
1.11444 +}
1.11445 +
1.11446 +function getClass_19(){
1.11447 + return Ljava_lang_Throwable_2_classLit;
1.11448 +}
1.11449 +
1.11450 +function getMessage(){
1.11451 + return this.detailMessage;
1.11452 +}
1.11453 +
1.11454 +function toString_7(){
1.11455 + return $toString_1(this);
1.11456 +}
1.11457 +
1.11458 +function Throwable(){
1.11459 +}
1.11460 +
1.11461 +_ = Throwable.prototype = new Object_0();
1.11462 +_.getClass$ = getClass_19;
1.11463 +_.getMessage = getMessage;
1.11464 +_.toString$ = toString_7;
1.11465 +_.typeId$ = 3;
1.11466 +_.detailMessage = null;
1.11467 +function $Exception(this$static, message){
1.11468 + this$static.detailMessage = message;
1.11469 + return this$static;
1.11470 +}
1.11471 +
1.11472 +function getClass_9(){
1.11473 + return Ljava_lang_Exception_2_classLit;
1.11474 +}
1.11475 +
1.11476 +function Exception(){
1.11477 +}
1.11478 +
1.11479 +_ = Exception.prototype = new Throwable();
1.11480 +_.getClass$ = getClass_9;
1.11481 +_.typeId$ = 4;
1.11482 +function $RuntimeException(this$static, message){
1.11483 + this$static.detailMessage = message;
1.11484 + return this$static;
1.11485 +}
1.11486 +
1.11487 +function getClass_14(){
1.11488 + return Ljava_lang_RuntimeException_2_classLit;
1.11489 +}
1.11490 +
1.11491 +function RuntimeException(){
1.11492 +}
1.11493 +
1.11494 +_ = RuntimeException.prototype = new Exception();
1.11495 +_.getClass$ = getClass_14;
1.11496 +_.typeId$ = 5;
1.11497 +function $JavaScriptException(this$static, e){
1.11498 + $Exception(this$static, '(' + getName(e) + '): ' + getDescription(e) + (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)?getProperties0(dynamicCastJso(e)):''));
1.11499 + getName(e);
1.11500 + getDescription(e);
1.11501 + getException(e);
1.11502 + return this$static;
1.11503 +}
1.11504 +
1.11505 +function getClass_0(){
1.11506 + return Lcom_google_gwt_core_client_JavaScriptException_2_classLit;
1.11507 +}
1.11508 +
1.11509 +function getDescription(e){
1.11510 + if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
1.11511 + return getDescription0(dynamicCastJso(e));
1.11512 + }
1.11513 + else {
1.11514 + return e + '';
1.11515 + }
1.11516 +}
1.11517 +
1.11518 +function getDescription0(e){
1.11519 + return e == null?null:e.message;
1.11520 +}
1.11521 +
1.11522 +function getException(e){
1.11523 + if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
1.11524 + return dynamicCastJso(e);
1.11525 + }
1.11526 + else {
1.11527 + return null;
1.11528 + }
1.11529 +}
1.11530 +
1.11531 +function getName(e){
1.11532 + if (e == null) {
1.11533 + return 'null';
1.11534 + }
1.11535 + else if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
1.11536 + return getName0(dynamicCastJso(e));
1.11537 + }
1.11538 + else if (e != null && canCast(e.typeId$, 1)) {
1.11539 + return 'String';
1.11540 + }
1.11541 + else {
1.11542 + return (e.typeMarker$ == nullMethod || e.typeId$ == 2?e.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
1.11543 + }
1.11544 +}
1.11545 +
1.11546 +function getName0(e){
1.11547 + return e == null?null:e.name;
1.11548 +}
1.11549 +
1.11550 +function getProperties0(e){
1.11551 + var result = '';
1.11552 + for (prop in e) {
1.11553 + if (prop != 'name' && prop != 'message') {
1.11554 + result += '\n ' + prop + ': ' + e[prop];
1.11555 + }
1.11556 + }
1.11557 + return result;
1.11558 +}
1.11559 +
1.11560 +function JavaScriptException(){
1.11561 +}
1.11562 +
1.11563 +_ = JavaScriptException.prototype = new RuntimeException();
1.11564 +_.getClass$ = getClass_0;
1.11565 +_.typeId$ = 6;
1.11566 +function createFunction(){
1.11567 + return function(){
1.11568 + }
1.11569 + ;
1.11570 +}
1.11571 +
1.11572 +function equals__devirtual$(this$static, other){
1.11573 + return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.equals$(other):(this$static == null?null:this$static) === (other == null?null:other);
1.11574 +}
1.11575 +
1.11576 +function hashCode__devirtual$(this$static){
1.11577 + return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.hashCode$():this$static.$H || (this$static.$H = ++sNextHashId);
1.11578 +}
1.11579 +
1.11580 +var sNextHashId = 0;
1.11581 +function createFromSeed(seedType, length){
1.11582 + var seedArray = [null, 0, false, [0, 0]];
1.11583 + var value = seedArray[seedType];
1.11584 + var array = new Array(length);
1.11585 + for (var i = 0; i < length; ++i) {
1.11586 + array[i] = value;
1.11587 + }
1.11588 + return array;
1.11589 +}
1.11590 +
1.11591 +function getClass_2(){
1.11592 + return this.arrayClass$;
1.11593 +}
1.11594 +
1.11595 +function initDim(arrayClass, typeId, queryId, length, seedType){
1.11596 + var result;
1.11597 + result = createFromSeed(seedType, length);
1.11598 + initValues(arrayClass, typeId, queryId, result);
1.11599 + return result;
1.11600 +}
1.11601 +
1.11602 +function initValues(arrayClass, typeId, queryId, array){
1.11603 + if (!protoTypeArray_0) {
1.11604 + protoTypeArray_0 = new Array_0();
1.11605 + }
1.11606 + wrapArray(array, protoTypeArray_0);
1.11607 + array.arrayClass$ = arrayClass;
1.11608 + array.typeId$ = typeId;
1.11609 + array.queryId$ = queryId;
1.11610 + return array;
1.11611 +}
1.11612 +
1.11613 +function setCheck(array, index, value){
1.11614 + if (value != null) {
1.11615 + if (array.queryId$ > 0 && !canCastUnsafe(value.typeId$, array.queryId$)) {
1.11616 + throw new ArrayStoreException();
1.11617 + }
1.11618 + if (array.queryId$ < 0 && (value.typeMarker$ == nullMethod || value.typeId$ == 2)) {
1.11619 + throw new ArrayStoreException();
1.11620 + }
1.11621 + }
1.11622 + return array[index] = value;
1.11623 +}
1.11624 +
1.11625 +function wrapArray(array, protoTypeArray){
1.11626 + for (var i in protoTypeArray) {
1.11627 + var toCopy = protoTypeArray[i];
1.11628 + if (toCopy) {
1.11629 + array[i] = toCopy;
1.11630 + }
1.11631 + }
1.11632 + return array;
1.11633 +}
1.11634 +
1.11635 +function Array_0(){
1.11636 +}
1.11637 +
1.11638 +_ = Array_0.prototype = new Object_0();
1.11639 +_.getClass$ = getClass_2;
1.11640 +_.typeId$ = 0;
1.11641 +_.arrayClass$ = null;
1.11642 +_.length = 0;
1.11643 +_.queryId$ = 0;
1.11644 +var protoTypeArray_0 = null;
1.11645 +function canCast(srcId, dstId){
1.11646 + return srcId && !!typeIdArray[srcId][dstId];
1.11647 +}
1.11648 +
1.11649 +function canCastUnsafe(srcId, dstId){
1.11650 + return srcId && typeIdArray[srcId][dstId];
1.11651 +}
1.11652 +
1.11653 +function dynamicCast(src, dstId){
1.11654 + if (src != null && !canCastUnsafe(src.typeId$, dstId)) {
1.11655 + throw new ClassCastException();
1.11656 + }
1.11657 + return src;
1.11658 +}
1.11659 +
1.11660 +function dynamicCastJso(src){
1.11661 + if (src != null && (src.typeMarker$ == nullMethod || src.typeId$ == 2)) {
1.11662 + throw new ClassCastException();
1.11663 + }
1.11664 + return src;
1.11665 +}
1.11666 +
1.11667 +function instanceOf(src, dstId){
1.11668 + return src != null && canCast(src.typeId$, dstId);
1.11669 +}
1.11670 +
1.11671 +var typeIdArray = [{}, {}, {1:1, 6:1, 7:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1, 19:1}, {4:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {6:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {7:1}, {7:1}, {2:1, 6:1}, {2:1, 6:1}, {18:1}, {14:1}, {14:1}, {14:1}, {15:1}, {15:1}, {6:1, 15:1}, {6:1, 16:1}, {6:1, 15:1}, {2:1, 6:1, 17:1}, {6:1, 8:1}, {6:1, 8:1}, {6:1, 8:1}, {20:1}, {3:1}, {9:1}, {10:1}, {11:1}, {21:1}, {2:1, 6:1, 22:1}, {2:1, 6:1, 22:1}, {12:1}, {13:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}];
1.11672 +function caught(e){
1.11673 + if (e != null && canCast(e.typeId$, 2)) {
1.11674 + return e;
1.11675 + }
1.11676 + return $JavaScriptException(new JavaScriptException(), e);
1.11677 +}
1.11678 +
1.11679 +function create(valueLow, valueHigh){
1.11680 + var diffHigh, diffLow;
1.11681 + valueHigh %= 1.8446744073709552E19;
1.11682 + valueLow %= 1.8446744073709552E19;
1.11683 + diffHigh = valueHigh % 4294967296;
1.11684 + diffLow = Math.floor(valueLow / 4294967296) * 4294967296;
1.11685 + valueHigh = valueHigh - diffHigh + diffLow;
1.11686 + valueLow = valueLow - diffLow + diffHigh;
1.11687 + while (valueLow < 0) {
1.11688 + valueLow += 4294967296;
1.11689 + valueHigh -= 4294967296;
1.11690 + }
1.11691 + while (valueLow > 4294967295) {
1.11692 + valueLow -= 4294967296;
1.11693 + valueHigh += 4294967296;
1.11694 + }
1.11695 + valueHigh = valueHigh % 1.8446744073709552E19;
1.11696 + while (valueHigh > 9223372032559808512) {
1.11697 + valueHigh -= 1.8446744073709552E19;
1.11698 + }
1.11699 + while (valueHigh < -9223372036854775808) {
1.11700 + valueHigh += 1.8446744073709552E19;
1.11701 + }
1.11702 + return [valueLow, valueHigh];
1.11703 +}
1.11704 +
1.11705 +function fromDouble(value){
1.11706 + if (isNaN(value)) {
1.11707 + return $clinit_7() , ZERO;
1.11708 + }
1.11709 + if (value < -9223372036854775808) {
1.11710 + return $clinit_7() , MIN_VALUE;
1.11711 + }
1.11712 + if (value >= 9223372036854775807) {
1.11713 + return $clinit_7() , MAX_VALUE;
1.11714 + }
1.11715 + if (value > 0) {
1.11716 + return create(Math.floor(value), 0);
1.11717 + }
1.11718 + else {
1.11719 + return create(Math.ceil(value), 0);
1.11720 + }
1.11721 +}
1.11722 +
1.11723 +function fromInt(value){
1.11724 + var rebase, result;
1.11725 + if (value > -129 && value < 128) {
1.11726 + rebase = value + 128;
1.11727 + result = ($clinit_6() , boxedValues)[rebase];
1.11728 + if (result == null) {
1.11729 + result = boxedValues[rebase] = internalFromInt(value);
1.11730 + }
1.11731 + return result;
1.11732 + }
1.11733 + return internalFromInt(value);
1.11734 +}
1.11735 +
1.11736 +function internalFromInt(value){
1.11737 + if (value >= 0) {
1.11738 + return [value, 0];
1.11739 + }
1.11740 + else {
1.11741 + return [value + 4294967296, -4294967296];
1.11742 + }
1.11743 +}
1.11744 +
1.11745 +function $clinit_6(){
1.11746 + $clinit_6 = nullMethod;
1.11747 + boxedValues = initDim(_3_3D_classLit, 53, 13, 256, 0);
1.11748 +}
1.11749 +
1.11750 +var boxedValues;
1.11751 +function $clinit_7(){
1.11752 + $clinit_7 = nullMethod;
1.11753 + Math.log(2);
1.11754 + MAX_VALUE = P7fffffffffffffff_longLit;
1.11755 + MIN_VALUE = N8000000000000000_longLit;
1.11756 + fromInt(-1);
1.11757 + fromInt(1);
1.11758 + fromInt(2);
1.11759 + ZERO = fromInt(0);
1.11760 +}
1.11761 +
1.11762 +var MAX_VALUE, MIN_VALUE, ZERO;
1.11763 +function $clinit_12(){
1.11764 + $clinit_12 = nullMethod;
1.11765 + timers = $ArrayList(new ArrayList());
1.11766 + addWindowCloseListener(new Timer$1());
1.11767 +}
1.11768 +
1.11769 +function $cancel(this$static){
1.11770 + if (this$static.isRepeating) {
1.11771 + clearInterval(this$static.timerId);
1.11772 + }
1.11773 + else {
1.11774 + clearTimeout(this$static.timerId);
1.11775 + }
1.11776 + $remove_0(timers, this$static);
1.11777 +}
1.11778 +
1.11779 +function $fireImpl(this$static){
1.11780 + if (!this$static.isRepeating) {
1.11781 + $remove_0(timers, this$static);
1.11782 + }
1.11783 + $run(this$static);
1.11784 +}
1.11785 +
1.11786 +function $schedule(this$static, delayMillis){
1.11787 + if (delayMillis <= 0) {
1.11788 + throw $IllegalArgumentException(new IllegalArgumentException(), 'must be positive');
1.11789 + }
1.11790 + $cancel(this$static);
1.11791 + this$static.isRepeating = false;
1.11792 + this$static.timerId = createTimeout(this$static, delayMillis);
1.11793 + $add(timers, this$static);
1.11794 +}
1.11795 +
1.11796 +function createTimeout(timer, delay){
1.11797 + return setTimeout(function(){
1.11798 + timer.fire();
1.11799 + }
1.11800 + , delay);
1.11801 +}
1.11802 +
1.11803 +function fire(){
1.11804 + $fireImpl(this);
1.11805 +}
1.11806 +
1.11807 +function getClass_4(){
1.11808 + return Lcom_google_gwt_user_client_Timer_2_classLit;
1.11809 +}
1.11810 +
1.11811 +function Timer(){
1.11812 +}
1.11813 +
1.11814 +_ = Timer.prototype = new Object_0();
1.11815 +_.fire = fire;
1.11816 +_.getClass$ = getClass_4;
1.11817 +_.typeId$ = 0;
1.11818 +_.isRepeating = false;
1.11819 +_.timerId = 0;
1.11820 +var timers;
1.11821 +function $onWindowClosed(){
1.11822 + while (($clinit_12() , timers).size > 0) {
1.11823 + $cancel(dynamicCast($get_0(timers, 0), 3));
1.11824 + }
1.11825 +}
1.11826 +
1.11827 +function getClass_3(){
1.11828 + return Lcom_google_gwt_user_client_Timer$1_2_classLit;
1.11829 +}
1.11830 +
1.11831 +function Timer$1(){
1.11832 +}
1.11833 +
1.11834 +_ = Timer$1.prototype = new Object_0();
1.11835 +_.getClass$ = getClass_3;
1.11836 +_.typeId$ = 7;
1.11837 +function addWindowCloseListener(listener){
1.11838 + maybeInitializeHandlers();
1.11839 + if (!closingListeners) {
1.11840 + closingListeners = $ArrayList(new ArrayList());
1.11841 + }
1.11842 + $add(closingListeners, listener);
1.11843 +}
1.11844 +
1.11845 +function fireClosedImpl(){
1.11846 + var listener$iterator;
1.11847 + if (closingListeners) {
1.11848 + for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
1.11849 + dynamicCast($next(listener$iterator), 4);
1.11850 + $onWindowClosed();
1.11851 + }
1.11852 + }
1.11853 +}
1.11854 +
1.11855 +function fireClosingImpl(){
1.11856 + var listener$iterator, ret;
1.11857 + ret = null;
1.11858 + if (closingListeners) {
1.11859 + for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
1.11860 + dynamicCast($next(listener$iterator), 4);
1.11861 + ret = null;
1.11862 + }
1.11863 + }
1.11864 + return ret;
1.11865 +}
1.11866 +
1.11867 +function __init__xxx__(){
1.11868 + __gwt_initHandlers(function(){
1.11869 + }
1.11870 + , function(){
1.11871 + return fireClosingImpl();
1.11872 + }
1.11873 + , function(){
1.11874 + fireClosedImpl();
1.11875 + }
1.11876 + );
1.11877 +}
1.11878 +
1.11879 +function maybeInitializeHandlers(){
1.11880 + if (!handlersAreInitialized) {
1.11881 + // __init__xxx__();
1.11882 + handlersAreInitialized = true;
1.11883 + }
1.11884 +}
1.11885 +
1.11886 +var closingListeners = null, handlersAreInitialized = false;
1.11887 +function $ArrayStoreException(this$static, message){
1.11888 + this$static.detailMessage = message;
1.11889 + return this$static;
1.11890 +}
1.11891 +
1.11892 +function getClass_5(){
1.11893 + return Ljava_lang_ArrayStoreException_2_classLit;
1.11894 +}
1.11895 +
1.11896 +function ArrayStoreException(){
1.11897 +}
1.11898 +
1.11899 +_ = ArrayStoreException.prototype = new RuntimeException();
1.11900 +_.getClass$ = getClass_5;
1.11901 +_.typeId$ = 9;
1.11902 +function createForArray(packageName, className){
1.11903 + var clazz;
1.11904 + clazz = new Class();
1.11905 + clazz.typeName = packageName + className;
1.11906 + clazz.modifiers = 4;
1.11907 + return clazz;
1.11908 +}
1.11909 +
1.11910 +function createForClass(packageName, className){
1.11911 + var clazz;
1.11912 + clazz = new Class();
1.11913 + clazz.typeName = packageName + className;
1.11914 + return clazz;
1.11915 +}
1.11916 +
1.11917 +function createForEnum(packageName, className){
1.11918 + var clazz;
1.11919 + clazz = new Class();
1.11920 + clazz.typeName = packageName + className;
1.11921 + clazz.modifiers = 8;
1.11922 + return clazz;
1.11923 +}
1.11924 +
1.11925 +function getClass_7(){
1.11926 + return Ljava_lang_Class_2_classLit;
1.11927 +}
1.11928 +
1.11929 +function toString_1(){
1.11930 + return ((this.modifiers & 2) != 0?'interface ':(this.modifiers & 1) != 0?'':'class ') + this.typeName;
1.11931 +}
1.11932 +
1.11933 +function Class(){
1.11934 +}
1.11935 +
1.11936 +_ = Class.prototype = new Object_0();
1.11937 +_.getClass$ = getClass_7;
1.11938 +_.toString$ = toString_1;
1.11939 +_.typeId$ = 0;
1.11940 +_.modifiers = 0;
1.11941 +_.typeName = null;
1.11942 +function getClass_6(){
1.11943 + return Ljava_lang_ClassCastException_2_classLit;
1.11944 +}
1.11945 +
1.11946 +function ClassCastException(){
1.11947 +}
1.11948 +
1.11949 +_ = ClassCastException.prototype = new RuntimeException();
1.11950 +_.getClass$ = getClass_6;
1.11951 +_.typeId$ = 12;
1.11952 +function compareTo(other){
1.11953 + return this.ordinal - other.ordinal;
1.11954 +}
1.11955 +
1.11956 +function equals_0(other){
1.11957 + return (this == null?null:this) === (other == null?null:other);
1.11958 +}
1.11959 +
1.11960 +function getClass_8(){
1.11961 + return Ljava_lang_Enum_2_classLit;
1.11962 +}
1.11963 +
1.11964 +function hashCode_1(){
1.11965 + return this.$H || (this.$H = ++sNextHashId);
1.11966 +}
1.11967 +
1.11968 +function toString_2(){
1.11969 + return this.name_0;
1.11970 +}
1.11971 +
1.11972 +function Enum(){
1.11973 +}
1.11974 +
1.11975 +_ = Enum.prototype = new Object_0();
1.11976 +_.compareTo$ = compareTo;
1.11977 +_.equals$ = equals_0;
1.11978 +_.getClass$ = getClass_8;
1.11979 +_.hashCode$ = hashCode_1;
1.11980 +_.toString$ = toString_2;
1.11981 +_.typeId$ = 13;
1.11982 +_.name_0 = null;
1.11983 +_.ordinal = 0;
1.11984 +function $IllegalArgumentException(this$static, message){
1.11985 + this$static.detailMessage = message;
1.11986 + return this$static;
1.11987 +}
1.11988 +
1.11989 +function getClass_10(){
1.11990 + return Ljava_lang_IllegalArgumentException_2_classLit;
1.11991 +}
1.11992 +
1.11993 +function IllegalArgumentException(){
1.11994 +}
1.11995 +
1.11996 +_ = IllegalArgumentException.prototype = new RuntimeException();
1.11997 +_.getClass$ = getClass_10;
1.11998 +_.typeId$ = 14;
1.11999 +function $IndexOutOfBoundsException(this$static, message){
1.12000 + this$static.detailMessage = message;
1.12001 + return this$static;
1.12002 +}
1.12003 +
1.12004 +function getClass_11(){
1.12005 + return Ljava_lang_IndexOutOfBoundsException_2_classLit;
1.12006 +}
1.12007 +
1.12008 +function IndexOutOfBoundsException(){
1.12009 +}
1.12010 +
1.12011 +_ = IndexOutOfBoundsException.prototype = new RuntimeException();
1.12012 +_.getClass$ = getClass_11;
1.12013 +_.typeId$ = 15;
1.12014 +function toPowerOfTwoString(value, shift){
1.12015 + var bitMask, buf, bufSize, pos;
1.12016 + bufSize = ~~(32 / shift);
1.12017 + bitMask = (1 << shift) - 1;
1.12018 + buf = initDim(_3C_classLit, 42, -1, bufSize, 1);
1.12019 + pos = bufSize - 1;
1.12020 + if (value >= 0) {
1.12021 + while (value > bitMask) {
1.12022 + buf[pos--] = ($clinit_31() , digits)[value & bitMask];
1.12023 + value >>= shift;
1.12024 + }
1.12025 + }
1.12026 + else {
1.12027 + while (pos > 0) {
1.12028 + buf[pos--] = ($clinit_31() , digits)[value & bitMask];
1.12029 + value >>= shift;
1.12030 + }
1.12031 + }
1.12032 + buf[pos] = ($clinit_31() , digits)[value & bitMask];
1.12033 + return __valueOf(buf, pos, bufSize);
1.12034 +}
1.12035 +
1.12036 +function getClass_12(){
1.12037 + return Ljava_lang_NullPointerException_2_classLit;
1.12038 +}
1.12039 +
1.12040 +function NullPointerException(){
1.12041 +}
1.12042 +
1.12043 +_ = NullPointerException.prototype = new RuntimeException();
1.12044 +_.getClass$ = getClass_12;
1.12045 +_.typeId$ = 16;
1.12046 +function $clinit_31(){
1.12047 + $clinit_31 = nullMethod;
1.12048 + digits = initValues(_3C_classLit, 42, -1, [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122]);
1.12049 +}
1.12050 +
1.12051 +var digits;
1.12052 +function $equals_0(this$static, other){
1.12053 + if (!(other != null && canCast(other.typeId$, 1))) {
1.12054 + return false;
1.12055 + }
1.12056 + return String(this$static) == other;
1.12057 +}
1.12058 +
1.12059 +function $getChars_0(this$static, srcBegin, srcEnd, dst, dstBegin){
1.12060 + var srcIdx;
1.12061 + for (srcIdx = srcBegin; srcIdx < srcEnd; ++srcIdx) {
1.12062 + dst[dstBegin++] = this$static.charCodeAt(srcIdx);
1.12063 + }
1.12064 +}
1.12065 +
1.12066 +function $toCharArray(this$static){
1.12067 + var charArr, n;
1.12068 + n = this$static.length;
1.12069 + charArr = initDim(_3C_classLit, 42, -1, n, 1);
1.12070 + $getChars_0(this$static, 0, n, charArr, 0);
1.12071 + return charArr;
1.12072 +}
1.12073 +
1.12074 +function __checkBounds(legalCount, start, end){
1.12075 + if (start < 0) {
1.12076 + throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), start);
1.12077 + }
1.12078 + if (end < start) {
1.12079 + throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end - start);
1.12080 + }
1.12081 + if (end > legalCount) {
1.12082 + throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end);
1.12083 + }
1.12084 +}
1.12085 +
1.12086 +function __valueOf(x, start, end){
1.12087 + x = x.slice(start, end);
1.12088 + return String.fromCharCode.apply(null, x);
1.12089 +}
1.12090 +
1.12091 +function compareTo_1(thisStr, otherStr){
1.12092 + thisStr = String(thisStr);
1.12093 + if (thisStr == otherStr) {
1.12094 + return 0;
1.12095 + }
1.12096 + return thisStr < otherStr?-1:1;
1.12097 +}
1.12098 +
1.12099 +function compareTo_0(other){
1.12100 + return compareTo_1(this, other);
1.12101 +}
1.12102 +
1.12103 +function equals_2(other){
1.12104 + return $equals_0(this, other);
1.12105 +}
1.12106 +
1.12107 +function getClass_18(){
1.12108 + return Ljava_lang_String_2_classLit;
1.12109 +}
1.12110 +
1.12111 +function hashCode_3(){
1.12112 + return getHashCode_0(this);
1.12113 +}
1.12114 +
1.12115 +function toString_6(){
1.12116 + return this;
1.12117 +}
1.12118 +
1.12119 +function valueOf_1(x, offset, count){
1.12120 + var end;
1.12121 + end = offset + count;
1.12122 + __checkBounds(x.length, offset, end);
1.12123 + return __valueOf(x, offset, end);
1.12124 +}
1.12125 +
1.12126 +_ = String.prototype;
1.12127 +_.compareTo$ = compareTo_0;
1.12128 +_.equals$ = equals_2;
1.12129 +_.getClass$ = getClass_18;
1.12130 +_.hashCode$ = hashCode_3;
1.12131 +_.toString$ = toString_6;
1.12132 +_.typeId$ = 2;
1.12133 +function $clinit_35(){
1.12134 + $clinit_35 = nullMethod;
1.12135 + back = {};
1.12136 + front = {};
1.12137 +}
1.12138 +
1.12139 +function compute(str){
1.12140 + var hashCode, i, inc, n;
1.12141 + n = str.length;
1.12142 + inc = n < 64?1:~~(n / 32);
1.12143 + hashCode = 0;
1.12144 + for (i = 0; i < n; i += inc) {
1.12145 + hashCode <<= 1;
1.12146 + hashCode += str.charCodeAt(i);
1.12147 + }
1.12148 + hashCode |= 0;
1.12149 + return hashCode;
1.12150 +}
1.12151 +
1.12152 +function getHashCode_0(str){
1.12153 + $clinit_35();
1.12154 + var key = ':' + str;
1.12155 + var result = front[key];
1.12156 + if (result != null) {
1.12157 + return result;
1.12158 + }
1.12159 + result = back[key];
1.12160 + if (result == null) {
1.12161 + result = compute(str);
1.12162 + }
1.12163 + increment();
1.12164 + return front[key] = result;
1.12165 +}
1.12166 +
1.12167 +function increment(){
1.12168 + if (count_0 == 256) {
1.12169 + back = front;
1.12170 + front = {};
1.12171 + count_0 = 0;
1.12172 + }
1.12173 + ++count_0;
1.12174 +}
1.12175 +
1.12176 +var back, count_0 = 0, front;
1.12177 +function $StringBuffer(this$static){
1.12178 + this$static.builder = $StringBuilder(new StringBuilder());
1.12179 + return this$static;
1.12180 +}
1.12181 +
1.12182 +function $append(this$static, toAppend){
1.12183 + $append_0(this$static.builder, toAppend);
1.12184 + return this$static;
1.12185 +}
1.12186 +
1.12187 +function getClass_15(){
1.12188 + return Ljava_lang_StringBuffer_2_classLit;
1.12189 +}
1.12190 +
1.12191 +function toString_4(){
1.12192 + return $toString_0(this.builder);
1.12193 +}
1.12194 +
1.12195 +function StringBuffer(){
1.12196 +}
1.12197 +
1.12198 +_ = StringBuffer.prototype = new Object_0();
1.12199 +_.getClass$ = getClass_15;
1.12200 +_.toString$ = toString_4;
1.12201 +_.typeId$ = 17;
1.12202 +function $StringBuilder(this$static){
1.12203 + this$static.stringArray = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
1.12204 + return this$static;
1.12205 +}
1.12206 +
1.12207 +function $append_0(this$static, toAppend){
1.12208 + var appendLength;
1.12209 + if (toAppend == null) {
1.12210 + toAppend = 'null';
1.12211 + }
1.12212 + appendLength = toAppend.length;
1.12213 + if (appendLength > 0) {
1.12214 + this$static.stringArray[this$static.arrayLen++] = toAppend;
1.12215 + this$static.stringLength += appendLength;
1.12216 + if (this$static.arrayLen > 1024) {
1.12217 + $toString_0(this$static);
1.12218 + this$static.stringArray.length = 1024;
1.12219 + }
1.12220 + }
1.12221 + return this$static;
1.12222 +}
1.12223 +
1.12224 +function $getChars(this$static, srcStart, srcEnd, dst, dstStart){
1.12225 + var s;
1.12226 + __checkBounds(this$static.stringLength, srcStart, srcEnd);
1.12227 + __checkBounds(dst.length, dstStart, dstStart + (srcEnd - srcStart));
1.12228 + s = $toString_0(this$static);
1.12229 + while (srcStart < srcEnd) {
1.12230 + dst[dstStart++] = s.charCodeAt(srcStart++);
1.12231 + }
1.12232 +}
1.12233 +
1.12234 +function $setLength(this$static, newLength){
1.12235 + var oldLength, s;
1.12236 + oldLength = this$static.stringLength;
1.12237 + if (newLength < oldLength) {
1.12238 + s = $toString_0(this$static);
1.12239 + this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s.substr(0, newLength - 0), '', s.substr(oldLength, s.length - oldLength)]);
1.12240 + this$static.arrayLen = 3;
1.12241 + this$static.stringLength += ''.length - (oldLength - newLength);
1.12242 + }
1.12243 + else if (newLength > oldLength) {
1.12244 + $append_0(this$static, String.fromCharCode.apply(null, initDim(_3C_classLit, 42, -1, newLength - oldLength, 1)));
1.12245 + }
1.12246 +}
1.12247 +
1.12248 +function $toString_0(this$static){
1.12249 + var s;
1.12250 + if (this$static.arrayLen != 1) {
1.12251 + this$static.stringArray.length = this$static.arrayLen;
1.12252 + s = this$static.stringArray.join('');
1.12253 + this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s]);
1.12254 + this$static.arrayLen = 1;
1.12255 + }
1.12256 + return this$static.stringArray[0];
1.12257 +}
1.12258 +
1.12259 +function getClass_16(){
1.12260 + return Ljava_lang_StringBuilder_2_classLit;
1.12261 +}
1.12262 +
1.12263 +function toString_5(){
1.12264 + return $toString_0(this);
1.12265 +}
1.12266 +
1.12267 +function StringBuilder(){
1.12268 +}
1.12269 +
1.12270 +_ = StringBuilder.prototype = new Object_0();
1.12271 +_.getClass$ = getClass_16;
1.12272 +_.toString$ = toString_5;
1.12273 +_.typeId$ = 18;
1.12274 +_.arrayLen = 0;
1.12275 +_.stringLength = 0;
1.12276 +function $StringIndexOutOfBoundsException(this$static, index){
1.12277 + this$static.detailMessage = 'String index out of range: ' + index;
1.12278 + return this$static;
1.12279 +}
1.12280 +
1.12281 +function getClass_17(){
1.12282 + return Ljava_lang_StringIndexOutOfBoundsException_2_classLit;
1.12283 +}
1.12284 +
1.12285 +function StringIndexOutOfBoundsException(){
1.12286 +}
1.12287 +
1.12288 +_ = StringIndexOutOfBoundsException.prototype = new IndexOutOfBoundsException();
1.12289 +_.getClass$ = getClass_17;
1.12290 +_.typeId$ = 19;
1.12291 +function arraycopy(src, srcOfs, dest, destOfs, len){
1.12292 + var destArray, destEnd, destTypeName, destlen, srcArray, srcTypeName, srclen;
1.12293 + if (src == null || dest == null) {
1.12294 + throw new NullPointerException();
1.12295 + }
1.12296 + srcTypeName = (src.typeMarker$ == nullMethod || src.typeId$ == 2?src.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
1.12297 + destTypeName = (dest.typeMarker$ == nullMethod || dest.typeId$ == 2?dest.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
1.12298 + if (srcTypeName.charCodeAt(0) != 91 || destTypeName.charCodeAt(0) != 91) {
1.12299 + throw $ArrayStoreException(new ArrayStoreException(), 'Must be array types');
1.12300 + }
1.12301 + if (srcTypeName.charCodeAt(1) != destTypeName.charCodeAt(1)) {
1.12302 + throw $ArrayStoreException(new ArrayStoreException(), 'Array types must match');
1.12303 + }
1.12304 + srclen = src.length;
1.12305 + destlen = dest.length;
1.12306 + if (srcOfs < 0 || destOfs < 0 || len < 0 || srcOfs + len > srclen || destOfs + len > destlen) {
1.12307 + throw new IndexOutOfBoundsException();
1.12308 + }
1.12309 + if ((srcTypeName.charCodeAt(1) == 76 || srcTypeName.charCodeAt(1) == 91) && !$equals_0(srcTypeName, destTypeName)) {
1.12310 + srcArray = dynamicCast(src, 5);
1.12311 + destArray = dynamicCast(dest, 5);
1.12312 + if ((src == null?null:src) === (dest == null?null:dest) && srcOfs < destOfs) {
1.12313 + srcOfs += len;
1.12314 + for (destEnd = destOfs + len; destEnd-- > destOfs;) {
1.12315 + setCheck(destArray, destEnd, srcArray[--srcOfs]);
1.12316 + }
1.12317 + }
1.12318 + else {
1.12319 + for (destEnd = destOfs + len; destOfs < destEnd;) {
1.12320 + setCheck(destArray, destOfs++, srcArray[srcOfs++]);
1.12321 + }
1.12322 + }
1.12323 + }
1.12324 + else {
1.12325 + Array.prototype.splice.apply(dest, [destOfs, len].concat(src.slice(srcOfs, srcOfs + len)));
1.12326 + }
1.12327 +}
1.12328 +
1.12329 +function $UnsupportedOperationException(this$static, message){
1.12330 + this$static.detailMessage = message;
1.12331 + return this$static;
1.12332 +}
1.12333 +
1.12334 +function getClass_20(){
1.12335 + return Ljava_lang_UnsupportedOperationException_2_classLit;
1.12336 +}
1.12337 +
1.12338 +function UnsupportedOperationException(){
1.12339 +}
1.12340 +
1.12341 +_ = UnsupportedOperationException.prototype = new RuntimeException();
1.12342 +_.getClass$ = getClass_20;
1.12343 +_.typeId$ = 20;
1.12344 +function $advanceToFind(iter, o){
1.12345 + var t;
1.12346 + while (iter.hasNext()) {
1.12347 + t = iter.next_0();
1.12348 + if (o == null?t == null:equals__devirtual$(o, t)) {
1.12349 + return iter;
1.12350 + }
1.12351 + }
1.12352 + return null;
1.12353 +}
1.12354 +
1.12355 +function add(o){
1.12356 + throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this collection');
1.12357 +}
1.12358 +
1.12359 +function contains(o){
1.12360 + var iter;
1.12361 + iter = $advanceToFind(this.iterator(), o);
1.12362 + return !!iter;
1.12363 +}
1.12364 +
1.12365 +function getClass_21(){
1.12366 + return Ljava_util_AbstractCollection_2_classLit;
1.12367 +}
1.12368 +
1.12369 +function toString_8(){
1.12370 + var comma, iter, sb;
1.12371 + sb = $StringBuffer(new StringBuffer());
1.12372 + comma = null;
1.12373 + $append_0(sb.builder, '[');
1.12374 + iter = this.iterator();
1.12375 + while (iter.hasNext()) {
1.12376 + if (comma != null) {
1.12377 + $append_0(sb.builder, comma);
1.12378 + }
1.12379 + else {
1.12380 + comma = ', ';
1.12381 + }
1.12382 + $append(sb, '' + iter.next_0());
1.12383 + }
1.12384 + $append_0(sb.builder, ']');
1.12385 + return $toString_0(sb.builder);
1.12386 +}
1.12387 +
1.12388 +function AbstractCollection(){
1.12389 +}
1.12390 +
1.12391 +_ = AbstractCollection.prototype = new Object_0();
1.12392 +_.add_1 = add;
1.12393 +_.contains = contains;
1.12394 +_.getClass$ = getClass_21;
1.12395 +_.toString$ = toString_8;
1.12396 +_.typeId$ = 0;
1.12397 +function equals_5(obj){
1.12398 + var entry, entry$iterator, otherKey, otherMap, otherValue;
1.12399 + if ((obj == null?null:obj) === (this == null?null:this)) {
1.12400 + return true;
1.12401 + }
1.12402 + if (!(obj != null && canCast(obj.typeId$, 16))) {
1.12403 + return false;
1.12404 + }
1.12405 + otherMap = dynamicCast(obj, 16);
1.12406 + if (dynamicCast(this, 16).size != otherMap.size) {
1.12407 + return false;
1.12408 + }
1.12409 + for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), otherMap).this$0); $hasNext(entry$iterator.iter);) {
1.12410 + entry = dynamicCast($next(entry$iterator.iter), 14);
1.12411 + otherKey = entry.getKey();
1.12412 + otherValue = entry.getValue();
1.12413 + if (!(otherKey == null?dynamicCast(this, 16).nullSlotLive:otherKey != null?$hasStringValue(dynamicCast(this, 16), otherKey):$hasHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
1.12414 + return false;
1.12415 + }
1.12416 + if (!equalsWithNullCheck(otherValue, otherKey == null?dynamicCast(this, 16).nullSlot:otherKey != null?dynamicCast(this, 16).stringMap[':' + otherKey]:$getHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
1.12417 + return false;
1.12418 + }
1.12419 + }
1.12420 + return true;
1.12421 +}
1.12422 +
1.12423 +function getClass_31(){
1.12424 + return Ljava_util_AbstractMap_2_classLit;
1.12425 +}
1.12426 +
1.12427 +function hashCode_6(){
1.12428 + var entry, entry$iterator, hashCode;
1.12429 + hashCode = 0;
1.12430 + for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(entry$iterator.iter);) {
1.12431 + entry = dynamicCast($next(entry$iterator.iter), 14);
1.12432 + hashCode += entry.hashCode$();
1.12433 + hashCode = ~~hashCode;
1.12434 + }
1.12435 + return hashCode;
1.12436 +}
1.12437 +
1.12438 +function toString_10(){
1.12439 + var comma, entry, iter, s;
1.12440 + s = '{';
1.12441 + comma = false;
1.12442 + for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(iter.iter);) {
1.12443 + entry = dynamicCast($next(iter.iter), 14);
1.12444 + if (comma) {
1.12445 + s += ', ';
1.12446 + }
1.12447 + else {
1.12448 + comma = true;
1.12449 + }
1.12450 + s += '' + entry.getKey();
1.12451 + s += '=';
1.12452 + s += '' + entry.getValue();
1.12453 + }
1.12454 + return s + '}';
1.12455 +}
1.12456 +
1.12457 +function AbstractMap(){
1.12458 +}
1.12459 +
1.12460 +_ = AbstractMap.prototype = new Object_0();
1.12461 +_.equals$ = equals_5;
1.12462 +_.getClass$ = getClass_31;
1.12463 +_.hashCode$ = hashCode_6;
1.12464 +_.toString$ = toString_10;
1.12465 +_.typeId$ = 0;
1.12466 +function $addAllHashEntries(this$static, dest){
1.12467 + var hashCodeMap = this$static.hashCodeMap;
1.12468 + for (var hashCode in hashCodeMap) {
1.12469 + if (hashCode == parseInt(hashCode)) {
1.12470 + var array = hashCodeMap[hashCode];
1.12471 + for (var i = 0, c = array.length; i < c; ++i) {
1.12472 + dest.add_1(array[i]);
1.12473 + }
1.12474 + }
1.12475 + }
1.12476 +}
1.12477 +
1.12478 +function $addAllStringEntries(this$static, dest){
1.12479 + var stringMap = this$static.stringMap;
1.12480 + for (var key in stringMap) {
1.12481 + if (key.charCodeAt(0) == 58) {
1.12482 + var entry = new_$(this$static, key.substring(1));
1.12483 + dest.add_1(entry);
1.12484 + }
1.12485 + }
1.12486 +}
1.12487 +
1.12488 +function $clearImpl(this$static){
1.12489 + this$static.hashCodeMap = [];
1.12490 + this$static.stringMap = {};
1.12491 + this$static.nullSlotLive = false;
1.12492 + this$static.nullSlot = null;
1.12493 + this$static.size = 0;
1.12494 +}
1.12495 +
1.12496 +function $containsKey(this$static, key){
1.12497 + return key == null?this$static.nullSlotLive:key != null?':' + key in this$static.stringMap:$hasHashValue(this$static, key, ~~getHashCode_0(key));
1.12498 +}
1.12499 +
1.12500 +function $get(this$static, key){
1.12501 + return key == null?this$static.nullSlot:key != null?this$static.stringMap[':' + key]:$getHashValue(this$static, key, ~~getHashCode_0(key));
1.12502 +}
1.12503 +
1.12504 +function $getHashValue(this$static, key, hashCode){
1.12505 + var array = this$static.hashCodeMap[hashCode];
1.12506 + if (array) {
1.12507 + for (var i = 0, c = array.length; i < c; ++i) {
1.12508 + var entry = array[i];
1.12509 + var entryKey = entry.getKey();
1.12510 + if (this$static.equalsBridge(key, entryKey)) {
1.12511 + return entry.getValue();
1.12512 + }
1.12513 + }
1.12514 + }
1.12515 + return null;
1.12516 +}
1.12517 +
1.12518 +function $hasHashValue(this$static, key, hashCode){
1.12519 + var array = this$static.hashCodeMap[hashCode];
1.12520 + if (array) {
1.12521 + for (var i = 0, c = array.length; i < c; ++i) {
1.12522 + var entry = array[i];
1.12523 + var entryKey = entry.getKey();
1.12524 + if (this$static.equalsBridge(key, entryKey)) {
1.12525 + return true;
1.12526 + }
1.12527 + }
1.12528 + }
1.12529 + return false;
1.12530 +}
1.12531 +
1.12532 +function $hasStringValue(this$static, key){
1.12533 + return ':' + key in this$static.stringMap;
1.12534 +}
1.12535 +
1.12536 +function equalsBridge(value1, value2){
1.12537 + return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
1.12538 +}
1.12539 +
1.12540 +function getClass_26(){
1.12541 + return Ljava_util_AbstractHashMap_2_classLit;
1.12542 +}
1.12543 +
1.12544 +function AbstractHashMap(){
1.12545 +}
1.12546 +
1.12547 +_ = AbstractHashMap.prototype = new AbstractMap();
1.12548 +_.equalsBridge = equalsBridge;
1.12549 +_.getClass$ = getClass_26;
1.12550 +_.typeId$ = 0;
1.12551 +_.hashCodeMap = null;
1.12552 +_.nullSlot = null;
1.12553 +_.nullSlotLive = false;
1.12554 +_.size = 0;
1.12555 +_.stringMap = null;
1.12556 +function equals_6(o){
1.12557 + var iter, other, otherItem;
1.12558 + if ((o == null?null:o) === (this == null?null:this)) {
1.12559 + return true;
1.12560 + }
1.12561 + if (!(o != null && canCast(o.typeId$, 18))) {
1.12562 + return false;
1.12563 + }
1.12564 + other = dynamicCast(o, 18);
1.12565 + if (other.this$0.size != this.size_0()) {
1.12566 + return false;
1.12567 + }
1.12568 + for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), other.this$0); $hasNext(iter.iter);) {
1.12569 + otherItem = dynamicCast($next(iter.iter), 14);
1.12570 + if (!this.contains(otherItem)) {
1.12571 + return false;
1.12572 + }
1.12573 + }
1.12574 + return true;
1.12575 +}
1.12576 +
1.12577 +function getClass_33(){
1.12578 + return Ljava_util_AbstractSet_2_classLit;
1.12579 +}
1.12580 +
1.12581 +function hashCode_7(){
1.12582 + var hashCode, iter, next;
1.12583 + hashCode = 0;
1.12584 + for (iter = this.iterator(); iter.hasNext();) {
1.12585 + next = iter.next_0();
1.12586 + if (next != null) {
1.12587 + hashCode += hashCode__devirtual$(next);
1.12588 + hashCode = ~~hashCode;
1.12589 + }
1.12590 + }
1.12591 + return hashCode;
1.12592 +}
1.12593 +
1.12594 +function AbstractSet(){
1.12595 +}
1.12596 +
1.12597 +_ = AbstractSet.prototype = new AbstractCollection();
1.12598 +_.equals$ = equals_6;
1.12599 +_.getClass$ = getClass_33;
1.12600 +_.hashCode$ = hashCode_7;
1.12601 +_.typeId$ = 0;
1.12602 +function $AbstractHashMap$EntrySet(this$static, this$0){
1.12603 + this$static.this$0 = this$0;
1.12604 + return this$static;
1.12605 +}
1.12606 +
1.12607 +function contains_0(o){
1.12608 + var entry, key, value;
1.12609 + if (o != null && canCast(o.typeId$, 14)) {
1.12610 + entry = dynamicCast(o, 14);
1.12611 + key = entry.getKey();
1.12612 + if ($containsKey(this.this$0, key)) {
1.12613 + value = $get(this.this$0, key);
1.12614 + return $equals_1(entry.getValue(), value);
1.12615 + }
1.12616 + }
1.12617 + return false;
1.12618 +}
1.12619 +
1.12620 +function getClass_23(){
1.12621 + return Ljava_util_AbstractHashMap$EntrySet_2_classLit;
1.12622 +}
1.12623 +
1.12624 +function iterator(){
1.12625 + return $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), this.this$0);
1.12626 +}
1.12627 +
1.12628 +function size_0(){
1.12629 + return this.this$0.size;
1.12630 +}
1.12631 +
1.12632 +function AbstractHashMap$EntrySet(){
1.12633 +}
1.12634 +
1.12635 +_ = AbstractHashMap$EntrySet.prototype = new AbstractSet();
1.12636 +_.contains = contains_0;
1.12637 +_.getClass$ = getClass_23;
1.12638 +_.iterator = iterator;
1.12639 +_.size_0 = size_0;
1.12640 +_.typeId$ = 21;
1.12641 +_.this$0 = null;
1.12642 +function $AbstractHashMap$EntrySetIterator(this$static, this$0){
1.12643 + var list;
1.12644 + this$static.this$0 = this$0;
1.12645 + list = $ArrayList(new ArrayList());
1.12646 + if (this$static.this$0.nullSlotLive) {
1.12647 + $add(list, $AbstractHashMap$MapEntryNull(new AbstractHashMap$MapEntryNull(), this$static.this$0));
1.12648 + }
1.12649 + $addAllStringEntries(this$static.this$0, list);
1.12650 + $addAllHashEntries(this$static.this$0, list);
1.12651 + this$static.iter = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), list);
1.12652 + return this$static;
1.12653 +}
1.12654 +
1.12655 +function getClass_22(){
1.12656 + return Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit;
1.12657 +}
1.12658 +
1.12659 +function hasNext(){
1.12660 + return $hasNext(this.iter);
1.12661 +}
1.12662 +
1.12663 +function next_0(){
1.12664 + return dynamicCast($next(this.iter), 14);
1.12665 +}
1.12666 +
1.12667 +function AbstractHashMap$EntrySetIterator(){
1.12668 +}
1.12669 +
1.12670 +_ = AbstractHashMap$EntrySetIterator.prototype = new Object_0();
1.12671 +_.getClass$ = getClass_22;
1.12672 +_.hasNext = hasNext;
1.12673 +_.next_0 = next_0;
1.12674 +_.typeId$ = 0;
1.12675 +_.iter = null;
1.12676 +_.this$0 = null;
1.12677 +function equals_4(other){
1.12678 + var entry;
1.12679 + if (other != null && canCast(other.typeId$, 14)) {
1.12680 + entry = dynamicCast(other, 14);
1.12681 + if (equalsWithNullCheck(this.getKey(), entry.getKey()) && equalsWithNullCheck(this.getValue(), entry.getValue())) {
1.12682 + return true;
1.12683 + }
1.12684 + }
1.12685 + return false;
1.12686 +}
1.12687 +
1.12688 +function getClass_30(){
1.12689 + return Ljava_util_AbstractMapEntry_2_classLit;
1.12690 +}
1.12691 +
1.12692 +function hashCode_5(){
1.12693 + var keyHash, valueHash;
1.12694 + keyHash = 0;
1.12695 + valueHash = 0;
1.12696 + if (this.getKey() != null) {
1.12697 + keyHash = getHashCode_0(this.getKey());
1.12698 + }
1.12699 + if (this.getValue() != null) {
1.12700 + valueHash = hashCode__devirtual$(this.getValue());
1.12701 + }
1.12702 + return keyHash ^ valueHash;
1.12703 +}
1.12704 +
1.12705 +function toString_9(){
1.12706 + return this.getKey() + '=' + this.getValue();
1.12707 +}
1.12708 +
1.12709 +function AbstractMapEntry(){
1.12710 +}
1.12711 +
1.12712 +_ = AbstractMapEntry.prototype = new Object_0();
1.12713 +_.equals$ = equals_4;
1.12714 +_.getClass$ = getClass_30;
1.12715 +_.hashCode$ = hashCode_5;
1.12716 +_.toString$ = toString_9;
1.12717 +_.typeId$ = 22;
1.12718 +function $AbstractHashMap$MapEntryNull(this$static, this$0){
1.12719 + this$static.this$0 = this$0;
1.12720 + return this$static;
1.12721 +}
1.12722 +
1.12723 +function getClass_24(){
1.12724 + return Ljava_util_AbstractHashMap$MapEntryNull_2_classLit;
1.12725 +}
1.12726 +
1.12727 +function getKey(){
1.12728 + return null;
1.12729 +}
1.12730 +
1.12731 +function getValue(){
1.12732 + return this.this$0.nullSlot;
1.12733 +}
1.12734 +
1.12735 +function AbstractHashMap$MapEntryNull(){
1.12736 +}
1.12737 +
1.12738 +_ = AbstractHashMap$MapEntryNull.prototype = new AbstractMapEntry();
1.12739 +_.getClass$ = getClass_24;
1.12740 +_.getKey = getKey;
1.12741 +_.getValue = getValue;
1.12742 +_.typeId$ = 23;
1.12743 +_.this$0 = null;
1.12744 +function $AbstractHashMap$MapEntryString(this$static, key, this$0){
1.12745 + this$static.this$0 = this$0;
1.12746 + this$static.key = key;
1.12747 + return this$static;
1.12748 +}
1.12749 +
1.12750 +function getClass_25(){
1.12751 + return Ljava_util_AbstractHashMap$MapEntryString_2_classLit;
1.12752 +}
1.12753 +
1.12754 +function getKey_0(){
1.12755 + return this.key;
1.12756 +}
1.12757 +
1.12758 +function getValue_0(){
1.12759 + return this.this$0.stringMap[':' + this.key];
1.12760 +}
1.12761 +
1.12762 +function new_$(this$outer, key){
1.12763 + return $AbstractHashMap$MapEntryString(new AbstractHashMap$MapEntryString(), key, this$outer);
1.12764 +}
1.12765 +
1.12766 +function AbstractHashMap$MapEntryString(){
1.12767 +}
1.12768 +
1.12769 +_ = AbstractHashMap$MapEntryString.prototype = new AbstractMapEntry();
1.12770 +_.getClass$ = getClass_25;
1.12771 +_.getKey = getKey_0;
1.12772 +_.getValue = getValue_0;
1.12773 +_.typeId$ = 24;
1.12774 +_.key = null;
1.12775 +_.this$0 = null;
1.12776 +function add_1(obj){
1.12777 + this.add_0(this.size_0(), obj);
1.12778 + return true;
1.12779 +}
1.12780 +
1.12781 +function add_0(index, element){
1.12782 + throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this list');
1.12783 +}
1.12784 +
1.12785 +function checkIndex(index, size){
1.12786 + if (index < 0 || index >= size) {
1.12787 + indexOutOfBounds(index, size);
1.12788 + }
1.12789 +}
1.12790 +
1.12791 +function equals_3(o){
1.12792 + var elem, elemOther, iter, iterOther, other;
1.12793 + if ((o == null?null:o) === (this == null?null:this)) {
1.12794 + return true;
1.12795 + }
1.12796 + if (!(o != null && canCast(o.typeId$, 15))) {
1.12797 + return false;
1.12798 + }
1.12799 + other = dynamicCast(o, 15);
1.12800 + if (this.size_0() != other.size_0()) {
1.12801 + return false;
1.12802 + }
1.12803 + iter = this.iterator();
1.12804 + iterOther = other.iterator();
1.12805 + while (iter.i < iter.this$0.size_0()) {
1.12806 + elem = $next(iter);
1.12807 + elemOther = $next(iterOther);
1.12808 + if (!(elem == null?elemOther == null:equals__devirtual$(elem, elemOther))) {
1.12809 + return false;
1.12810 + }
1.12811 + }
1.12812 + return true;
1.12813 +}
1.12814 +
1.12815 +function getClass_29(){
1.12816 + return Ljava_util_AbstractList_2_classLit;
1.12817 +}
1.12818 +
1.12819 +function hashCode_4(){
1.12820 + var iter, k, obj;
1.12821 + k = 1;
1.12822 + iter = this.iterator();
1.12823 + while (iter.i < iter.this$0.size_0()) {
1.12824 + obj = $next(iter);
1.12825 + k = 31 * k + (obj == null?0:hashCode__devirtual$(obj));
1.12826 + k = ~~k;
1.12827 + }
1.12828 + return k;
1.12829 +}
1.12830 +
1.12831 +function indexOutOfBounds(index, size){
1.12832 + throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), 'Index: ' + index + ', Size: ' + size);
1.12833 +}
1.12834 +
1.12835 +function iterator_0(){
1.12836 + return $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), this);
1.12837 +}
1.12838 +
1.12839 +function AbstractList(){
1.12840 +}
1.12841 +
1.12842 +_ = AbstractList.prototype = new AbstractCollection();
1.12843 +_.add_1 = add_1;
1.12844 +_.add_0 = add_0;
1.12845 +_.equals$ = equals_3;
1.12846 +_.getClass$ = getClass_29;
1.12847 +_.hashCode$ = hashCode_4;
1.12848 +_.iterator = iterator_0;
1.12849 +_.typeId$ = 25;
1.12850 +function $AbstractList$IteratorImpl(this$static, this$0){
1.12851 + this$static.this$0 = this$0;
1.12852 + return this$static;
1.12853 +}
1.12854 +
1.12855 +function $hasNext(this$static){
1.12856 + return this$static.i < this$static.this$0.size_0();
1.12857 +}
1.12858 +
1.12859 +function $next(this$static){
1.12860 + if (this$static.i >= this$static.this$0.size_0()) {
1.12861 + throw new NoSuchElementException();
1.12862 + }
1.12863 + return this$static.this$0.get(this$static.i++);
1.12864 +}
1.12865 +
1.12866 +function getClass_27(){
1.12867 + return Ljava_util_AbstractList$IteratorImpl_2_classLit;
1.12868 +}
1.12869 +
1.12870 +function hasNext_0(){
1.12871 + return this.i < this.this$0.size_0();
1.12872 +}
1.12873 +
1.12874 +function next_1(){
1.12875 + return $next(this);
1.12876 +}
1.12877 +
1.12878 +function AbstractList$IteratorImpl(){
1.12879 +}
1.12880 +
1.12881 +_ = AbstractList$IteratorImpl.prototype = new Object_0();
1.12882 +_.getClass$ = getClass_27;
1.12883 +_.hasNext = hasNext_0;
1.12884 +_.next_0 = next_1;
1.12885 +_.typeId$ = 0;
1.12886 +_.i = 0;
1.12887 +_.this$0 = null;
1.12888 +function $AbstractList$ListIteratorImpl(this$static, this$0){
1.12889 + this$static.this$0 = this$0;
1.12890 + return this$static;
1.12891 +}
1.12892 +
1.12893 +function getClass_28(){
1.12894 + return Ljava_util_AbstractList$ListIteratorImpl_2_classLit;
1.12895 +}
1.12896 +
1.12897 +function AbstractList$ListIteratorImpl(){
1.12898 +}
1.12899 +
1.12900 +_ = AbstractList$ListIteratorImpl.prototype = new AbstractList$IteratorImpl();
1.12901 +_.getClass$ = getClass_28;
1.12902 +_.typeId$ = 0;
1.12903 +function add_2(index, element){
1.12904 + var iter;
1.12905 + iter = $listIterator(this, index);
1.12906 + $addBefore(iter.this$0, element, iter.currentNode);
1.12907 + ++iter.currentIndex;
1.12908 + iter.lastNode = null;
1.12909 +}
1.12910 +
1.12911 +function get(index){
1.12912 + var $e0, iter;
1.12913 + iter = $listIterator(this, index);
1.12914 + try {
1.12915 + return $next_0(iter);
1.12916 + }
1.12917 + catch ($e0) {
1.12918 + $e0 = caught($e0);
1.12919 + if (instanceOf($e0, 17)) {
1.12920 + throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), "Can't get element " + index);
1.12921 + }
1.12922 + else
1.12923 + throw $e0;
1.12924 + }
1.12925 +}
1.12926 +
1.12927 +function getClass_32(){
1.12928 + return Ljava_util_AbstractSequentialList_2_classLit;
1.12929 +}
1.12930 +
1.12931 +function iterator_1(){
1.12932 + return $AbstractList$ListIteratorImpl(new AbstractList$ListIteratorImpl(), this);
1.12933 +}
1.12934 +
1.12935 +function AbstractSequentialList(){
1.12936 +}
1.12937 +
1.12938 +_ = AbstractSequentialList.prototype = new AbstractList();
1.12939 +_.add_0 = add_2;
1.12940 +_.get = get;
1.12941 +_.getClass$ = getClass_32;
1.12942 +_.iterator = iterator_1;
1.12943 +_.typeId$ = 26;
1.12944 +function $ArrayList(this$static){
1.12945 + this$static.array = initDim(_3Ljava_lang_Object_2_classLit, 47, 0, 0, 0);
1.12946 + this$static.size = 0;
1.12947 + return this$static;
1.12948 +}
1.12949 +
1.12950 +function $add(this$static, o){
1.12951 + setCheck(this$static.array, this$static.size++, o);
1.12952 + return true;
1.12953 +}
1.12954 +
1.12955 +function $get_0(this$static, index){
1.12956 + checkIndex(index, this$static.size);
1.12957 + return this$static.array[index];
1.12958 +}
1.12959 +
1.12960 +function $indexOf_0(this$static, o, index){
1.12961 + for (; index < this$static.size; ++index) {
1.12962 + if (equalsWithNullCheck(o, this$static.array[index])) {
1.12963 + return index;
1.12964 + }
1.12965 + }
1.12966 + return -1;
1.12967 +}
1.12968 +
1.12969 +function $remove_0(this$static, o){
1.12970 + var i, previous;
1.12971 + i = $indexOf_0(this$static, o, 0);
1.12972 + if (i == -1) {
1.12973 + return false;
1.12974 + }
1.12975 + previous = (checkIndex(i, this$static.size) , this$static.array[i]);
1.12976 + this$static.array.splice(i, 1);
1.12977 + --this$static.size;
1.12978 + return true;
1.12979 +}
1.12980 +
1.12981 +function add_4(o){
1.12982 + return setCheck(this.array, this.size++, o) , true;
1.12983 +}
1.12984 +
1.12985 +function add_3(index, o){
1.12986 + if (index < 0 || index > this.size) {
1.12987 + indexOutOfBounds(index, this.size);
1.12988 + }
1.12989 + this.array.splice(index, 0, o);
1.12990 + ++this.size;
1.12991 +}
1.12992 +
1.12993 +function contains_1(o){
1.12994 + return $indexOf_0(this, o, 0) != -1;
1.12995 +}
1.12996 +
1.12997 +function get_0(index){
1.12998 + return checkIndex(index, this.size) , this.array[index];
1.12999 +}
1.13000 +
1.13001 +function getClass_34(){
1.13002 + return Ljava_util_ArrayList_2_classLit;
1.13003 +}
1.13004 +
1.13005 +function size_1(){
1.13006 + return this.size;
1.13007 +}
1.13008 +
1.13009 +function ArrayList(){
1.13010 +}
1.13011 +
1.13012 +_ = ArrayList.prototype = new AbstractList();
1.13013 +_.add_1 = add_4;
1.13014 +_.add_0 = add_3;
1.13015 +_.contains = contains_1;
1.13016 +_.get = get_0;
1.13017 +_.getClass$ = getClass_34;
1.13018 +_.size_0 = size_1;
1.13019 +_.typeId$ = 27;
1.13020 +_.array = null;
1.13021 +_.size = 0;
1.13022 +function binarySearch(sortedArray, key){
1.13023 + var high, low, mid, midVal;
1.13024 + low = 0;
1.13025 + high = sortedArray.length - 1;
1.13026 + while (low <= high) {
1.13027 + mid = low + (high - low >> 1);
1.13028 + midVal = sortedArray[mid];
1.13029 + if (midVal < key) {
1.13030 + low = mid + 1;
1.13031 + }
1.13032 + else if (midVal > key) {
1.13033 + high = mid - 1;
1.13034 + }
1.13035 + else {
1.13036 + return mid;
1.13037 + }
1.13038 + }
1.13039 + return -low - 1;
1.13040 +}
1.13041 +
1.13042 +function binarySearch_0(sortedArray, key, comparator){
1.13043 + var compareResult, high, low, mid, midVal;
1.13044 + if (!comparator) {
1.13045 + comparator = ($clinit_61() , NATURAL);
1.13046 + }
1.13047 + low = 0;
1.13048 + high = sortedArray.length - 1;
1.13049 + while (low <= high) {
1.13050 + mid = low + (high - low >> 1);
1.13051 + midVal = sortedArray[mid];
1.13052 + compareResult = midVal.compareTo$(key);
1.13053 + if (compareResult < 0) {
1.13054 + low = mid + 1;
1.13055 + }
1.13056 + else if (compareResult > 0) {
1.13057 + high = mid - 1;
1.13058 + }
1.13059 + else {
1.13060 + return mid;
1.13061 + }
1.13062 + }
1.13063 + return -low - 1;
1.13064 +}
1.13065 +
1.13066 +function $clinit_61(){
1.13067 + $clinit_61 = nullMethod;
1.13068 + NATURAL = new Comparators$1();
1.13069 +}
1.13070 +
1.13071 +var NATURAL;
1.13072 +function getClass_35(){
1.13073 + return Ljava_util_Comparators$1_2_classLit;
1.13074 +}
1.13075 +
1.13076 +function Comparators$1(){
1.13077 +}
1.13078 +
1.13079 +_ = Comparators$1.prototype = new Object_0();
1.13080 +_.getClass$ = getClass_35;
1.13081 +_.typeId$ = 0;
1.13082 +function $HashMap(this$static){
1.13083 + $clearImpl(this$static);
1.13084 + return this$static;
1.13085 +}
1.13086 +
1.13087 +function $equals_1(value1, value2){
1.13088 + return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
1.13089 +}
1.13090 +
1.13091 +function getClass_36(){
1.13092 + return Ljava_util_HashMap_2_classLit;
1.13093 +}
1.13094 +
1.13095 +function HashMap(){
1.13096 +}
1.13097 +
1.13098 +_ = HashMap.prototype = new AbstractHashMap();
1.13099 +_.getClass$ = getClass_36;
1.13100 +_.typeId$ = 28;
1.13101 +function $LinkedList(this$static){
1.13102 + this$static.header = $LinkedList$Node(new LinkedList$Node());
1.13103 + this$static.size = 0;
1.13104 + return this$static;
1.13105 +}
1.13106 +
1.13107 +function $addBefore(this$static, o, target){
1.13108 + $LinkedList$Node_0(new LinkedList$Node(), o, target);
1.13109 + ++this$static.size;
1.13110 +}
1.13111 +
1.13112 +function $addLast(this$static, o){
1.13113 + $LinkedList$Node_0(new LinkedList$Node(), o, this$static.header);
1.13114 + ++this$static.size;
1.13115 +}
1.13116 +
1.13117 +function $clear(this$static){
1.13118 + this$static.header = $LinkedList$Node(new LinkedList$Node());
1.13119 + this$static.size = 0;
1.13120 +}
1.13121 +
1.13122 +function $getLast(this$static){
1.13123 + $throwEmptyException(this$static);
1.13124 + return this$static.header.prev.value;
1.13125 +}
1.13126 +
1.13127 +function $listIterator(this$static, index){
1.13128 + var i, node;
1.13129 + if (index < 0 || index > this$static.size) {
1.13130 + indexOutOfBounds(index, this$static.size);
1.13131 + }
1.13132 + if (index >= this$static.size >> 1) {
1.13133 + node = this$static.header;
1.13134 + for (i = this$static.size; i > index; --i) {
1.13135 + node = node.prev;
1.13136 + }
1.13137 + }
1.13138 + else {
1.13139 + node = this$static.header.next;
1.13140 + for (i = 0; i < index; ++i) {
1.13141 + node = node.next;
1.13142 + }
1.13143 + }
1.13144 + return $LinkedList$ListIteratorImpl(new LinkedList$ListIteratorImpl(), index, node, this$static);
1.13145 +}
1.13146 +
1.13147 +function $removeLast(this$static){
1.13148 + var node;
1.13149 + $throwEmptyException(this$static);
1.13150 + --this$static.size;
1.13151 + node = this$static.header.prev;
1.13152 + node.next.prev = node.prev;
1.13153 + node.prev.next = node.next;
1.13154 + node.next = node.prev = node;
1.13155 + return node.value;
1.13156 +}
1.13157 +
1.13158 +function $throwEmptyException(this$static){
1.13159 + if (this$static.size == 0) {
1.13160 + throw new NoSuchElementException();
1.13161 + }
1.13162 +}
1.13163 +
1.13164 +function add_5(o){
1.13165 + $LinkedList$Node_0(new LinkedList$Node(), o, this.header);
1.13166 + ++this.size;
1.13167 + return true;
1.13168 +}
1.13169 +
1.13170 +function getClass_39(){
1.13171 + return Ljava_util_LinkedList_2_classLit;
1.13172 +}
1.13173 +
1.13174 +function size_2(){
1.13175 + return this.size;
1.13176 +}
1.13177 +
1.13178 +function LinkedList(){
1.13179 +}
1.13180 +
1.13181 +_ = LinkedList.prototype = new AbstractSequentialList();
1.13182 +_.add_1 = add_5;
1.13183 +_.getClass$ = getClass_39;
1.13184 +_.size_0 = size_2;
1.13185 +_.typeId$ = 29;
1.13186 +_.header = null;
1.13187 +_.size = 0;
1.13188 +function $LinkedList$ListIteratorImpl(this$static, index, startNode, this$0){
1.13189 + this$static.this$0 = this$0;
1.13190 + this$static.currentNode = startNode;
1.13191 + this$static.currentIndex = index;
1.13192 + return this$static;
1.13193 +}
1.13194 +
1.13195 +function $next_0(this$static){
1.13196 + if (this$static.currentNode == this$static.this$0.header) {
1.13197 + throw new NoSuchElementException();
1.13198 + }
1.13199 + this$static.lastNode = this$static.currentNode;
1.13200 + this$static.currentNode = this$static.currentNode.next;
1.13201 + ++this$static.currentIndex;
1.13202 + return this$static.lastNode.value;
1.13203 +}
1.13204 +
1.13205 +function getClass_37(){
1.13206 + return Ljava_util_LinkedList$ListIteratorImpl_2_classLit;
1.13207 +}
1.13208 +
1.13209 +function hasNext_1(){
1.13210 + return this.currentNode != this.this$0.header;
1.13211 +}
1.13212 +
1.13213 +function next_2(){
1.13214 + return $next_0(this);
1.13215 +}
1.13216 +
1.13217 +function LinkedList$ListIteratorImpl(){
1.13218 +}
1.13219 +
1.13220 +_ = LinkedList$ListIteratorImpl.prototype = new Object_0();
1.13221 +_.getClass$ = getClass_37;
1.13222 +_.hasNext = hasNext_1;
1.13223 +_.next_0 = next_2;
1.13224 +_.typeId$ = 0;
1.13225 +_.currentIndex = 0;
1.13226 +_.currentNode = null;
1.13227 +_.lastNode = null;
1.13228 +_.this$0 = null;
1.13229 +function $LinkedList$Node(this$static){
1.13230 + this$static.next = this$static.prev = this$static;
1.13231 + return this$static;
1.13232 +}
1.13233 +
1.13234 +function $LinkedList$Node_0(this$static, value, nextNode){
1.13235 + this$static.value = value;
1.13236 + this$static.next = nextNode;
1.13237 + this$static.prev = nextNode.prev;
1.13238 + nextNode.prev.next = this$static;
1.13239 + nextNode.prev = this$static;
1.13240 + return this$static;
1.13241 +}
1.13242 +
1.13243 +function getClass_38(){
1.13244 + return Ljava_util_LinkedList$Node_2_classLit;
1.13245 +}
1.13246 +
1.13247 +function LinkedList$Node(){
1.13248 +}
1.13249 +
1.13250 +_ = LinkedList$Node.prototype = new Object_0();
1.13251 +_.getClass$ = getClass_38;
1.13252 +_.typeId$ = 0;
1.13253 +_.next = null;
1.13254 +_.prev = null;
1.13255 +_.value = null;
1.13256 +function getClass_40(){
1.13257 + return Ljava_util_NoSuchElementException_2_classLit;
1.13258 +}
1.13259 +
1.13260 +function NoSuchElementException(){
1.13261 +}
1.13262 +
1.13263 +_ = NoSuchElementException.prototype = new RuntimeException();
1.13264 +_.getClass$ = getClass_40;
1.13265 +_.typeId$ = 30;
1.13266 +function equalsWithNullCheck(a, b){
1.13267 + return (a == null?null:a) === (b == null?null:b) || a != null && equals__devirtual$(a, b);
1.13268 +}
1.13269 +
1.13270 +function $clinit_77(){
1.13271 + $clinit_77 = nullMethod;
1.13272 + HTML = $DoctypeExpectation(new DoctypeExpectation(), 'HTML', 0);
1.13273 + $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_TRANSITIONAL', 1);
1.13274 + $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_STRICT', 2);
1.13275 + $DoctypeExpectation(new DoctypeExpectation(), 'AUTO', 3);
1.13276 + $DoctypeExpectation(new DoctypeExpectation(), 'NO_DOCTYPE_ERRORS', 4);
1.13277 +}
1.13278 +
1.13279 +function $DoctypeExpectation(this$static, enum$name, enum$ordinal){
1.13280 + $clinit_77();
1.13281 + this$static.name_0 = enum$name;
1.13282 + this$static.ordinal = enum$ordinal;
1.13283 + return this$static;
1.13284 +}
1.13285 +
1.13286 +function getClass_41(){
1.13287 + return Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit;
1.13288 +}
1.13289 +
1.13290 +function DoctypeExpectation(){
1.13291 +}
1.13292 +
1.13293 +_ = DoctypeExpectation.prototype = new Enum();
1.13294 +_.getClass$ = getClass_41;
1.13295 +_.typeId$ = 31;
1.13296 +var HTML;
1.13297 +function $clinit_78(){
1.13298 + $clinit_78 = nullMethod;
1.13299 + STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'STANDARDS_MODE', 0);
1.13300 + ALMOST_STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'ALMOST_STANDARDS_MODE', 1);
1.13301 + QUIRKS_MODE = $DocumentMode(new DocumentMode(), 'QUIRKS_MODE', 2);
1.13302 +}
1.13303 +
1.13304 +function $DocumentMode(this$static, enum$name, enum$ordinal){
1.13305 + $clinit_78();
1.13306 + this$static.name_0 = enum$name;
1.13307 + this$static.ordinal = enum$ordinal;
1.13308 + return this$static;
1.13309 +}
1.13310 +
1.13311 +function getClass_42(){
1.13312 + return Lnu_validator_htmlparser_common_DocumentMode_2_classLit;
1.13313 +}
1.13314 +
1.13315 +function DocumentMode(){
1.13316 +}
1.13317 +
1.13318 +_ = DocumentMode.prototype = new Enum();
1.13319 +_.getClass$ = getClass_42;
1.13320 +_.typeId$ = 32;
1.13321 +var ALMOST_STANDARDS_MODE, QUIRKS_MODE, STANDARDS_MODE;
1.13322 +function $clinit_80(){
1.13323 + $clinit_80 = nullMethod;
1.13324 + ALLOW = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALLOW', 0);
1.13325 + FATAL = $XmlViolationPolicy(new XmlViolationPolicy(), 'FATAL', 1);
1.13326 + ALTER_INFOSET = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALTER_INFOSET', 2);
1.13327 +}
1.13328 +
1.13329 +function $XmlViolationPolicy(this$static, enum$name, enum$ordinal){
1.13330 + $clinit_80();
1.13331 + this$static.name_0 = enum$name;
1.13332 + this$static.ordinal = enum$ordinal;
1.13333 + return this$static;
1.13334 +}
1.13335 +
1.13336 +function getClass_43(){
1.13337 + return Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit;
1.13338 +}
1.13339 +
1.13340 +function XmlViolationPolicy(){
1.13341 +}
1.13342 +
1.13343 +_ = XmlViolationPolicy.prototype = new Enum();
1.13344 +_.getClass$ = getClass_43;
1.13345 +_.typeId$ = 33;
1.13346 +var ALLOW, ALTER_INFOSET, FATAL;
1.13347 +function $clinit_98(){
1.13348 + $clinit_98 = nullMethod;
1.13349 + ISINDEX_PROMPT = $toCharArray('This is a searchable index. Insert your search keywords here: ');
1.13350 + HTML4_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['-//W3C//DTD HTML 4.0 Frameset//EN', '-//W3C//DTD HTML 4.0 Transitional//EN', '-//W3C//DTD HTML 4.0//EN', '-//W3C//DTD HTML 4.01 Frameset//EN', '-//W3C//DTD HTML 4.01 Transitional//EN', '-//W3C//DTD HTML 4.01//EN']);
1.13351 + QUIRKY_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['+//silmaril//dtd html pro v0r11 19970101//', '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', '-//as//dtd html 3.0 aswedit + extensions//', '-//ietf//dtd html 2.0 level 1//', '-//ietf//dtd html 2.0 level 2//', '-//ietf//dtd html 2.0 strict level 1//', '-//ietf//dtd html 2.0 strict level 2//', '-//ietf//dtd html 2.0 strict//', '-//ietf//dtd html 2.0//', '-//ietf//dtd html 2.1e//', '-//ietf//dtd html 3.0//', '-//ietf//dtd html 3.2 final//', '-//ietf//dtd html 3.2//', '-//ietf//dtd html 3//', '-//ietf//dtd html level 0//', '-//ietf//dtd html level 1//', '-//ietf//dtd html level 2//', '-//ietf//dtd html level 3//', '-//ietf//dtd html strict level 0//', '-//ietf//dtd html strict level 1//', '-//ietf//dtd html strict level 2//', '-//ietf//dtd html strict level 3//', '-//ietf//dtd html strict//', '-//ietf//dtd html//', '-//metrius//dtd metrius presentational//', '-//microsoft//dtd internet explorer 2.0 html strict//', '-//microsoft//dtd internet explorer 2.0 html//', '-//microsoft//dtd internet explorer 2.0 tables//', '-//microsoft//dtd internet explorer 3.0 html strict//', '-//microsoft//dtd internet explorer 3.0 html//', '-//microsoft//dtd internet explorer 3.0 tables//', '-//netscape comm. corp.//dtd html//', '-//netscape comm. corp.//dtd strict html//', "-//o'reilly and associates//dtd html 2.0//", "-//o'reilly and associates//dtd html extended 1.0//", "-//o'reilly and associates//dtd html extended relaxed 1.0//", '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', '-//spyglass//dtd html 2.0 extended//', '-//sq//dtd html 2.0 hotmetal + extensions//', '-//sun microsystems corp.//dtd hotjava html//', '-//sun microsystems corp.//dtd hotjava strict html//', '-//w3c//dtd html 3 1995-03-24//', '-//w3c//dtd html 3.2 draft//', '-//w3c//dtd html 3.2 final//', '-//w3c//dtd html 3.2//', '-//w3c//dtd html 3.2s draft//', '-//w3c//dtd html 4.0 frameset//', '-//w3c//dtd html 4.0 transitional//', '-//w3c//dtd html experimental 19960712//', '-//w3c//dtd html experimental 970421//', '-//w3c//dtd w3 html//', '-//w3o//dtd w3 html 3.0//', '-//webtechs//dtd mozilla html 2.0//', '-//webtechs//dtd mozilla html//']);
1.13352 +}
1.13353 +
1.13354 +function $accumulateCharacter(this$static, c){
1.13355 + var newBuf, newLen;
1.13356 + newLen = this$static.charBufferLen + 1;
1.13357 + if (newLen > this$static.charBuffer.length) {
1.13358 + newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
1.13359 + arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
1.13360 + this$static.charBuffer = newBuf;
1.13361 + }
1.13362 + this$static.charBuffer[this$static.charBufferLen] = c;
1.13363 + this$static.charBufferLen = newLen;
1.13364 +}
1.13365 +
1.13366 +function $addAttributesToBody(this$static, attributes){
1.13367 + var body;
1.13368 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13369 + if (this$static.currentPtr >= 1) {
1.13370 + body = this$static.stack[1];
1.13371 + if (body.group == 3) {
1.13372 + $addAttributesToElement(this$static, body.node, attributes);
1.13373 + }
1.13374 + }
1.13375 +}
1.13376 +
1.13377 +function $adoptionAgencyEndTag(this$static, name){
1.13378 + var bookmark, clone, commonAncestor, formattingClone, formattingElt, formattingEltListPos, formattingEltStackPos, furthestBlock, furthestBlockPos, inScope, lastNode, listNode, newNode, node, nodeListPos, nodePos;
1.13379 + $flushCharacters(this$static);
1.13380 + for (;;) {
1.13381 + formattingEltListPos = this$static.listPtr;
1.13382 + while (formattingEltListPos > -1) {
1.13383 + listNode = this$static.listOfActiveFormattingElements[formattingEltListPos];
1.13384 + if (!listNode) {
1.13385 + formattingEltListPos = -1;
1.13386 + break;
1.13387 + }
1.13388 + else if (listNode.name_0 == name) {
1.13389 + break;
1.13390 + }
1.13391 + --formattingEltListPos;
1.13392 + }
1.13393 + if (formattingEltListPos == -1) {
1.13394 + return;
1.13395 + }
1.13396 + formattingElt = this$static.listOfActiveFormattingElements[formattingEltListPos];
1.13397 + formattingEltStackPos = this$static.currentPtr;
1.13398 + inScope = true;
1.13399 + while (formattingEltStackPos > -1) {
1.13400 + node = this$static.stack[formattingEltStackPos];
1.13401 + if (node == formattingElt) {
1.13402 + break;
1.13403 + }
1.13404 + else if (node.scoping) {
1.13405 + inScope = false;
1.13406 + }
1.13407 + --formattingEltStackPos;
1.13408 + }
1.13409 + if (formattingEltStackPos == -1) {
1.13410 + $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
1.13411 + return;
1.13412 + }
1.13413 + if (!inScope) {
1.13414 + return;
1.13415 + }
1.13416 + furthestBlockPos = formattingEltStackPos + 1;
1.13417 + while (furthestBlockPos <= this$static.currentPtr) {
1.13418 + node = this$static.stack[furthestBlockPos];
1.13419 + if (node.scoping || node.special) {
1.13420 + break;
1.13421 + }
1.13422 + ++furthestBlockPos;
1.13423 + }
1.13424 + if (furthestBlockPos > this$static.currentPtr) {
1.13425 + while (this$static.currentPtr >= formattingEltStackPos) {
1.13426 + $pop(this$static);
1.13427 + }
1.13428 + $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
1.13429 + return;
1.13430 + }
1.13431 + commonAncestor = this$static.stack[formattingEltStackPos - 1];
1.13432 + furthestBlock = this$static.stack[furthestBlockPos];
1.13433 + bookmark = formattingEltListPos;
1.13434 + nodePos = furthestBlockPos;
1.13435 + lastNode = furthestBlock;
1.13436 + for (;;) {
1.13437 + --nodePos;
1.13438 + node = this$static.stack[nodePos];
1.13439 + nodeListPos = $findInListOfActiveFormattingElements(this$static, node);
1.13440 + if (nodeListPos == -1) {
1.13441 + $removeFromStack(this$static, nodePos);
1.13442 + --furthestBlockPos;
1.13443 + continue;
1.13444 + }
1.13445 + if (nodePos == formattingEltStackPos) {
1.13446 + break;
1.13447 + }
1.13448 + if (nodePos == furthestBlockPos) {
1.13449 + bookmark = nodeListPos + 1;
1.13450 + }
1.13451 + clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', node.name_0, $cloneAttributes(node.attributes));
1.13452 + newNode = $StackNode(new StackNode(), node.group, node.ns, node.name_0, clone, node.scoping, node.special, node.fosterParenting, node.popName, node.attributes);
1.13453 + node.attributes = null;
1.13454 + this$static.stack[nodePos] = newNode;
1.13455 + ++newNode.refcount;
1.13456 + this$static.listOfActiveFormattingElements[nodeListPos] = newNode;
1.13457 + --node.refcount;
1.13458 + --node.refcount;
1.13459 + node = newNode;
1.13460 + $detachFromParent(this$static, lastNode.node);
1.13461 + $appendElement(this$static, lastNode.node, node.node);
1.13462 + lastNode = node;
1.13463 + }
1.13464 + if (commonAncestor.fosterParenting) {
1.13465 + $detachFromParent(this$static, lastNode.node);
1.13466 + $insertIntoFosterParent(this$static, lastNode.node);
1.13467 + }
1.13468 + else {
1.13469 + $detachFromParent(this$static, lastNode.node);
1.13470 + $appendElement(this$static, lastNode.node, commonAncestor.node);
1.13471 + }
1.13472 + clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', formattingElt.name_0, $cloneAttributes(formattingElt.attributes));
1.13473 + formattingClone = $StackNode(new StackNode(), formattingElt.group, formattingElt.ns, formattingElt.name_0, clone, formattingElt.scoping, formattingElt.special, formattingElt.fosterParenting, formattingElt.popName, formattingElt.attributes);
1.13474 + formattingElt.attributes = null;
1.13475 + $appendChildrenToNewParent(this$static, furthestBlock.node, clone);
1.13476 + $appendElement(this$static, clone, furthestBlock.node);
1.13477 + $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
1.13478 + $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark);
1.13479 + $removeFromStack(this$static, formattingEltStackPos);
1.13480 + $insertIntoStack(this$static, formattingClone, furthestBlockPos);
1.13481 + }
1.13482 +}
1.13483 +
1.13484 +function $append_1(this$static, node){
1.13485 + var newList;
1.13486 + ++this$static.listPtr;
1.13487 + if (this$static.listPtr == this$static.listOfActiveFormattingElements.length) {
1.13488 + newList = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.listOfActiveFormattingElements.length + 64, 0);
1.13489 + arraycopy(this$static.listOfActiveFormattingElements, 0, newList, 0, this$static.listOfActiveFormattingElements.length);
1.13490 + this$static.listOfActiveFormattingElements = newList;
1.13491 + }
1.13492 + this$static.listOfActiveFormattingElements[this$static.listPtr] = node;
1.13493 +}
1.13494 +
1.13495 +function $appendHtmlElementToDocumentAndPush(this$static, attributes){
1.13496 + var elt, node;
1.13497 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13498 + elt = $createHtmlElementSetAsRoot(this$static, attributes);
1.13499 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
1.13500 + $push_0(this$static, node);
1.13501 +}
1.13502 +
1.13503 +function $appendToCurrentNodeAndPushElement(this$static, ns, elementName, attributes){
1.13504 + var elt, node;
1.13505 + $flushCharacters(this$static);
1.13506 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13507 + elt = $createElement(this$static, ns, elementName.name_0, attributes);
1.13508 + $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
1.13509 + node = $StackNode_0(new StackNode(), ns, elementName, elt);
1.13510 + $push_0(this$static, node);
1.13511 +}
1.13512 +
1.13513 +function $appendToCurrentNodeAndPushElementMayFoster(this$static, ns, elementName, attributes){
1.13514 + var current, elt, node, popName;
1.13515 + $flushCharacters(this$static);
1.13516 + popName = elementName.name_0;
1.13517 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13518 + if (elementName.custom) {
1.13519 + popName = $checkPopName(this$static, popName);
1.13520 + }
1.13521 + elt = $createElement(this$static, ns, popName, attributes);
1.13522 + current = this$static.stack[this$static.currentPtr];
1.13523 + if (current.fosterParenting) {
1.13524 + $insertIntoFosterParent(this$static, elt);
1.13525 + }
1.13526 + else {
1.13527 + $appendElement(this$static, elt, current.node);
1.13528 + }
1.13529 + node = $StackNode_1(new StackNode(), ns, elementName, elt, popName);
1.13530 + $push_0(this$static, node);
1.13531 +}
1.13532 +
1.13533 +function $appendToCurrentNodeAndPushElementMayFoster_0(this$static, ns, elementName, attributes){
1.13534 + var current, elt, node;
1.13535 + $flushCharacters(this$static);
1.13536 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13537 + elt = $createElement_0(this$static, ns, elementName.name_0, attributes);
1.13538 + current = this$static.stack[this$static.currentPtr];
1.13539 + if (current.fosterParenting) {
1.13540 + $insertIntoFosterParent(this$static, elt);
1.13541 + }
1.13542 + else {
1.13543 + $appendElement(this$static, elt, current.node);
1.13544 + }
1.13545 + node = $StackNode_0(new StackNode(), ns, elementName, elt);
1.13546 + $push_0(this$static, node);
1.13547 +}
1.13548 +
1.13549 +function $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, ns, elementName, attributes){
1.13550 + var current, elt, node, popName;
1.13551 + $flushCharacters(this$static);
1.13552 + popName = elementName.camelCaseName;
1.13553 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13554 + if (elementName.custom) {
1.13555 + popName = $checkPopName(this$static, popName);
1.13556 + }
1.13557 + elt = $createElement(this$static, ns, popName, attributes);
1.13558 + current = this$static.stack[this$static.currentPtr];
1.13559 + if (current.fosterParenting) {
1.13560 + $insertIntoFosterParent(this$static, elt);
1.13561 + }
1.13562 + else {
1.13563 + $appendElement(this$static, elt, current.node);
1.13564 + }
1.13565 + node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, ($clinit_89() , FOREIGNOBJECT) == elementName);
1.13566 + $push_0(this$static, node);
1.13567 +}
1.13568 +
1.13569 +function $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, ns, elementName, attributes){
1.13570 + var current, elt, node, popName;
1.13571 + $flushCharacters(this$static);
1.13572 + popName = elementName.name_0;
1.13573 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13574 + if (elementName.custom) {
1.13575 + popName = $checkPopName(this$static, popName);
1.13576 + }
1.13577 + elt = $createElement(this$static, ns, popName, attributes);
1.13578 + current = this$static.stack[this$static.currentPtr];
1.13579 + if (current.fosterParenting) {
1.13580 + $insertIntoFosterParent(this$static, elt);
1.13581 + }
1.13582 + else {
1.13583 + $appendElement(this$static, elt, current.node);
1.13584 + }
1.13585 + node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, false);
1.13586 + $push_0(this$static, node);
1.13587 +}
1.13588 +
1.13589 +function $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes){
1.13590 + var current, elt, node;
1.13591 + $flushCharacters(this$static);
1.13592 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13593 + elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'form', attributes);
1.13594 + this$static.formPointer = elt;
1.13595 + current = this$static.stack[this$static.currentPtr];
1.13596 + if (current.fosterParenting) {
1.13597 + $insertIntoFosterParent(this$static, elt);
1.13598 + }
1.13599 + else {
1.13600 + $appendElement(this$static, elt, current.node);
1.13601 + }
1.13602 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , FORM_0), elt);
1.13603 + $push_0(this$static, node);
1.13604 +}
1.13605 +
1.13606 +function $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, ns, elementName, attributes){
1.13607 + var current, elt, node;
1.13608 + $flushCharacters(this$static);
1.13609 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13610 + elt = $createElement(this$static, ns, elementName.name_0, attributes);
1.13611 + current = this$static.stack[this$static.currentPtr];
1.13612 + if (current.fosterParenting) {
1.13613 + $insertIntoFosterParent(this$static, elt);
1.13614 + }
1.13615 + else {
1.13616 + $appendElement(this$static, elt, current.node);
1.13617 + }
1.13618 + node = $StackNode_3(new StackNode(), ns, elementName, elt, $cloneAttributes(attributes));
1.13619 + $push_0(this$static, node);
1.13620 + $append_1(this$static, node);
1.13621 + ++node.refcount;
1.13622 +}
1.13623 +
1.13624 +function $appendToCurrentNodeAndPushHeadElement(this$static, attributes){
1.13625 + var elt, node;
1.13626 + $flushCharacters(this$static);
1.13627 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13628 + elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'head', attributes);
1.13629 + $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
1.13630 + this$static.headPointer = elt;
1.13631 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), elt);
1.13632 + $push_0(this$static, node);
1.13633 +}
1.13634 +
1.13635 +function $appendVoidElementToCurrentMayFoster(this$static, ns, name, attributes){
1.13636 + var current, elt;
1.13637 + $flushCharacters(this$static);
1.13638 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13639 + elt = $createElement_0(this$static, ns, name, attributes);
1.13640 + current = this$static.stack[this$static.currentPtr];
1.13641 + if (current.fosterParenting) {
1.13642 + $insertIntoFosterParent(this$static, elt);
1.13643 + }
1.13644 + else {
1.13645 + $appendElement(this$static, elt, current.node);
1.13646 + }
1.13647 + $elementPopped(this$static, ns, name, elt);
1.13648 +}
1.13649 +
1.13650 +function $appendVoidElementToCurrentMayFoster_0(this$static, ns, elementName, attributes){
1.13651 + var current, elt, popName;
1.13652 + $flushCharacters(this$static);
1.13653 + popName = elementName.name_0;
1.13654 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13655 + if (elementName.custom) {
1.13656 + popName = $checkPopName(this$static, popName);
1.13657 + }
1.13658 + elt = $createElement(this$static, ns, popName, attributes);
1.13659 + current = this$static.stack[this$static.currentPtr];
1.13660 + if (current.fosterParenting) {
1.13661 + $insertIntoFosterParent(this$static, elt);
1.13662 + }
1.13663 + else {
1.13664 + $appendElement(this$static, elt, current.node);
1.13665 + }
1.13666 + $elementPopped(this$static, ns, popName, elt);
1.13667 +}
1.13668 +
1.13669 +function $appendVoidElementToCurrentMayFosterCamelCase(this$static, ns, elementName, attributes){
1.13670 + var current, elt, popName;
1.13671 + $flushCharacters(this$static);
1.13672 + popName = elementName.camelCaseName;
1.13673 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.13674 + if (elementName.custom) {
1.13675 + popName = $checkPopName(this$static, popName);
1.13676 + }
1.13677 + elt = $createElement(this$static, ns, popName, attributes);
1.13678 + current = this$static.stack[this$static.currentPtr];
1.13679 + if (current.fosterParenting) {
1.13680 + $insertIntoFosterParent(this$static, elt);
1.13681 + }
1.13682 + else {
1.13683 + $appendElement(this$static, elt, current.node);
1.13684 + }
1.13685 + $elementPopped(this$static, ns, popName, elt);
1.13686 +}
1.13687 +
1.13688 +function $charBufferContainsNonWhitespace(this$static){
1.13689 + var i;
1.13690 + for (i = 0; i < this$static.charBufferLen; ++i) {
1.13691 + switch (this$static.charBuffer[i]) {
1.13692 + case 32:
1.13693 + case 9:
1.13694 + case 10:
1.13695 + case 12:
1.13696 + continue;
1.13697 + default:return true;
1.13698 + }
1.13699 + }
1.13700 + return false;
1.13701 +}
1.13702 +
1.13703 +function $characters(this$static, buf, start, length){
1.13704 + var end, i;
1.13705 + if (this$static.needToDropLF) {
1.13706 + if (buf[start] == 10) {
1.13707 + ++start;
1.13708 + --length;
1.13709 + if (length == 0) {
1.13710 + return;
1.13711 + }
1.13712 + }
1.13713 + this$static.needToDropLF = false;
1.13714 + }
1.13715 + switch (this$static.mode) {
1.13716 + case 6:
1.13717 + case 12:
1.13718 + case 8:
1.13719 + $reconstructTheActiveFormattingElements(this$static);
1.13720 + case 20:
1.13721 + $accumulateCharacters(this$static, buf, start, length);
1.13722 + return;
1.13723 + default:end = start + length;
1.13724 + charactersloop: for (i = start; i < end; ++i) {
1.13725 + switch (buf[i]) {
1.13726 + case 32:
1.13727 + case 9:
1.13728 + case 10:
1.13729 + case 12:
1.13730 + switch (this$static.mode) {
1.13731 + case 0:
1.13732 + case 1:
1.13733 + case 2:
1.13734 + start = i + 1;
1.13735 + continue;
1.13736 + case 21:
1.13737 + case 3:
1.13738 + case 4:
1.13739 + case 5:
1.13740 + case 9:
1.13741 + case 16:
1.13742 + case 17:
1.13743 + continue;
1.13744 + case 6:
1.13745 + case 12:
1.13746 + case 8:
1.13747 + if (start < i) {
1.13748 + $accumulateCharacters(this$static, buf, start, i - start);
1.13749 + start = i;
1.13750 + }
1.13751 +
1.13752 + $reconstructTheActiveFormattingElements(this$static);
1.13753 + break charactersloop;
1.13754 + case 7:
1.13755 + case 10:
1.13756 + case 11:
1.13757 + $reconstructTheActiveFormattingElements(this$static);
1.13758 + $accumulateCharacter(this$static, buf[i]);
1.13759 + start = i + 1;
1.13760 + continue;
1.13761 + case 15:
1.13762 + if (start < i) {
1.13763 + $accumulateCharacters(this$static, buf, start, i - start);
1.13764 + start = i;
1.13765 + }
1.13766 +
1.13767 + $reconstructTheActiveFormattingElements(this$static);
1.13768 + continue;
1.13769 + case 18:
1.13770 + case 19:
1.13771 + if (start < i) {
1.13772 + $accumulateCharacters(this$static, buf, start, i - start);
1.13773 + start = i;
1.13774 + }
1.13775 +
1.13776 + $reconstructTheActiveFormattingElements(this$static);
1.13777 + continue;
1.13778 + }
1.13779 +
1.13780 + default:switch (this$static.mode) {
1.13781 + case 0:
1.13782 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.13783 + this$static.mode = 1;
1.13784 + --i;
1.13785 + continue;
1.13786 + case 1:
1.13787 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
1.13788 + this$static.mode = 2;
1.13789 + --i;
1.13790 + continue;
1.13791 + case 2:
1.13792 + if (start < i) {
1.13793 + $accumulateCharacters(this$static, buf, start, i - start);
1.13794 + start = i;
1.13795 + }
1.13796 +
1.13797 + $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
1.13798 + this$static.mode = 3;
1.13799 + --i;
1.13800 + continue;
1.13801 + case 3:
1.13802 + if (start < i) {
1.13803 + $accumulateCharacters(this$static, buf, start, i - start);
1.13804 + start = i;
1.13805 + }
1.13806 +
1.13807 + $pop(this$static);
1.13808 + this$static.mode = 5;
1.13809 + --i;
1.13810 + continue;
1.13811 + case 4:
1.13812 + if (start < i) {
1.13813 + $accumulateCharacters(this$static, buf, start, i - start);
1.13814 + start = i;
1.13815 + }
1.13816 +
1.13817 + $pop(this$static);
1.13818 + this$static.mode = 3;
1.13819 + --i;
1.13820 + continue;
1.13821 + case 5:
1.13822 + if (start < i) {
1.13823 + $accumulateCharacters(this$static, buf, start, i - start);
1.13824 + start = i;
1.13825 + }
1.13826 +
1.13827 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
1.13828 + this$static.mode = 21;
1.13829 + --i;
1.13830 + continue;
1.13831 + case 21:
1.13832 + this$static.mode = 6;
1.13833 + --i;
1.13834 + continue;
1.13835 + case 6:
1.13836 + case 12:
1.13837 + case 8:
1.13838 + if (start < i) {
1.13839 + $accumulateCharacters(this$static, buf, start, i - start);
1.13840 + start = i;
1.13841 + }
1.13842 +
1.13843 + $reconstructTheActiveFormattingElements(this$static);
1.13844 + break charactersloop;
1.13845 + case 7:
1.13846 + case 10:
1.13847 + case 11:
1.13848 + $reconstructTheActiveFormattingElements(this$static);
1.13849 + $accumulateCharacter(this$static, buf[i]);
1.13850 + start = i + 1;
1.13851 + continue;
1.13852 + case 9:
1.13853 + if (start < i) {
1.13854 + $accumulateCharacters(this$static, buf, start, i - start);
1.13855 + start = i;
1.13856 + }
1.13857 +
1.13858 + if (this$static.currentPtr == 0) {
1.13859 + start = i + 1;
1.13860 + continue;
1.13861 + }
1.13862 +
1.13863 + $pop(this$static);
1.13864 + this$static.mode = 7;
1.13865 + --i;
1.13866 + continue;
1.13867 + break charactersloop;
1.13868 + case 15:
1.13869 + this$static.mode = 6;
1.13870 + --i;
1.13871 + continue;
1.13872 + case 16:
1.13873 + if (start < i) {
1.13874 + $accumulateCharacters(this$static, buf, start, i - start);
1.13875 + start = i;
1.13876 + }
1.13877 +
1.13878 + start = i + 1;
1.13879 + continue;
1.13880 + case 17:
1.13881 + if (start < i) {
1.13882 + $accumulateCharacters(this$static, buf, start, i - start);
1.13883 + start = i;
1.13884 + }
1.13885 +
1.13886 + start = i + 1;
1.13887 + continue;
1.13888 + case 18:
1.13889 + this$static.mode = 6;
1.13890 + --i;
1.13891 + continue;
1.13892 + case 19:
1.13893 + this$static.mode = 16;
1.13894 + --i;
1.13895 + continue;
1.13896 + }
1.13897 +
1.13898 + }
1.13899 + }
1.13900 +
1.13901 + if (start < end) {
1.13902 + $accumulateCharacters(this$static, buf, start, end - start);
1.13903 + }
1.13904 +
1.13905 + }
1.13906 +}
1.13907 +
1.13908 +function $checkMetaCharset(this$static, attributes){
1.13909 + var content, internalCharsetHtml5, internalCharsetLegacy;
1.13910 + content = $getValue_0(attributes, ($clinit_87() , CONTENT));
1.13911 + internalCharsetLegacy = null;
1.13912 + if (content != null) {
1.13913 + internalCharsetLegacy = extractCharsetFromContent(content);
1.13914 + }
1.13915 + if (internalCharsetLegacy == null) {
1.13916 + internalCharsetHtml5 = $getValue_0(attributes, CHARSET);
1.13917 + if (internalCharsetHtml5 != null) {
1.13918 + this$static.tokenizer.shouldSuspend = true;
1.13919 + }
1.13920 + }
1.13921 + else {
1.13922 + this$static.tokenizer.shouldSuspend = true;
1.13923 + }
1.13924 +}
1.13925 +
1.13926 +function $checkPopName(this$static, name){
1.13927 + if (isNCName(name)) {
1.13928 + return name;
1.13929 + }
1.13930 + else {
1.13931 + switch (this$static.namePolicy.ordinal) {
1.13932 + case 0:
1.13933 + return name;
1.13934 + case 2:
1.13935 + return escapeName(name);
1.13936 + case 1:
1.13937 + $fatal_1(this$static, 'Element name \u201C' + name + '\u201D cannot be represented as XML 1.0.');
1.13938 + }
1.13939 + }
1.13940 + return null;
1.13941 +}
1.13942 +
1.13943 +function $clearStackBackTo(this$static, eltPos){
1.13944 + while (this$static.currentPtr > eltPos) {
1.13945 + $pop(this$static);
1.13946 + }
1.13947 +}
1.13948 +
1.13949 +function $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static){
1.13950 + while (this$static.listPtr > -1) {
1.13951 + if (!this$static.listOfActiveFormattingElements[this$static.listPtr]) {
1.13952 + --this$static.listPtr;
1.13953 + return;
1.13954 + }
1.13955 + --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
1.13956 + --this$static.listPtr;
1.13957 + }
1.13958 +}
1.13959 +
1.13960 +function $closeTheCell(this$static, eltPos){
1.13961 + $generateImpliedEndTags(this$static);
1.13962 + while (this$static.currentPtr >= eltPos) {
1.13963 + $pop(this$static);
1.13964 + }
1.13965 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
1.13966 + this$static.mode = 11;
1.13967 + return;
1.13968 +}
1.13969 +
1.13970 +function $comment(this$static, buf, start, length){
1.13971 + var end, end_0, end_1;
1.13972 + this$static.needToDropLF = false;
1.13973 + if (!this$static.wantingComments) {
1.13974 + return;
1.13975 + }
1.13976 + commentloop: for (;;) {
1.13977 + switch (this$static.foreignFlag) {
1.13978 + case 0:
1.13979 + break commentloop;
1.13980 + default:switch (this$static.mode) {
1.13981 + case 0:
1.13982 + case 1:
1.13983 + case 18:
1.13984 + case 19:
1.13985 + $appendCommentToDocument(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)));
1.13986 + return;
1.13987 + case 15:
1.13988 + $flushCharacters(this$static);
1.13989 + $appendComment(this$static, this$static.stack[0].node, (end_0 = start + length , __checkBounds(buf.length, start, end_0) , __valueOf(buf, start, end_0)));
1.13990 + return;
1.13991 + default:break commentloop;
1.13992 + }
1.13993 +
1.13994 + }
1.13995 + }
1.13996 + $flushCharacters(this$static);
1.13997 + $appendComment(this$static, this$static.stack[this$static.currentPtr].node, (end_1 = start + length , __checkBounds(buf.length, start, end_1) , __valueOf(buf, start, end_1)));
1.13998 + return;
1.13999 +}
1.14000 +
1.14001 +function $doctype(this$static, name, publicIdentifier, systemIdentifier, forceQuirks){
1.14002 + this$static.needToDropLF = false;
1.14003 + doctypeloop: for (;;) {
1.14004 + switch (this$static.foreignFlag) {
1.14005 + case 0:
1.14006 + break doctypeloop;
1.14007 + default:switch (this$static.mode) {
1.14008 + case 0:
1.14009 + switch (this$static.doctypeExpectation.ordinal) {
1.14010 + case 0:
1.14011 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
1.14012 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.14013 + }
1.14014 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
1.14015 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
1.14016 + }
1.14017 + else {
1.14018 + if ($equals_0('-//W3C//DTD HTML 4.0//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/REC-html40/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD XHTML 1.0 Strict//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', systemIdentifier) || $equals_0('-//W3C//DTD XHTML 1.1//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd', systemIdentifier)) {
1.14019 + }
1.14020 + else
1.14021 + !((systemIdentifier == null || $equals_0('about:legacy-compat', systemIdentifier)) && publicIdentifier == null);
1.14022 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
1.14023 + }
1.14024 +
1.14025 + break;
1.14026 + case 2:
1.14027 + this$static.html4 = true;
1.14028 + this$static.tokenizer.html4 = true;
1.14029 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
1.14030 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.14031 + }
1.14032 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
1.14033 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
1.14034 + }
1.14035 + else {
1.14036 + if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
1.14037 + !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
1.14038 + }
1.14039 + else {
1.14040 + }
1.14041 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
1.14042 + }
1.14043 +
1.14044 + break;
1.14045 + case 1:
1.14046 + this$static.html4 = true;
1.14047 + this$static.tokenizer.html4 = true;
1.14048 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
1.14049 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.14050 + }
1.14051 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
1.14052 + if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier) && systemIdentifier != null) {
1.14053 + !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
1.14054 + }
1.14055 + else {
1.14056 + }
1.14057 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
1.14058 + }
1.14059 + else {
1.14060 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
1.14061 + }
1.14062 +
1.14063 + break;
1.14064 + case 3:
1.14065 + this$static.html4 = $isHtml4Doctype(publicIdentifier);
1.14066 + if (this$static.html4) {
1.14067 + this$static.tokenizer.html4 = true;
1.14068 + }
1.14069 +
1.14070 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
1.14071 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.14072 + }
1.14073 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
1.14074 + if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier)) {
1.14075 + !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
1.14076 + }
1.14077 + else {
1.14078 + }
1.14079 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
1.14080 + }
1.14081 + else {
1.14082 + if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
1.14083 + !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
1.14084 + }
1.14085 + else {
1.14086 + }
1.14087 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
1.14088 + }
1.14089 +
1.14090 + break;
1.14091 + case 4:
1.14092 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
1.14093 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.14094 + }
1.14095 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
1.14096 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
1.14097 + }
1.14098 + else {
1.14099 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
1.14100 + }
1.14101 +
1.14102 + }
1.14103 +
1.14104 + this$static.mode = 1;
1.14105 + return;
1.14106 + default:break doctypeloop;
1.14107 + }
1.14108 +
1.14109 + }
1.14110 + }
1.14111 + return;
1.14112 +}
1.14113 +
1.14114 +function $documentModeInternal(this$static, m){
1.14115 + this$static.quirks = m == ($clinit_78() , QUIRKS_MODE);
1.14116 +}
1.14117 +
1.14118 +function $endSelect(this$static){
1.14119 + var eltPos;
1.14120 + eltPos = $findLastInTableScope(this$static, 'select');
1.14121 + if (eltPos == 2147483647) {
1.14122 + return;
1.14123 + }
1.14124 + while (this$static.currentPtr >= eltPos) {
1.14125 + $pop(this$static);
1.14126 + }
1.14127 + $resetTheInsertionMode(this$static);
1.14128 +}
1.14129 +
1.14130 +function $endTag(this$static, elementName){
1.14131 + var eltPos, group, name, node;
1.14132 + this$static.needToDropLF = false;
1.14133 + endtagloop: for (;;) {
1.14134 + group = elementName.group;
1.14135 + name = elementName.name_0;
1.14136 + switch (this$static.mode) {
1.14137 + case 11:
1.14138 + switch (group) {
1.14139 + case 37:
1.14140 + eltPos = $findLastOrRoot(this$static, 37);
1.14141 + if (eltPos == 0) {
1.14142 + break endtagloop;
1.14143 + }
1.14144 +
1.14145 + $clearStackBackTo(this$static, eltPos);
1.14146 + $pop(this$static);
1.14147 + this$static.mode = 10;
1.14148 + break endtagloop;
1.14149 + case 34:
1.14150 + eltPos = $findLastOrRoot(this$static, 37);
1.14151 + if (eltPos == 0) {
1.14152 + break endtagloop;
1.14153 + }
1.14154 +
1.14155 + $clearStackBackTo(this$static, eltPos);
1.14156 + $pop(this$static);
1.14157 + this$static.mode = 10;
1.14158 + continue;
1.14159 + case 39:
1.14160 + if ($findLastInTableScope(this$static, name) == 2147483647) {
1.14161 + break endtagloop;
1.14162 + }
1.14163 +
1.14164 + eltPos = $findLastOrRoot(this$static, 37);
1.14165 + if (eltPos == 0) {
1.14166 + break endtagloop;
1.14167 + }
1.14168 +
1.14169 + $clearStackBackTo(this$static, eltPos);
1.14170 + $pop(this$static);
1.14171 + this$static.mode = 10;
1.14172 + continue;
1.14173 + break endtagloop;
1.14174 + }
1.14175 +
1.14176 + case 10:
1.14177 + switch (group) {
1.14178 + case 39:
1.14179 + eltPos = $findLastOrRoot_0(this$static, name);
1.14180 + if (eltPos == 0) {
1.14181 + break endtagloop;
1.14182 + }
1.14183 +
1.14184 + $clearStackBackTo(this$static, eltPos);
1.14185 + $pop(this$static);
1.14186 + this$static.mode = 7;
1.14187 + break endtagloop;
1.14188 + case 34:
1.14189 + eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
1.14190 + if (eltPos == 0) {
1.14191 + break endtagloop;
1.14192 + }
1.14193 +
1.14194 + $clearStackBackTo(this$static, eltPos);
1.14195 + $pop(this$static);
1.14196 + this$static.mode = 7;
1.14197 + continue;
1.14198 + break endtagloop;
1.14199 + }
1.14200 +
1.14201 + case 7:
1.14202 + switch (group) {
1.14203 + case 34:
1.14204 + eltPos = $findLast(this$static, 'table');
1.14205 + if (eltPos == 2147483647) {
1.14206 + break endtagloop;
1.14207 + }
1.14208 +
1.14209 + while (this$static.currentPtr >= eltPos) {
1.14210 + $pop(this$static);
1.14211 + }
1.14212 +
1.14213 + $resetTheInsertionMode(this$static);
1.14214 + break endtagloop;
1.14215 + }
1.14216 +
1.14217 + case 8:
1.14218 + switch (group) {
1.14219 + case 6:
1.14220 + eltPos = $findLastInTableScope(this$static, 'caption');
1.14221 + if (eltPos == 2147483647) {
1.14222 + break endtagloop;
1.14223 + }
1.14224 +
1.14225 + $generateImpliedEndTags(this$static);
1.14226 + while (this$static.currentPtr >= eltPos) {
1.14227 + $pop(this$static);
1.14228 + }
1.14229 +
1.14230 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
1.14231 + this$static.mode = 7;
1.14232 + break endtagloop;
1.14233 + case 34:
1.14234 + eltPos = $findLastInTableScope(this$static, 'caption');
1.14235 + if (eltPos == 2147483647) {
1.14236 + break endtagloop;
1.14237 + }
1.14238 +
1.14239 + $generateImpliedEndTags(this$static);
1.14240 + while (this$static.currentPtr >= eltPos) {
1.14241 + $pop(this$static);
1.14242 + }
1.14243 +
1.14244 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
1.14245 + this$static.mode = 7;
1.14246 + continue;
1.14247 + break endtagloop;
1.14248 + }
1.14249 +
1.14250 + case 12:
1.14251 + switch (group) {
1.14252 + case 40:
1.14253 + eltPos = $findLastInTableScope(this$static, name);
1.14254 + if (eltPos == 2147483647) {
1.14255 + break endtagloop;
1.14256 + }
1.14257 +
1.14258 + $generateImpliedEndTags(this$static);
1.14259 + while (this$static.currentPtr >= eltPos) {
1.14260 + $pop(this$static);
1.14261 + }
1.14262 +
1.14263 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
1.14264 + this$static.mode = 11;
1.14265 + break endtagloop;
1.14266 + case 34:
1.14267 + case 39:
1.14268 + case 37:
1.14269 + if ($findLastInTableScope(this$static, name) == 2147483647) {
1.14270 + break endtagloop;
1.14271 + }
1.14272 +
1.14273 + $closeTheCell(this$static, $findLastInTableScopeTdTh(this$static));
1.14274 + continue;
1.14275 + break endtagloop;
1.14276 + }
1.14277 +
1.14278 + case 21:
1.14279 + case 6:
1.14280 + switch (group) {
1.14281 + case 3:
1.14282 + if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
1.14283 + break endtagloop;
1.14284 + }
1.14285 +
1.14286 + this$static.mode = 15;
1.14287 + break endtagloop;
1.14288 + case 23:
1.14289 + if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
1.14290 + break endtagloop;
1.14291 + }
1.14292 +
1.14293 + this$static.mode = 15;
1.14294 + continue;
1.14295 + case 50:
1.14296 + case 46:
1.14297 + case 44:
1.14298 + case 61:
1.14299 + case 51:
1.14300 + eltPos = $findLastInScope(this$static, name);
1.14301 + if (eltPos == 2147483647) {
1.14302 + }
1.14303 + else {
1.14304 + $generateImpliedEndTags(this$static);
1.14305 + while (this$static.currentPtr >= eltPos) {
1.14306 + $pop(this$static);
1.14307 + }
1.14308 + }
1.14309 +
1.14310 + break endtagloop;
1.14311 + case 9:
1.14312 + if (!this$static.formPointer) {
1.14313 + break endtagloop;
1.14314 + }
1.14315 +
1.14316 + this$static.formPointer = null;
1.14317 + eltPos = $findLastInScope(this$static, name);
1.14318 + if (eltPos == 2147483647) {
1.14319 + break endtagloop;
1.14320 + }
1.14321 +
1.14322 + $generateImpliedEndTags(this$static);
1.14323 + $removeFromStack(this$static, eltPos);
1.14324 + break endtagloop;
1.14325 + case 29:
1.14326 + eltPos = $findLastInScope(this$static, 'p');
1.14327 + if (eltPos == 2147483647) {
1.14328 + if (this$static.foreignFlag == 0) {
1.14329 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
1.14330 + $pop(this$static);
1.14331 + }
1.14332 + this$static.foreignFlag = 1;
1.14333 + }
1.14334 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
1.14335 + break endtagloop;
1.14336 + }
1.14337 +
1.14338 + $generateImpliedEndTagsExceptFor(this$static, 'p');
1.14339 + while (this$static.currentPtr >= eltPos) {
1.14340 + $pop(this$static);
1.14341 + }
1.14342 +
1.14343 + break endtagloop;
1.14344 + case 41:
1.14345 + case 15:
1.14346 + eltPos = $findLastInScope(this$static, name);
1.14347 + if (eltPos == 2147483647) {
1.14348 + }
1.14349 + else {
1.14350 + $generateImpliedEndTagsExceptFor(this$static, name);
1.14351 + while (this$static.currentPtr >= eltPos) {
1.14352 + $pop(this$static);
1.14353 + }
1.14354 + }
1.14355 +
1.14356 + break endtagloop;
1.14357 + case 42:
1.14358 + eltPos = $findLastInScopeHn(this$static);
1.14359 + if (eltPos == 2147483647) {
1.14360 + }
1.14361 + else {
1.14362 + $generateImpliedEndTags(this$static);
1.14363 + while (this$static.currentPtr >= eltPos) {
1.14364 + $pop(this$static);
1.14365 + }
1.14366 + }
1.14367 +
1.14368 + break endtagloop;
1.14369 + case 1:
1.14370 + case 45:
1.14371 + case 64:
1.14372 + case 24:
1.14373 + $adoptionAgencyEndTag(this$static, name);
1.14374 + break endtagloop;
1.14375 + case 5:
1.14376 + case 63:
1.14377 + case 43:
1.14378 + eltPos = $findLastInScope(this$static, name);
1.14379 + if (eltPos == 2147483647) {
1.14380 + }
1.14381 + else {
1.14382 + $generateImpliedEndTags(this$static);
1.14383 + while (this$static.currentPtr >= eltPos) {
1.14384 + $pop(this$static);
1.14385 + }
1.14386 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
1.14387 + }
1.14388 +
1.14389 + break endtagloop;
1.14390 + case 4:
1.14391 + if (this$static.foreignFlag == 0) {
1.14392 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
1.14393 + $pop(this$static);
1.14394 + }
1.14395 + this$static.foreignFlag = 1;
1.14396 + }
1.14397 +
1.14398 + $reconstructTheActiveFormattingElements(this$static);
1.14399 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
1.14400 + break endtagloop;
1.14401 + case 49:
1.14402 + case 55:
1.14403 + case 48:
1.14404 + case 12:
1.14405 + case 13:
1.14406 + case 65:
1.14407 + case 22:
1.14408 + case 14:
1.14409 + case 47:
1.14410 + case 60:
1.14411 + case 25:
1.14412 + case 32:
1.14413 + case 34:
1.14414 + case 35:
1.14415 + break endtagloop;
1.14416 + case 26:
1.14417 + default:if (name == this$static.stack[this$static.currentPtr].name_0) {
1.14418 + $pop(this$static);
1.14419 + break endtagloop;
1.14420 + }
1.14421 +
1.14422 + eltPos = this$static.currentPtr;
1.14423 + for (;;) {
1.14424 + node = this$static.stack[eltPos];
1.14425 + if (node.name_0 == name) {
1.14426 + $generateImpliedEndTags(this$static);
1.14427 + while (this$static.currentPtr >= eltPos) {
1.14428 + $pop(this$static);
1.14429 + }
1.14430 + break endtagloop;
1.14431 + }
1.14432 + else if (node.scoping || node.special) {
1.14433 + break endtagloop;
1.14434 + }
1.14435 + --eltPos;
1.14436 + }
1.14437 +
1.14438 + }
1.14439 +
1.14440 + case 9:
1.14441 + switch (group) {
1.14442 + case 8:
1.14443 + if (this$static.currentPtr == 0) {
1.14444 + break endtagloop;
1.14445 + }
1.14446 +
1.14447 + $pop(this$static);
1.14448 + this$static.mode = 7;
1.14449 + break endtagloop;
1.14450 + case 7:
1.14451 + break endtagloop;
1.14452 + default:if (this$static.currentPtr == 0) {
1.14453 + break endtagloop;
1.14454 + }
1.14455 +
1.14456 + $pop(this$static);
1.14457 + this$static.mode = 7;
1.14458 + continue;
1.14459 + }
1.14460 +
1.14461 + case 14:
1.14462 + switch (group) {
1.14463 + case 6:
1.14464 + case 34:
1.14465 + case 39:
1.14466 + case 37:
1.14467 + case 40:
1.14468 + if ($findLastInTableScope(this$static, name) != 2147483647) {
1.14469 + $endSelect(this$static);
1.14470 + continue;
1.14471 + }
1.14472 + else {
1.14473 + break endtagloop;
1.14474 + }
1.14475 +
1.14476 + }
1.14477 +
1.14478 + case 13:
1.14479 + switch (group) {
1.14480 + case 28:
1.14481 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
1.14482 + $pop(this$static);
1.14483 + break endtagloop;
1.14484 + }
1.14485 + else {
1.14486 + break endtagloop;
1.14487 + }
1.14488 +
1.14489 + case 27:
1.14490 + if ('option' == this$static.stack[this$static.currentPtr].name_0 && 'optgroup' == this$static.stack[this$static.currentPtr - 1].name_0) {
1.14491 + $pop(this$static);
1.14492 + }
1.14493 +
1.14494 + if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
1.14495 + $pop(this$static);
1.14496 + }
1.14497 + else {
1.14498 + }
1.14499 +
1.14500 + break endtagloop;
1.14501 + case 32:
1.14502 + $endSelect(this$static);
1.14503 + break endtagloop;
1.14504 + default:break endtagloop;
1.14505 + }
1.14506 +
1.14507 + case 15:
1.14508 + switch (group) {
1.14509 + case 23:
1.14510 + if (this$static.fragment) {
1.14511 + break endtagloop;
1.14512 + }
1.14513 + else {
1.14514 + this$static.mode = 18;
1.14515 + break endtagloop;
1.14516 + }
1.14517 +
1.14518 + default:this$static.mode = 6;
1.14519 + continue;
1.14520 + }
1.14521 +
1.14522 + case 16:
1.14523 + switch (group) {
1.14524 + case 11:
1.14525 + if (this$static.currentPtr == 0) {
1.14526 + break endtagloop;
1.14527 + }
1.14528 +
1.14529 + $pop(this$static);
1.14530 + if (!this$static.fragment && 'frameset' != this$static.stack[this$static.currentPtr].name_0) {
1.14531 + this$static.mode = 17;
1.14532 + }
1.14533 +
1.14534 + break endtagloop;
1.14535 + default:break endtagloop;
1.14536 + }
1.14537 +
1.14538 + case 17:
1.14539 + switch (group) {
1.14540 + case 23:
1.14541 + this$static.mode = 19;
1.14542 + break endtagloop;
1.14543 + default:break endtagloop;
1.14544 + }
1.14545 +
1.14546 + case 0:
1.14547 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.14548 + this$static.mode = 1;
1.14549 + continue;
1.14550 + case 1:
1.14551 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
1.14552 + this$static.mode = 2;
1.14553 + continue;
1.14554 + case 2:
1.14555 + switch (group) {
1.14556 + case 20:
1.14557 + case 4:
1.14558 + case 23:
1.14559 + case 3:
1.14560 + $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
1.14561 + this$static.mode = 3;
1.14562 + continue;
1.14563 + default:break endtagloop;
1.14564 + }
1.14565 +
1.14566 + case 3:
1.14567 + switch (group) {
1.14568 + case 20:
1.14569 + $pop(this$static);
1.14570 + this$static.mode = 5;
1.14571 + break endtagloop;
1.14572 + case 4:
1.14573 + case 23:
1.14574 + case 3:
1.14575 + $pop(this$static);
1.14576 + this$static.mode = 5;
1.14577 + continue;
1.14578 + default:break endtagloop;
1.14579 + }
1.14580 +
1.14581 + case 4:
1.14582 + switch (group) {
1.14583 + case 26:
1.14584 + $pop(this$static);
1.14585 + this$static.mode = 3;
1.14586 + break endtagloop;
1.14587 + case 4:
1.14588 + $pop(this$static);
1.14589 + this$static.mode = 3;
1.14590 + continue;
1.14591 + default:break endtagloop;
1.14592 + }
1.14593 +
1.14594 + case 5:
1.14595 + switch (group) {
1.14596 + case 23:
1.14597 + case 3:
1.14598 + case 4:
1.14599 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
1.14600 + this$static.mode = 21;
1.14601 + continue;
1.14602 + default:break endtagloop;
1.14603 + }
1.14604 +
1.14605 + case 18:
1.14606 + this$static.mode = 6;
1.14607 + continue;
1.14608 + case 19:
1.14609 + this$static.mode = 16;
1.14610 + continue;
1.14611 + case 20:
1.14612 + if (this$static.originalMode == 5) {
1.14613 + $pop(this$static);
1.14614 + }
1.14615 +
1.14616 + $pop(this$static);
1.14617 + this$static.mode = this$static.originalMode;
1.14618 + break endtagloop;
1.14619 + }
1.14620 + }
1.14621 + if (this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
1.14622 + this$static.foreignFlag = 1;
1.14623 + }
1.14624 +}
1.14625 +
1.14626 +function $endTokenization(this$static){
1.14627 + this$static.formPointer = null;
1.14628 + this$static.headPointer = null;
1.14629 + while (this$static.currentPtr > -1) {
1.14630 + --this$static.stack[this$static.currentPtr].refcount;
1.14631 + --this$static.currentPtr;
1.14632 + }
1.14633 + this$static.stack = null;
1.14634 + while (this$static.listPtr > -1) {
1.14635 + if (this$static.listOfActiveFormattingElements[this$static.listPtr]) {
1.14636 + --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
1.14637 + }
1.14638 + --this$static.listPtr;
1.14639 + }
1.14640 + this$static.listOfActiveFormattingElements = null;
1.14641 + $clearImpl(this$static.idLocations);
1.14642 + this$static.charBuffer = null;
1.14643 +}
1.14644 +
1.14645 +function $eof_0(this$static){
1.14646 + var group, i;
1.14647 + $flushCharacters(this$static);
1.14648 + switch (this$static.foreignFlag) {
1.14649 + case 0:
1.14650 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
1.14651 + $popOnEof(this$static);
1.14652 + }
1.14653 +
1.14654 + this$static.foreignFlag = 1;
1.14655 + }
1.14656 + eofloop: for (;;) {
1.14657 + switch (this$static.mode) {
1.14658 + case 0:
1.14659 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.14660 + this$static.mode = 1;
1.14661 + continue;
1.14662 + case 1:
1.14663 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
1.14664 + this$static.mode = 2;
1.14665 + continue;
1.14666 + case 2:
1.14667 + $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
1.14668 + this$static.mode = 3;
1.14669 + continue;
1.14670 + case 3:
1.14671 + while (this$static.currentPtr > 0) {
1.14672 + $popOnEof(this$static);
1.14673 + }
1.14674 +
1.14675 + this$static.mode = 5;
1.14676 + continue;
1.14677 + case 4:
1.14678 + while (this$static.currentPtr > 1) {
1.14679 + $popOnEof(this$static);
1.14680 + }
1.14681 +
1.14682 + this$static.mode = 3;
1.14683 + continue;
1.14684 + case 5:
1.14685 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
1.14686 + this$static.mode = 6;
1.14687 + continue;
1.14688 + case 9:
1.14689 + if (this$static.currentPtr == 0) {
1.14690 + break eofloop;
1.14691 + }
1.14692 + else {
1.14693 + $popOnEof(this$static);
1.14694 + this$static.mode = 7;
1.14695 + continue;
1.14696 + }
1.14697 +
1.14698 + case 21:
1.14699 + case 8:
1.14700 + case 12:
1.14701 + case 6:
1.14702 + openelementloop: for (i = this$static.currentPtr; i >= 0; --i) {
1.14703 + group = this$static.stack[i].group;
1.14704 + switch (group) {
1.14705 + case 41:
1.14706 + case 15:
1.14707 + case 29:
1.14708 + case 39:
1.14709 + case 40:
1.14710 + case 3:
1.14711 + case 23:
1.14712 + break;
1.14713 + default:break openelementloop;
1.14714 + }
1.14715 + }
1.14716 +
1.14717 + break eofloop;
1.14718 + case 20:
1.14719 + if (this$static.originalMode == 5) {
1.14720 + $popOnEof(this$static);
1.14721 + }
1.14722 +
1.14723 + $popOnEof(this$static);
1.14724 + this$static.mode = this$static.originalMode;
1.14725 + continue;
1.14726 + case 10:
1.14727 + case 11:
1.14728 + case 7:
1.14729 + case 13:
1.14730 + case 14:
1.14731 + case 16:
1.14732 + break eofloop;
1.14733 + case 15:
1.14734 + case 17:
1.14735 + case 18:
1.14736 + case 19:
1.14737 + default:if (this$static.currentPtr == 0) {
1.14738 + fromDouble((new Date()).getTime());
1.14739 + }
1.14740 +
1.14741 + break eofloop;
1.14742 + }
1.14743 + }
1.14744 + while (this$static.currentPtr > 0) {
1.14745 + $popOnEof(this$static);
1.14746 + }
1.14747 + if (!this$static.fragment) {
1.14748 + $popOnEof(this$static);
1.14749 + }
1.14750 +}
1.14751 +
1.14752 +function $fatal_0(this$static, e){
1.14753 + var spe;
1.14754 + spe = $SAXParseException_0(new SAXParseException(), e.detailMessage, this$static.tokenizer, e);
1.14755 + throw spe;
1.14756 +}
1.14757 +
1.14758 +function $fatal_1(this$static, s){
1.14759 + var spe;
1.14760 + spe = $SAXParseException(new SAXParseException(), s, this$static.tokenizer);
1.14761 + throw spe;
1.14762 +}
1.14763 +
1.14764 +function $findInListOfActiveFormattingElements(this$static, node){
1.14765 + var i;
1.14766 + for (i = this$static.listPtr; i >= 0; --i) {
1.14767 + if (node == this$static.listOfActiveFormattingElements[i]) {
1.14768 + return i;
1.14769 + }
1.14770 + }
1.14771 + return -1;
1.14772 +}
1.14773 +
1.14774 +function $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, name){
1.14775 + var i, node;
1.14776 + for (i = this$static.listPtr; i >= 0; --i) {
1.14777 + node = this$static.listOfActiveFormattingElements[i];
1.14778 + if (!node) {
1.14779 + return -1;
1.14780 + }
1.14781 + else if (node.name_0 == name) {
1.14782 + return i;
1.14783 + }
1.14784 + }
1.14785 + return -1;
1.14786 +}
1.14787 +
1.14788 +function $findLast(this$static, name){
1.14789 + var i;
1.14790 + for (i = this$static.currentPtr; i > 0; --i) {
1.14791 + if (this$static.stack[i].name_0 == name) {
1.14792 + return i;
1.14793 + }
1.14794 + }
1.14795 + return 2147483647;
1.14796 +}
1.14797 +
1.14798 +function $findLastInScope(this$static, name){
1.14799 + var i;
1.14800 + for (i = this$static.currentPtr; i > 0; --i) {
1.14801 + if (this$static.stack[i].name_0 == name) {
1.14802 + return i;
1.14803 + }
1.14804 + else if (this$static.stack[i].scoping) {
1.14805 + return 2147483647;
1.14806 + }
1.14807 + }
1.14808 + return 2147483647;
1.14809 +}
1.14810 +
1.14811 +function $findLastInScopeHn(this$static){
1.14812 + var i;
1.14813 + for (i = this$static.currentPtr; i > 0; --i) {
1.14814 + if (this$static.stack[i].group == 42) {
1.14815 + return i;
1.14816 + }
1.14817 + else if (this$static.stack[i].scoping) {
1.14818 + return 2147483647;
1.14819 + }
1.14820 + }
1.14821 + return 2147483647;
1.14822 +}
1.14823 +
1.14824 +function $findLastInTableScope(this$static, name){
1.14825 + var i;
1.14826 + for (i = this$static.currentPtr; i > 0; --i) {
1.14827 + if (this$static.stack[i].name_0 == name) {
1.14828 + return i;
1.14829 + }
1.14830 + else if (this$static.stack[i].name_0 == 'table') {
1.14831 + return 2147483647;
1.14832 + }
1.14833 + }
1.14834 + return 2147483647;
1.14835 +}
1.14836 +
1.14837 +function $findLastInTableScopeOrRootTbodyTheadTfoot(this$static){
1.14838 + var i;
1.14839 + for (i = this$static.currentPtr; i > 0; --i) {
1.14840 + if (this$static.stack[i].group == 39) {
1.14841 + return i;
1.14842 + }
1.14843 + }
1.14844 + return 0;
1.14845 +}
1.14846 +
1.14847 +function $findLastInTableScopeTdTh(this$static){
1.14848 + var i, name;
1.14849 + for (i = this$static.currentPtr; i > 0; --i) {
1.14850 + name = this$static.stack[i].name_0;
1.14851 + if ('td' == name || 'th' == name) {
1.14852 + return i;
1.14853 + }
1.14854 + else if (name == 'table') {
1.14855 + return 2147483647;
1.14856 + }
1.14857 + }
1.14858 + return 2147483647;
1.14859 +}
1.14860 +
1.14861 +function $findLastOrRoot_0(this$static, name){
1.14862 + var i;
1.14863 + for (i = this$static.currentPtr; i > 0; --i) {
1.14864 + if (this$static.stack[i].name_0 == name) {
1.14865 + return i;
1.14866 + }
1.14867 + }
1.14868 + return 0;
1.14869 +}
1.14870 +
1.14871 +function $findLastOrRoot(this$static, group){
1.14872 + var i;
1.14873 + for (i = this$static.currentPtr; i > 0; --i) {
1.14874 + if (this$static.stack[i].group == group) {
1.14875 + return i;
1.14876 + }
1.14877 + }
1.14878 + return 0;
1.14879 +}
1.14880 +
1.14881 +function $flushCharacters(this$static){
1.14882 + var current, elt, eltPos, node;
1.14883 + if (this$static.charBufferLen > 0) {
1.14884 + current = this$static.stack[this$static.currentPtr];
1.14885 + if (current.fosterParenting && $charBufferContainsNonWhitespace(this$static)) {
1.14886 + eltPos = $findLastOrRoot(this$static, 34);
1.14887 + node = this$static.stack[eltPos];
1.14888 + elt = node.node;
1.14889 + if (eltPos == 0) {
1.14890 + $appendCharacters(this$static, elt, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
1.14891 + this$static.charBufferLen = 0;
1.14892 + return;
1.14893 + }
1.14894 + $insertFosterParentedCharacters_0(this$static, this$static.charBuffer, 0, this$static.charBufferLen, elt, this$static.stack[eltPos - 1].node);
1.14895 + this$static.charBufferLen = 0;
1.14896 + return;
1.14897 + }
1.14898 + $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
1.14899 + this$static.charBufferLen = 0;
1.14900 + }
1.14901 +}
1.14902 +
1.14903 +function $generateImpliedEndTags(this$static){
1.14904 + for (;;) {
1.14905 + switch (this$static.stack[this$static.currentPtr].group) {
1.14906 + case 29:
1.14907 + case 15:
1.14908 + case 41:
1.14909 + case 28:
1.14910 + case 27:
1.14911 + case 53:
1.14912 + $pop(this$static);
1.14913 + continue;
1.14914 + default:return;
1.14915 + }
1.14916 + }
1.14917 +}
1.14918 +
1.14919 +function $generateImpliedEndTagsExceptFor(this$static, name){
1.14920 + var node;
1.14921 + for (;;) {
1.14922 + node = this$static.stack[this$static.currentPtr];
1.14923 + switch (node.group) {
1.14924 + case 29:
1.14925 + case 15:
1.14926 + case 41:
1.14927 + case 28:
1.14928 + case 27:
1.14929 + case 53:
1.14930 + if (node.name_0 == name) {
1.14931 + return;
1.14932 + }
1.14933 +
1.14934 + $pop(this$static);
1.14935 + continue;
1.14936 + default:return;
1.14937 + }
1.14938 + }
1.14939 +}
1.14940 +
1.14941 +function $hasForeignInScope(this$static){
1.14942 + var i;
1.14943 + for (i = this$static.currentPtr; i > 0; --i) {
1.14944 + if (this$static.stack[i].ns != 'http://www.w3.org/1999/xhtml') {
1.14945 + return true;
1.14946 + }
1.14947 + else if (this$static.stack[i].scoping) {
1.14948 + return false;
1.14949 + }
1.14950 + }
1.14951 + return false;
1.14952 +}
1.14953 +
1.14954 +function $implicitlyCloseP(this$static){
1.14955 + var eltPos;
1.14956 + eltPos = $findLastInScope(this$static, 'p');
1.14957 + if (eltPos == 2147483647) {
1.14958 + return;
1.14959 + }
1.14960 + $generateImpliedEndTagsExceptFor(this$static, 'p');
1.14961 + while (this$static.currentPtr >= eltPos) {
1.14962 + $pop(this$static);
1.14963 + }
1.14964 +}
1.14965 +
1.14966 +function $insertIntoFosterParent(this$static, child){
1.14967 + var elt, eltPos, node;
1.14968 + eltPos = $findLastOrRoot(this$static, 34);
1.14969 + node = this$static.stack[eltPos];
1.14970 + elt = node.node;
1.14971 + if (eltPos == 0) {
1.14972 + $appendElement(this$static, child, elt);
1.14973 + return;
1.14974 + }
1.14975 + $insertFosterParentedChild(this$static, child, elt, this$static.stack[eltPos - 1].node);
1.14976 +}
1.14977 +
1.14978 +function $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark){
1.14979 + ++formattingClone.refcount;
1.14980 + if (bookmark <= this$static.listPtr) {
1.14981 + arraycopy(this$static.listOfActiveFormattingElements, bookmark, this$static.listOfActiveFormattingElements, bookmark + 1, this$static.listPtr - bookmark + 1);
1.14982 + }
1.14983 + ++this$static.listPtr;
1.14984 + this$static.listOfActiveFormattingElements[bookmark] = formattingClone;
1.14985 +}
1.14986 +
1.14987 +function $insertIntoStack(this$static, node, position){
1.14988 + if (position == this$static.currentPtr + 1) {
1.14989 + $flushCharacters(this$static);
1.14990 + $push_0(this$static, node);
1.14991 + }
1.14992 + else {
1.14993 + arraycopy(this$static.stack, position, this$static.stack, position + 1, this$static.currentPtr - position + 1);
1.14994 + ++this$static.currentPtr;
1.14995 + this$static.stack[position] = node;
1.14996 + }
1.14997 +}
1.14998 +
1.14999 +function $isAlmostStandards(publicIdentifier, systemIdentifier){
1.15000 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 transitional//en', publicIdentifier)) {
1.15001 + return true;
1.15002 + }
1.15003 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 frameset//en', publicIdentifier)) {
1.15004 + return true;
1.15005 + }
1.15006 + if (systemIdentifier != null) {
1.15007 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
1.15008 + return true;
1.15009 + }
1.15010 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
1.15011 + return true;
1.15012 + }
1.15013 + }
1.15014 + return false;
1.15015 +}
1.15016 +
1.15017 +function $isHtml4Doctype(publicIdentifier){
1.15018 + if (publicIdentifier != null && binarySearch_0(HTML4_PUBLIC_IDS, publicIdentifier, ($clinit_61() , NATURAL)) > -1) {
1.15019 + return true;
1.15020 + }
1.15021 + return false;
1.15022 +}
1.15023 +
1.15024 +function $isInStack(this$static, node){
1.15025 + var i;
1.15026 + for (i = this$static.currentPtr; i >= 0; --i) {
1.15027 + if (this$static.stack[i] == node) {
1.15028 + return true;
1.15029 + }
1.15030 + }
1.15031 + return false;
1.15032 +}
1.15033 +
1.15034 +function $isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks){
1.15035 + var i;
1.15036 + if (forceQuirks) {
1.15037 + return true;
1.15038 + }
1.15039 + if (name != 'html') {
1.15040 + return true;
1.15041 + }
1.15042 + if (publicIdentifier != null) {
1.15043 + for (i = 0; i < QUIRKY_PUBLIC_IDS.length; ++i) {
1.15044 + if (lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(QUIRKY_PUBLIC_IDS[i], publicIdentifier)) {
1.15045 + return true;
1.15046 + }
1.15047 + }
1.15048 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3o//dtd w3 html strict 3.0//en//', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('-/w3c/dtd html 4.0 transitional/en', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('html', publicIdentifier)) {
1.15049 + return true;
1.15050 + }
1.15051 + }
1.15052 + if (systemIdentifier == null) {
1.15053 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
1.15054 + return true;
1.15055 + }
1.15056 + else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
1.15057 + return true;
1.15058 + }
1.15059 + }
1.15060 + else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd', systemIdentifier)) {
1.15061 + return true;
1.15062 + }
1.15063 + return false;
1.15064 +}
1.15065 +
1.15066 +function $pop(this$static){
1.15067 + var node;
1.15068 + $flushCharacters(this$static);
1.15069 + node = this$static.stack[this$static.currentPtr];
1.15070 + --this$static.currentPtr;
1.15071 + $elementPopped(this$static, node.ns, node.popName, node.node);
1.15072 + --node.refcount;
1.15073 +}
1.15074 +
1.15075 +function $popOnEof(this$static){
1.15076 + var node;
1.15077 + $flushCharacters(this$static);
1.15078 + node = this$static.stack[this$static.currentPtr];
1.15079 + --this$static.currentPtr;
1.15080 + $elementPopped(this$static, node.ns, node.popName, node.node);
1.15081 + --node.refcount;
1.15082 +}
1.15083 +
1.15084 +function $push_0(this$static, node){
1.15085 + var newStack;
1.15086 + ++this$static.currentPtr;
1.15087 + if (this$static.currentPtr == this$static.stack.length) {
1.15088 + newStack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.stack.length + 64, 0);
1.15089 + arraycopy(this$static.stack, 0, newStack, 0, this$static.stack.length);
1.15090 + this$static.stack = newStack;
1.15091 + }
1.15092 + this$static.stack[this$static.currentPtr] = node;
1.15093 +}
1.15094 +
1.15095 +function $pushHeadPointerOntoStack(this$static){
1.15096 + $flushCharacters(this$static);
1.15097 + if (!this$static.headPointer) {
1.15098 + $push_0(this$static, this$static.stack[this$static.currentPtr]);
1.15099 + }
1.15100 + else {
1.15101 + $push_0(this$static, $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), this$static.headPointer));
1.15102 + }
1.15103 +}
1.15104 +
1.15105 +function $reconstructTheActiveFormattingElements(this$static){
1.15106 + var clone, currentNode, entry, entryClone, entryPos, mostRecent;
1.15107 + if (this$static.listPtr == -1) {
1.15108 + return;
1.15109 + }
1.15110 + mostRecent = this$static.listOfActiveFormattingElements[this$static.listPtr];
1.15111 + if (!mostRecent || $isInStack(this$static, mostRecent)) {
1.15112 + return;
1.15113 + }
1.15114 + entryPos = this$static.listPtr;
1.15115 + for (;;) {
1.15116 + --entryPos;
1.15117 + if (entryPos == -1) {
1.15118 + break;
1.15119 + }
1.15120 + if (!this$static.listOfActiveFormattingElements[entryPos]) {
1.15121 + break;
1.15122 + }
1.15123 + if ($isInStack(this$static, this$static.listOfActiveFormattingElements[entryPos])) {
1.15124 + break;
1.15125 + }
1.15126 + }
1.15127 + if (entryPos < this$static.listPtr) {
1.15128 + $flushCharacters(this$static);
1.15129 + }
1.15130 + while (entryPos < this$static.listPtr) {
1.15131 + ++entryPos;
1.15132 + entry = this$static.listOfActiveFormattingElements[entryPos];
1.15133 + clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', entry.name_0, $cloneAttributes(entry.attributes));
1.15134 + entryClone = $StackNode(new StackNode(), entry.group, entry.ns, entry.name_0, clone, entry.scoping, entry.special, entry.fosterParenting, entry.popName, entry.attributes);
1.15135 + entry.attributes = null;
1.15136 + currentNode = this$static.stack[this$static.currentPtr];
1.15137 + if (currentNode.fosterParenting) {
1.15138 + $insertIntoFosterParent(this$static, clone);
1.15139 + }
1.15140 + else {
1.15141 + $appendElement(this$static, clone, currentNode.node);
1.15142 + }
1.15143 + $push_0(this$static, entryClone);
1.15144 + this$static.listOfActiveFormattingElements[entryPos] = entryClone;
1.15145 + --entry.refcount;
1.15146 + ++entryClone.refcount;
1.15147 + }
1.15148 +}
1.15149 +
1.15150 +function $removeFromListOfActiveFormattingElements(this$static, pos){
1.15151 + --this$static.listOfActiveFormattingElements[pos].refcount;
1.15152 + if (pos == this$static.listPtr) {
1.15153 + --this$static.listPtr;
1.15154 + return;
1.15155 + }
1.15156 + arraycopy(this$static.listOfActiveFormattingElements, pos + 1, this$static.listOfActiveFormattingElements, pos, this$static.listPtr - pos);
1.15157 + --this$static.listPtr;
1.15158 +}
1.15159 +
1.15160 +function $removeFromStack(this$static, pos){
1.15161 + if (this$static.currentPtr == pos) {
1.15162 + $pop(this$static);
1.15163 + }
1.15164 + else {
1.15165 + --this$static.stack[pos].refcount;
1.15166 + arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
1.15167 + --this$static.currentPtr;
1.15168 + }
1.15169 +}
1.15170 +
1.15171 +function $removeFromStack_0(this$static, node){
1.15172 + var pos;
1.15173 + if (this$static.stack[this$static.currentPtr] == node) {
1.15174 + $pop(this$static);
1.15175 + }
1.15176 + else {
1.15177 + pos = this$static.currentPtr - 1;
1.15178 + while (pos >= 0 && this$static.stack[pos] != node) {
1.15179 + --pos;
1.15180 + }
1.15181 + if (pos == -1) {
1.15182 + return;
1.15183 + }
1.15184 + --node.refcount;
1.15185 + arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
1.15186 + --this$static.currentPtr;
1.15187 + }
1.15188 +}
1.15189 +
1.15190 +function $resetTheInsertionMode(this$static){
1.15191 + var i, name, node;
1.15192 + this$static.foreignFlag = 1;
1.15193 + for (i = this$static.currentPtr; i >= 0; --i) {
1.15194 + node = this$static.stack[i];
1.15195 + name = node.name_0;
1.15196 + if (i == 0) {
1.15197 + if (this$static.contextNamespace == 'http://www.w3.org/1999/xhtml' && (this$static.contextName == 'td' || this$static.contextName == 'th')) {
1.15198 + this$static.mode = 6;
1.15199 + return;
1.15200 + }
1.15201 + else {
1.15202 + name = this$static.contextName;
1.15203 + }
1.15204 + }
1.15205 + if ('select' == name) {
1.15206 + this$static.mode = 13;
1.15207 + return;
1.15208 + }
1.15209 + else if ('td' == name || 'th' == name) {
1.15210 + this$static.mode = 12;
1.15211 + return;
1.15212 + }
1.15213 + else if ('tr' == name) {
1.15214 + this$static.mode = 11;
1.15215 + return;
1.15216 + }
1.15217 + else if ('tbody' == name || 'thead' == name || 'tfoot' == name) {
1.15218 + this$static.mode = 10;
1.15219 + return;
1.15220 + }
1.15221 + else if ('caption' == name) {
1.15222 + this$static.mode = 8;
1.15223 + return;
1.15224 + }
1.15225 + else if ('colgroup' == name) {
1.15226 + this$static.mode = 9;
1.15227 + return;
1.15228 + }
1.15229 + else if ('table' == name) {
1.15230 + this$static.mode = 7;
1.15231 + return;
1.15232 + }
1.15233 + else if ('http://www.w3.org/1999/xhtml' != node.ns) {
1.15234 + this$static.foreignFlag = 0;
1.15235 + this$static.mode = 6;
1.15236 + return;
1.15237 + }
1.15238 + else if ('head' == name) {
1.15239 + this$static.mode = 6;
1.15240 + return;
1.15241 + }
1.15242 + else if ('body' == name) {
1.15243 + this$static.mode = 6;
1.15244 + return;
1.15245 + }
1.15246 + else if ('frameset' == name) {
1.15247 + this$static.mode = 16;
1.15248 + return;
1.15249 + }
1.15250 + else if ('html' == name) {
1.15251 + if (!this$static.headPointer) {
1.15252 + this$static.mode = 2;
1.15253 + }
1.15254 + else {
1.15255 + this$static.mode = 5;
1.15256 + }
1.15257 + return;
1.15258 + }
1.15259 + else if (i == 0) {
1.15260 + this$static.mode = 6;
1.15261 + return;
1.15262 + }
1.15263 + }
1.15264 +}
1.15265 +
1.15266 +function $setFragmentContext(this$static, context){
1.15267 + this$static.contextName = context;
1.15268 + this$static.contextNamespace = 'http://www.w3.org/1999/xhtml';
1.15269 + this$static.fragment = false;
1.15270 + this$static.quirks = false;
1.15271 +}
1.15272 +
1.15273 +function $startTag(this$static, elementName, attributes, selfClosing){
1.15274 + var actionIndex, activeA, activeAPos, attributeQName, currGroup, currNs, currentNode, eltPos, formAttrs, group, i, inputAttributes, name, needsPostProcessing, node, prompt, promptIndex, current, elt_53;
1.15275 + this$static.needToDropLF = false;
1.15276 + needsPostProcessing = false;
1.15277 + starttagloop: for (;;) {
1.15278 + group = elementName.group;
1.15279 + name = elementName.name_0;
1.15280 + switch (this$static.foreignFlag) {
1.15281 + case 0:
1.15282 + currentNode = this$static.stack[this$static.currentPtr];
1.15283 + currNs = currentNode.ns;
1.15284 + currGroup = currentNode.group;
1.15285 + if ('http://www.w3.org/1999/xhtml' == currNs || 'http://www.w3.org/1998/Math/MathML' == currNs && (56 != group && 57 == currGroup || 19 == group && 58 == currGroup) || 'http://www.w3.org/2000/svg' == currNs && (36 == currGroup || 59 == currGroup)) {
1.15286 + needsPostProcessing = true;
1.15287 + }
1.15288 + else {
1.15289 + switch (group) {
1.15290 + case 45:
1.15291 + case 50:
1.15292 + case 3:
1.15293 + case 4:
1.15294 + case 52:
1.15295 + case 41:
1.15296 + case 46:
1.15297 + case 48:
1.15298 + case 42:
1.15299 + case 20:
1.15300 + case 22:
1.15301 + case 15:
1.15302 + case 18:
1.15303 + case 24:
1.15304 + case 29:
1.15305 + case 44:
1.15306 + case 34:
1.15307 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
1.15308 + $pop(this$static);
1.15309 + }
1.15310 +
1.15311 + this$static.foreignFlag = 1;
1.15312 + continue starttagloop;
1.15313 + case 64:
1.15314 + if ($contains(attributes, ($clinit_87() , COLOR)) || $contains(attributes, FACE) || $contains(attributes, SIZE)) {
1.15315 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
1.15316 + $pop(this$static);
1.15317 + }
1.15318 + this$static.foreignFlag = 1;
1.15319 + continue starttagloop;
1.15320 + }
1.15321 +
1.15322 + default:if ('http://www.w3.org/2000/svg' == currNs) {
1.15323 + attributes.mode = 2;
1.15324 + if (selfClosing) {
1.15325 + $appendVoidElementToCurrentMayFosterCamelCase(this$static, currNs, elementName, attributes);
1.15326 + selfClosing = false;
1.15327 + }
1.15328 + else {
1.15329 + $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, currNs, elementName, attributes);
1.15330 + }
1.15331 + attributes = null;
1.15332 + break starttagloop;
1.15333 + }
1.15334 + else {
1.15335 + attributes.mode = 1;
1.15336 + if (selfClosing) {
1.15337 + $appendVoidElementToCurrentMayFoster_0(this$static, currNs, elementName, attributes);
1.15338 + selfClosing = false;
1.15339 + }
1.15340 + else {
1.15341 + $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, currNs, elementName, attributes);
1.15342 + }
1.15343 + attributes = null;
1.15344 + break starttagloop;
1.15345 + }
1.15346 +
1.15347 + }
1.15348 + }
1.15349 +
1.15350 + default:switch (this$static.mode) {
1.15351 + case 10:
1.15352 + switch (group) {
1.15353 + case 37:
1.15354 + $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
1.15355 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15356 + this$static.mode = 11;
1.15357 + attributes = null;
1.15358 + break starttagloop;
1.15359 + case 40:
1.15360 + $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
1.15361 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TR), ($clinit_91() , EMPTY_ATTRIBUTES));
1.15362 + this$static.mode = 11;
1.15363 + continue;
1.15364 + case 6:
1.15365 + case 7:
1.15366 + case 8:
1.15367 + case 39:
1.15368 + eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
1.15369 + if (eltPos == 0) {
1.15370 + break starttagloop;
1.15371 + }
1.15372 + else {
1.15373 + $clearStackBackTo(this$static, eltPos);
1.15374 + $pop(this$static);
1.15375 + this$static.mode = 7;
1.15376 + continue;
1.15377 + }
1.15378 +
1.15379 + }
1.15380 +
1.15381 + case 11:
1.15382 + switch (group) {
1.15383 + case 40:
1.15384 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 37));
1.15385 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15386 + this$static.mode = 12;
1.15387 + $append_1(this$static, null);
1.15388 + attributes = null;
1.15389 + break starttagloop;
1.15390 + case 6:
1.15391 + case 7:
1.15392 + case 8:
1.15393 + case 39:
1.15394 + case 37:
1.15395 + eltPos = $findLastOrRoot(this$static, 37);
1.15396 + if (eltPos == 0) {
1.15397 + break starttagloop;
1.15398 + }
1.15399 +
1.15400 + $clearStackBackTo(this$static, eltPos);
1.15401 + $pop(this$static);
1.15402 + this$static.mode = 10;
1.15403 + continue;
1.15404 + }
1.15405 +
1.15406 + case 7:
1.15407 + intableloop: for (;;) {
1.15408 + switch (group) {
1.15409 + case 6:
1.15410 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
1.15411 + $append_1(this$static, null);
1.15412 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15413 + this$static.mode = 8;
1.15414 + attributes = null;
1.15415 + break starttagloop;
1.15416 + case 8:
1.15417 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
1.15418 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15419 + this$static.mode = 9;
1.15420 + attributes = null;
1.15421 + break starttagloop;
1.15422 + case 7:
1.15423 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
1.15424 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , COLGROUP), ($clinit_91() , EMPTY_ATTRIBUTES));
1.15425 + this$static.mode = 9;
1.15426 + continue starttagloop;
1.15427 + case 39:
1.15428 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
1.15429 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15430 + this$static.mode = 10;
1.15431 + attributes = null;
1.15432 + break starttagloop;
1.15433 + case 37:
1.15434 + case 40:
1.15435 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
1.15436 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TBODY), ($clinit_91() , EMPTY_ATTRIBUTES));
1.15437 + this$static.mode = 10;
1.15438 + continue starttagloop;
1.15439 + case 34:
1.15440 + eltPos = $findLastInTableScope(this$static, name);
1.15441 + if (eltPos == 2147483647) {
1.15442 + break starttagloop;
1.15443 + }
1.15444 +
1.15445 + $generateImpliedEndTags(this$static);
1.15446 + while (this$static.currentPtr >= eltPos) {
1.15447 + $pop(this$static);
1.15448 + }
1.15449 +
1.15450 + $resetTheInsertionMode(this$static);
1.15451 + continue starttagloop;
1.15452 + case 31:
1.15453 + case 33:
1.15454 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15455 + this$static.originalMode = this$static.mode;
1.15456 + this$static.mode = 20;
1.15457 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.15458 + attributes = null;
1.15459 + break starttagloop;
1.15460 + case 13:
1.15461 + if (!lowerCaseLiteralEqualsIgnoreAsciiCaseString('hidden', $getValue_0(attributes, ($clinit_87() , TYPE)))) {
1.15462 + break intableloop;
1.15463 + }
1.15464 +
1.15465 + $flushCharacters(this$static);
1.15466 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.15467 + elt_53 = $createElement_0(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
1.15468 + current = this$static.stack[this$static.currentPtr];
1.15469 + $appendElement(this$static, elt_53, current.node);
1.15470 + $elementPopped(this$static, 'http://www.w3.org/1999/xhtml', name, elt_53);
1.15471 + selfClosing = false;
1.15472 + attributes = null;
1.15473 + break starttagloop;
1.15474 + default:break intableloop;
1.15475 + }
1.15476 + }
1.15477 +
1.15478 + case 8:
1.15479 + switch (group) {
1.15480 + case 6:
1.15481 + case 7:
1.15482 + case 8:
1.15483 + case 39:
1.15484 + case 37:
1.15485 + case 40:
1.15486 + eltPos = $findLastInTableScope(this$static, 'caption');
1.15487 + if (eltPos == 2147483647) {
1.15488 + break starttagloop;
1.15489 + }
1.15490 +
1.15491 + $generateImpliedEndTags(this$static);
1.15492 + while (this$static.currentPtr >= eltPos) {
1.15493 + $pop(this$static);
1.15494 + }
1.15495 +
1.15496 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
1.15497 + this$static.mode = 7;
1.15498 + continue;
1.15499 + }
1.15500 +
1.15501 + case 12:
1.15502 + switch (group) {
1.15503 + case 6:
1.15504 + case 7:
1.15505 + case 8:
1.15506 + case 39:
1.15507 + case 37:
1.15508 + case 40:
1.15509 + eltPos = $findLastInTableScopeTdTh(this$static);
1.15510 + if (eltPos == 2147483647) {
1.15511 + break starttagloop;
1.15512 + }
1.15513 + else {
1.15514 + $closeTheCell(this$static, eltPos);
1.15515 + continue;
1.15516 + }
1.15517 +
1.15518 + }
1.15519 +
1.15520 + case 21:
1.15521 + switch (group) {
1.15522 + case 11:
1.15523 + if (this$static.mode == 21) {
1.15524 + if (this$static.currentPtr == 0 || this$static.stack[1].group != 3) {
1.15525 + break starttagloop;
1.15526 + }
1.15527 + else {
1.15528 + $detachFromParent(this$static, this$static.stack[1].node);
1.15529 + while (this$static.currentPtr > 0) {
1.15530 + $pop(this$static);
1.15531 + }
1.15532 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15533 + this$static.mode = 16;
1.15534 + attributes = null;
1.15535 + break starttagloop;
1.15536 + }
1.15537 + }
1.15538 + else {
1.15539 + break starttagloop;
1.15540 + }
1.15541 +
1.15542 + case 44:
1.15543 + case 15:
1.15544 + case 41:
1.15545 + case 5:
1.15546 + case 43:
1.15547 + case 63:
1.15548 + case 34:
1.15549 + case 49:
1.15550 + case 4:
1.15551 + case 48:
1.15552 + case 13:
1.15553 + case 65:
1.15554 + case 22:
1.15555 + case 35:
1.15556 + case 38:
1.15557 + case 47:
1.15558 + case 32:
1.15559 + if (this$static.mode == 21) {
1.15560 + this$static.mode = 6;
1.15561 + }
1.15562 +
1.15563 + }
1.15564 +
1.15565 + case 6:
1.15566 + inbodyloop: for (;;) {
1.15567 + switch (group) {
1.15568 + case 23:
1.15569 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.15570 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.15571 + attributes = null;
1.15572 + break starttagloop;
1.15573 + case 2:
1.15574 + case 16:
1.15575 + case 18:
1.15576 + case 33:
1.15577 + case 31:
1.15578 + case 36:
1.15579 + case 54:
1.15580 + break inbodyloop;
1.15581 + case 3:
1.15582 + $addAttributesToBody(this$static, attributes);
1.15583 + attributes = null;
1.15584 + break starttagloop;
1.15585 + case 29:
1.15586 + case 50:
1.15587 + case 46:
1.15588 + case 51:
1.15589 + $implicitlyCloseP(this$static);
1.15590 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15591 + attributes = null;
1.15592 + break starttagloop;
1.15593 + case 42:
1.15594 + $implicitlyCloseP(this$static);
1.15595 + if (this$static.stack[this$static.currentPtr].group == 42) {
1.15596 + $pop(this$static);
1.15597 + }
1.15598 +
1.15599 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15600 + attributes = null;
1.15601 + break starttagloop;
1.15602 + case 61:
1.15603 + $implicitlyCloseP(this$static);
1.15604 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15605 + attributes = null;
1.15606 + break starttagloop;
1.15607 + case 44:
1.15608 + $implicitlyCloseP(this$static);
1.15609 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15610 + this$static.needToDropLF = true;
1.15611 + attributes = null;
1.15612 + break starttagloop;
1.15613 + case 9:
1.15614 + if (this$static.formPointer) {
1.15615 + break starttagloop;
1.15616 + }
1.15617 + else {
1.15618 + $implicitlyCloseP(this$static);
1.15619 + $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes);
1.15620 + attributes = null;
1.15621 + break starttagloop;
1.15622 + }
1.15623 +
1.15624 + case 15:
1.15625 + case 41:
1.15626 + eltPos = this$static.currentPtr;
1.15627 + for (;;) {
1.15628 + node = this$static.stack[eltPos];
1.15629 + if (node.group == group) {
1.15630 + $generateImpliedEndTagsExceptFor(this$static, node.name_0);
1.15631 + while (this$static.currentPtr >= eltPos) {
1.15632 + $pop(this$static);
1.15633 + }
1.15634 + break;
1.15635 + }
1.15636 + else if (node.scoping || node.special && node.name_0 != 'p' && node.name_0 != 'address' && node.name_0 != 'div') {
1.15637 + break;
1.15638 + }
1.15639 + --eltPos;
1.15640 + }
1.15641 +
1.15642 + $implicitlyCloseP(this$static);
1.15643 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15644 + attributes = null;
1.15645 + break starttagloop;
1.15646 + case 30:
1.15647 + $implicitlyCloseP(this$static);
1.15648 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15649 + $setContentModelFlag_0(this$static.tokenizer, 3, elementName);
1.15650 + attributes = null;
1.15651 + break starttagloop;
1.15652 + case 1:
1.15653 + activeAPos = $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, 'a');
1.15654 + if (activeAPos != -1) {
1.15655 + activeA = this$static.listOfActiveFormattingElements[activeAPos];
1.15656 + ++activeA.refcount;
1.15657 + $adoptionAgencyEndTag(this$static, 'a');
1.15658 + $removeFromStack_0(this$static, activeA);
1.15659 + activeAPos = $findInListOfActiveFormattingElements(this$static, activeA);
1.15660 + if (activeAPos != -1) {
1.15661 + $removeFromListOfActiveFormattingElements(this$static, activeAPos);
1.15662 + }
1.15663 + --activeA.refcount;
1.15664 + }
1.15665 +
1.15666 + $reconstructTheActiveFormattingElements(this$static);
1.15667 + $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15668 + attributes = null;
1.15669 + break starttagloop;
1.15670 + case 45:
1.15671 + case 64:
1.15672 + $reconstructTheActiveFormattingElements(this$static);
1.15673 + $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15674 + attributes = null;
1.15675 + break starttagloop;
1.15676 + case 24:
1.15677 + $reconstructTheActiveFormattingElements(this$static);
1.15678 + if (2147483647 != $findLastInScope(this$static, 'nobr')) {
1.15679 + $adoptionAgencyEndTag(this$static, 'nobr');
1.15680 + }
1.15681 +
1.15682 + $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15683 + attributes = null;
1.15684 + break starttagloop;
1.15685 + case 5:
1.15686 + eltPos = $findLastInScope(this$static, name);
1.15687 + if (eltPos != 2147483647) {
1.15688 + $generateImpliedEndTags(this$static);
1.15689 + while (this$static.currentPtr >= eltPos) {
1.15690 + $pop(this$static);
1.15691 + }
1.15692 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
1.15693 + continue starttagloop;
1.15694 + }
1.15695 + else {
1.15696 + $reconstructTheActiveFormattingElements(this$static);
1.15697 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15698 + $append_1(this$static, null);
1.15699 + attributes = null;
1.15700 + break starttagloop;
1.15701 + }
1.15702 +
1.15703 + case 63:
1.15704 + $reconstructTheActiveFormattingElements(this$static);
1.15705 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15706 + $append_1(this$static, null);
1.15707 + attributes = null;
1.15708 + break starttagloop;
1.15709 + case 43:
1.15710 + $reconstructTheActiveFormattingElements(this$static);
1.15711 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15712 + $append_1(this$static, null);
1.15713 + attributes = null;
1.15714 + break starttagloop;
1.15715 + case 38:
1.15716 + $reconstructTheActiveFormattingElements(this$static);
1.15717 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15718 + this$static.originalMode = this$static.mode;
1.15719 + this$static.mode = 20;
1.15720 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.15721 + attributes = null;
1.15722 + break starttagloop;
1.15723 + case 34:
1.15724 + if (!this$static.quirks) {
1.15725 + $implicitlyCloseP(this$static);
1.15726 + }
1.15727 +
1.15728 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15729 + this$static.mode = 7;
1.15730 + attributes = null;
1.15731 + break starttagloop;
1.15732 + case 4:
1.15733 + case 48:
1.15734 + case 49:
1.15735 + $reconstructTheActiveFormattingElements(this$static);
1.15736 + case 55:
1.15737 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15738 + selfClosing = false;
1.15739 + attributes = null;
1.15740 + break starttagloop;
1.15741 + case 22:
1.15742 + $implicitlyCloseP(this$static);
1.15743 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15744 + selfClosing = false;
1.15745 + attributes = null;
1.15746 + break starttagloop;
1.15747 + case 12:
1.15748 + elementName = ($clinit_89() , IMG);
1.15749 + continue starttagloop;
1.15750 + case 65:
1.15751 + case 13:
1.15752 + $reconstructTheActiveFormattingElements(this$static);
1.15753 + $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
1.15754 + selfClosing = false;
1.15755 + attributes = null;
1.15756 + break starttagloop;
1.15757 + case 14:
1.15758 + if (this$static.formPointer) {
1.15759 + break starttagloop;
1.15760 + }
1.15761 +
1.15762 + $implicitlyCloseP(this$static);
1.15763 + formAttrs = $HtmlAttributes(new HtmlAttributes(), 0);
1.15764 + actionIndex = $getIndex(attributes, ($clinit_87() , ACTION));
1.15765 + if (actionIndex > -1) {
1.15766 + $addAttribute(formAttrs, ACTION, $getValue(attributes, actionIndex), ($clinit_80() , ALLOW));
1.15767 + }
1.15768 +
1.15769 + $appendToCurrentNodeAndPushFormElementMayFoster(this$static, formAttrs);
1.15770 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , HR), ($clinit_91() , EMPTY_ATTRIBUTES));
1.15771 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', P, EMPTY_ATTRIBUTES);
1.15772 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', LABEL_0, EMPTY_ATTRIBUTES);
1.15773 + promptIndex = $getIndex(attributes, PROMPT);
1.15774 + if (promptIndex > -1) {
1.15775 + prompt = $toCharArray($getValue(attributes, promptIndex));
1.15776 + $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(prompt, 0, prompt.length));
1.15777 + }
1.15778 + else {
1.15779 + $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(ISINDEX_PROMPT, 0, ISINDEX_PROMPT.length));
1.15780 + }
1.15781 +
1.15782 + inputAttributes = $HtmlAttributes(new HtmlAttributes(), 0);
1.15783 + $addAttribute(inputAttributes, NAME, 'isindex', ($clinit_80() , ALLOW));
1.15784 + for (i = 0; i < attributes.length_0; ++i) {
1.15785 + attributeQName = $getAttributeName(attributes, i);
1.15786 + if (NAME == attributeQName || PROMPT == attributeQName) {
1.15787 + }
1.15788 + else if (ACTION != attributeQName) {
1.15789 + $addAttribute(inputAttributes, attributeQName, $getValue(attributes, i), ALLOW);
1.15790 + }
1.15791 + }
1.15792 +
1.15793 + $clearWithoutReleasingContents(attributes);
1.15794 + $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', 'input', inputAttributes);
1.15795 + $pop(this$static);
1.15796 + $pop(this$static);
1.15797 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', HR, EMPTY_ATTRIBUTES);
1.15798 + $pop(this$static);
1.15799 + selfClosing = false;
1.15800 + attributes = null;
1.15801 + break starttagloop;
1.15802 + case 35:
1.15803 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15804 + $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
1.15805 + this$static.originalMode = this$static.mode;
1.15806 + this$static.mode = 20;
1.15807 + this$static.needToDropLF = true;
1.15808 + attributes = null;
1.15809 + break starttagloop;
1.15810 + case 26:
1.15811 + {
1.15812 + $reconstructTheActiveFormattingElements(this$static);
1.15813 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15814 + attributes = null;
1.15815 + break starttagloop;
1.15816 + }
1.15817 +
1.15818 + case 25:
1.15819 + case 47:
1.15820 + case 60:
1.15821 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15822 + this$static.originalMode = this$static.mode;
1.15823 + this$static.mode = 20;
1.15824 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.15825 + attributes = null;
1.15826 + break starttagloop;
1.15827 + case 32:
1.15828 + $reconstructTheActiveFormattingElements(this$static);
1.15829 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15830 + switch (this$static.mode) {
1.15831 + case 7:
1.15832 + case 8:
1.15833 + case 9:
1.15834 + case 10:
1.15835 + case 11:
1.15836 + case 12:
1.15837 + this$static.mode = 14;
1.15838 + break;
1.15839 + default:this$static.mode = 13;
1.15840 + }
1.15841 +
1.15842 + attributes = null;
1.15843 + break starttagloop;
1.15844 + case 27:
1.15845 + case 28:
1.15846 + if ($findLastInScope(this$static, 'option') != 2147483647) {
1.15847 + optionendtagloop: for (;;) {
1.15848 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
1.15849 + $pop(this$static);
1.15850 + break optionendtagloop;
1.15851 + }
1.15852 + eltPos = this$static.currentPtr;
1.15853 + for (;;) {
1.15854 + if (this$static.stack[eltPos].name_0 == 'option') {
1.15855 + $generateImpliedEndTags(this$static);
1.15856 + while (this$static.currentPtr >= eltPos) {
1.15857 + $pop(this$static);
1.15858 + }
1.15859 + break optionendtagloop;
1.15860 + }
1.15861 + --eltPos;
1.15862 + }
1.15863 + }
1.15864 + }
1.15865 +
1.15866 + $reconstructTheActiveFormattingElements(this$static);
1.15867 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15868 + attributes = null;
1.15869 + break starttagloop;
1.15870 + case 53:
1.15871 + eltPos = $findLastInScope(this$static, 'ruby');
1.15872 + if (eltPos != 2147483647) {
1.15873 + $generateImpliedEndTags(this$static);
1.15874 + }
1.15875 +
1.15876 + if (eltPos != this$static.currentPtr) {
1.15877 + while (this$static.currentPtr > eltPos) {
1.15878 + $pop(this$static);
1.15879 + }
1.15880 + }
1.15881 +
1.15882 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15883 + attributes = null;
1.15884 + break starttagloop;
1.15885 + case 17:
1.15886 + $reconstructTheActiveFormattingElements(this$static);
1.15887 + attributes.mode = 1;
1.15888 + if (selfClosing) {
1.15889 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
1.15890 + selfClosing = false;
1.15891 + }
1.15892 + else {
1.15893 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
1.15894 + this$static.foreignFlag = 0;
1.15895 + }
1.15896 +
1.15897 + attributes = null;
1.15898 + break starttagloop;
1.15899 + case 19:
1.15900 + $reconstructTheActiveFormattingElements(this$static);
1.15901 + attributes.mode = 2;
1.15902 + if (selfClosing) {
1.15903 + $appendVoidElementToCurrentMayFosterCamelCase(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
1.15904 + selfClosing = false;
1.15905 + }
1.15906 + else {
1.15907 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
1.15908 + this$static.foreignFlag = 0;
1.15909 + }
1.15910 +
1.15911 + attributes = null;
1.15912 + break starttagloop;
1.15913 + case 6:
1.15914 + case 7:
1.15915 + case 8:
1.15916 + case 39:
1.15917 + case 37:
1.15918 + case 40:
1.15919 + case 10:
1.15920 + case 11:
1.15921 + case 20:
1.15922 + break starttagloop;
1.15923 + case 62:
1.15924 + $reconstructTheActiveFormattingElements(this$static);
1.15925 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15926 + attributes = null;
1.15927 + break starttagloop;
1.15928 + default:$reconstructTheActiveFormattingElements(this$static);
1.15929 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15930 + attributes = null;
1.15931 + break starttagloop;
1.15932 + }
1.15933 + }
1.15934 +
1.15935 + case 3:
1.15936 + inheadloop: for (;;) {
1.15937 + switch (group) {
1.15938 + case 23:
1.15939 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.15940 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.15941 + attributes = null;
1.15942 + break starttagloop;
1.15943 + case 2:
1.15944 + case 54:
1.15945 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15946 + selfClosing = false;
1.15947 + attributes = null;
1.15948 + break starttagloop;
1.15949 + case 18:
1.15950 + case 16:
1.15951 + break inheadloop;
1.15952 + case 36:
1.15953 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15954 + this$static.originalMode = this$static.mode;
1.15955 + this$static.mode = 20;
1.15956 + $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
1.15957 + attributes = null;
1.15958 + break starttagloop;
1.15959 + case 26:
1.15960 + {
1.15961 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15962 + this$static.mode = 4;
1.15963 + }
1.15964 +
1.15965 + attributes = null;
1.15966 + break starttagloop;
1.15967 + case 31:
1.15968 + case 33:
1.15969 + case 25:
1.15970 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15971 + this$static.originalMode = this$static.mode;
1.15972 + this$static.mode = 20;
1.15973 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.15974 + attributes = null;
1.15975 + break starttagloop;
1.15976 + case 20:
1.15977 + break starttagloop;
1.15978 + default:$pop(this$static);
1.15979 + this$static.mode = 5;
1.15980 + continue starttagloop;
1.15981 + }
1.15982 + }
1.15983 +
1.15984 + case 4:
1.15985 + switch (group) {
1.15986 + case 23:
1.15987 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.15988 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.15989 + attributes = null;
1.15990 + break starttagloop;
1.15991 + case 16:
1.15992 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15993 + selfClosing = false;
1.15994 + attributes = null;
1.15995 + break starttagloop;
1.15996 + case 18:
1.15997 + $checkMetaCharset(this$static, attributes);
1.15998 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.15999 + selfClosing = false;
1.16000 + attributes = null;
1.16001 + break starttagloop;
1.16002 + case 33:
1.16003 + case 25:
1.16004 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16005 + this$static.originalMode = this$static.mode;
1.16006 + this$static.mode = 20;
1.16007 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.16008 + attributes = null;
1.16009 + break starttagloop;
1.16010 + case 20:
1.16011 + break starttagloop;
1.16012 + case 26:
1.16013 + break starttagloop;
1.16014 + default:$pop(this$static);
1.16015 + this$static.mode = 3;
1.16016 + continue;
1.16017 + }
1.16018 +
1.16019 + case 9:
1.16020 + switch (group) {
1.16021 + case 23:
1.16022 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.16023 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.16024 + attributes = null;
1.16025 + break starttagloop;
1.16026 + case 7:
1.16027 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16028 + selfClosing = false;
1.16029 + attributes = null;
1.16030 + break starttagloop;
1.16031 + default:if (this$static.currentPtr == 0) {
1.16032 + break starttagloop;
1.16033 + }
1.16034 +
1.16035 + $pop(this$static);
1.16036 + this$static.mode = 7;
1.16037 + continue;
1.16038 + }
1.16039 +
1.16040 + case 14:
1.16041 + switch (group) {
1.16042 + case 6:
1.16043 + case 39:
1.16044 + case 37:
1.16045 + case 40:
1.16046 + case 34:
1.16047 + $endSelect(this$static);
1.16048 + continue;
1.16049 + }
1.16050 +
1.16051 + case 13:
1.16052 + switch (group) {
1.16053 + case 23:
1.16054 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.16055 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.16056 + attributes = null;
1.16057 + break starttagloop;
1.16058 + case 28:
1.16059 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
1.16060 + $pop(this$static);
1.16061 + }
1.16062 +
1.16063 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16064 + attributes = null;
1.16065 + break starttagloop;
1.16066 + case 27:
1.16067 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
1.16068 + $pop(this$static);
1.16069 + }
1.16070 +
1.16071 + if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
1.16072 + $pop(this$static);
1.16073 + }
1.16074 +
1.16075 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16076 + attributes = null;
1.16077 + break starttagloop;
1.16078 + case 32:
1.16079 + eltPos = $findLastInTableScope(this$static, name);
1.16080 + if (eltPos == 2147483647) {
1.16081 + break starttagloop;
1.16082 + }
1.16083 + else {
1.16084 + while (this$static.currentPtr >= eltPos) {
1.16085 + $pop(this$static);
1.16086 + }
1.16087 + $resetTheInsertionMode(this$static);
1.16088 + break starttagloop;
1.16089 + }
1.16090 +
1.16091 + case 13:
1.16092 + case 35:
1.16093 + $endSelect(this$static);
1.16094 + continue;
1.16095 + case 31:
1.16096 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16097 + this$static.originalMode = this$static.mode;
1.16098 + this$static.mode = 20;
1.16099 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.16100 + attributes = null;
1.16101 + break starttagloop;
1.16102 + default:break starttagloop;
1.16103 + }
1.16104 +
1.16105 + case 15:
1.16106 + switch (group) {
1.16107 + case 23:
1.16108 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.16109 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.16110 + attributes = null;
1.16111 + break starttagloop;
1.16112 + default:this$static.mode = 6;
1.16113 + continue;
1.16114 + }
1.16115 +
1.16116 + case 16:
1.16117 + switch (group) {
1.16118 + case 11:
1.16119 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16120 + attributes = null;
1.16121 + break starttagloop;
1.16122 + case 10:
1.16123 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16124 + selfClosing = false;
1.16125 + attributes = null;
1.16126 + break starttagloop;
1.16127 + }
1.16128 +
1.16129 + case 17:
1.16130 + switch (group) {
1.16131 + case 23:
1.16132 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.16133 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.16134 + attributes = null;
1.16135 + break starttagloop;
1.16136 + case 25:
1.16137 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16138 + this$static.originalMode = this$static.mode;
1.16139 + this$static.mode = 20;
1.16140 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.16141 + attributes = null;
1.16142 + break starttagloop;
1.16143 + default:break starttagloop;
1.16144 + }
1.16145 +
1.16146 + case 0:
1.16147 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
1.16148 + this$static.mode = 1;
1.16149 + continue;
1.16150 + case 1:
1.16151 + switch (group) {
1.16152 + case 23:
1.16153 + if (attributes == ($clinit_91() , EMPTY_ATTRIBUTES)) {
1.16154 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
1.16155 + }
1.16156 + else {
1.16157 + $appendHtmlElementToDocumentAndPush(this$static, attributes);
1.16158 + }
1.16159 +
1.16160 + this$static.mode = 2;
1.16161 + attributes = null;
1.16162 + break starttagloop;
1.16163 + default:$appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
1.16164 + this$static.mode = 2;
1.16165 + continue;
1.16166 + }
1.16167 +
1.16168 + case 2:
1.16169 + switch (group) {
1.16170 + case 23:
1.16171 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.16172 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.16173 + attributes = null;
1.16174 + break starttagloop;
1.16175 + case 20:
1.16176 + $appendToCurrentNodeAndPushHeadElement(this$static, attributes);
1.16177 + this$static.mode = 3;
1.16178 + attributes = null;
1.16179 + break starttagloop;
1.16180 + default:$appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
1.16181 + this$static.mode = 3;
1.16182 + continue;
1.16183 + }
1.16184 +
1.16185 + case 5:
1.16186 + switch (group) {
1.16187 + case 23:
1.16188 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.16189 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.16190 + attributes = null;
1.16191 + break starttagloop;
1.16192 + case 3:
1.16193 + if (attributes.length_0 == 0) {
1.16194 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
1.16195 + }
1.16196 + else {
1.16197 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), attributes);
1.16198 + }
1.16199 +
1.16200 + this$static.mode = 21;
1.16201 + attributes = null;
1.16202 + break starttagloop;
1.16203 + case 11:
1.16204 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16205 + this$static.mode = 16;
1.16206 + attributes = null;
1.16207 + break starttagloop;
1.16208 + case 2:
1.16209 + $pushHeadPointerOntoStack(this$static);
1.16210 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16211 + selfClosing = false;
1.16212 + $pop(this$static);
1.16213 + attributes = null;
1.16214 + break starttagloop;
1.16215 + case 16:
1.16216 + $pushHeadPointerOntoStack(this$static);
1.16217 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16218 + selfClosing = false;
1.16219 + $pop(this$static);
1.16220 + attributes = null;
1.16221 + break starttagloop;
1.16222 + case 18:
1.16223 + $checkMetaCharset(this$static, attributes);
1.16224 + $pushHeadPointerOntoStack(this$static);
1.16225 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16226 + selfClosing = false;
1.16227 + $pop(this$static);
1.16228 + attributes = null;
1.16229 + break starttagloop;
1.16230 + case 31:
1.16231 + $pushHeadPointerOntoStack(this$static);
1.16232 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16233 + this$static.originalMode = this$static.mode;
1.16234 + this$static.mode = 20;
1.16235 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.16236 + attributes = null;
1.16237 + break starttagloop;
1.16238 + case 33:
1.16239 + case 25:
1.16240 + $pushHeadPointerOntoStack(this$static);
1.16241 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16242 + this$static.originalMode = this$static.mode;
1.16243 + this$static.mode = 20;
1.16244 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.16245 + attributes = null;
1.16246 + break starttagloop;
1.16247 + case 36:
1.16248 + $pushHeadPointerOntoStack(this$static);
1.16249 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16250 + this$static.originalMode = this$static.mode;
1.16251 + this$static.mode = 20;
1.16252 + $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
1.16253 + attributes = null;
1.16254 + break starttagloop;
1.16255 + case 20:
1.16256 + break starttagloop;
1.16257 + default:$appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
1.16258 + this$static.mode = 21;
1.16259 + continue;
1.16260 + }
1.16261 +
1.16262 + case 18:
1.16263 + switch (group) {
1.16264 + case 23:
1.16265 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
1.16266 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
1.16267 + attributes = null;
1.16268 + break starttagloop;
1.16269 + default:this$static.mode = 6;
1.16270 + continue;
1.16271 + }
1.16272 +
1.16273 + case 19:
1.16274 + switch (group) {
1.16275 + case 25:
1.16276 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
1.16277 + this$static.originalMode = this$static.mode;
1.16278 + this$static.mode = 20;
1.16279 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
1.16280 + attributes = null;
1.16281 + break starttagloop;
1.16282 + default:break starttagloop;
1.16283 + }
1.16284 +
1.16285 + }
1.16286 +
1.16287 + }
1.16288 + }
1.16289 + if (needsPostProcessing && this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
1.16290 + this$static.foreignFlag = 1;
1.16291 + }
1.16292 + attributes != ($clinit_91() , EMPTY_ATTRIBUTES);
1.16293 +}
1.16294 +
1.16295 +function $startTokenization(this$static, self){
1.16296 + var elt, node;
1.16297 + this$static.tokenizer = self;
1.16298 + this$static.stack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
1.16299 + this$static.listOfActiveFormattingElements = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
1.16300 + this$static.needToDropLF = false;
1.16301 + this$static.originalMode = 0;
1.16302 + this$static.currentPtr = -1;
1.16303 + this$static.listPtr = -1;
1.16304 + this$static.formPointer = null;
1.16305 + this$static.headPointer = null;
1.16306 + this$static.html4 = false;
1.16307 + $clearImpl(this$static.idLocations);
1.16308 + this$static.wantingComments = this$static.wantingComments;
1.16309 + this$static.script = null;
1.16310 + this$static.placeholder = null;
1.16311 + this$static.readyToRun = false;
1.16312 + this$static.charBufferLen = 0;
1.16313 + this$static.charBuffer = initDim(_3C_classLit, 42, -1, 1024, 1);
1.16314 + if (this$static.fragment) {
1.16315 + elt = $createHtmlElementSetAsRoot(this$static, $emptyAttributes(this$static.tokenizer));
1.16316 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
1.16317 + ++this$static.currentPtr;
1.16318 + this$static.stack[this$static.currentPtr] = node;
1.16319 + $resetTheInsertionMode(this$static);
1.16320 + if ('title' == this$static.contextName || 'textarea' == this$static.contextName) {
1.16321 + $setContentModelFlag(this$static.tokenizer, 1);
1.16322 + }
1.16323 + else if ('style' == this$static.contextName || 'script' == this$static.contextName || 'xmp' == this$static.contextName || 'iframe' == this$static.contextName || 'noembed' == this$static.contextName || 'noframes' == this$static.contextName) {
1.16324 + $setContentModelFlag(this$static.tokenizer, 2);
1.16325 + }
1.16326 + else if ('plaintext' == this$static.contextName) {
1.16327 + $setContentModelFlag(this$static.tokenizer, 3);
1.16328 + }
1.16329 + else {
1.16330 + $setContentModelFlag(this$static.tokenizer, 0);
1.16331 + }
1.16332 + this$static.contextName = null;
1.16333 + }
1.16334 + else {
1.16335 + this$static.mode = 0;
1.16336 + this$static.foreignFlag = 1;
1.16337 + }
1.16338 +}
1.16339 +
1.16340 +function extractCharsetFromContent(attributeValue){
1.16341 + var buffer, c, charset, charsetState, end, i, start;
1.16342 + charsetState = 0;
1.16343 + start = -1;
1.16344 + end = -1;
1.16345 + buffer = $toCharArray(attributeValue);
1.16346 + charsetloop: for (i = 0; i < buffer.length; ++i) {
1.16347 + c = buffer[i];
1.16348 + switch (charsetState) {
1.16349 + case 0:
1.16350 + switch (c) {
1.16351 + case 99:
1.16352 + case 67:
1.16353 + charsetState = 1;
1.16354 + continue;
1.16355 + default:continue;
1.16356 + }
1.16357 +
1.16358 + case 1:
1.16359 + switch (c) {
1.16360 + case 104:
1.16361 + case 72:
1.16362 + charsetState = 2;
1.16363 + continue;
1.16364 + default:charsetState = 0;
1.16365 + continue;
1.16366 + }
1.16367 +
1.16368 + case 2:
1.16369 + switch (c) {
1.16370 + case 97:
1.16371 + case 65:
1.16372 + charsetState = 3;
1.16373 + continue;
1.16374 + default:charsetState = 0;
1.16375 + continue;
1.16376 + }
1.16377 +
1.16378 + case 3:
1.16379 + switch (c) {
1.16380 + case 114:
1.16381 + case 82:
1.16382 + charsetState = 4;
1.16383 + continue;
1.16384 + default:charsetState = 0;
1.16385 + continue;
1.16386 + }
1.16387 +
1.16388 + case 4:
1.16389 + switch (c) {
1.16390 + case 115:
1.16391 + case 83:
1.16392 + charsetState = 5;
1.16393 + continue;
1.16394 + default:charsetState = 0;
1.16395 + continue;
1.16396 + }
1.16397 +
1.16398 + case 5:
1.16399 + switch (c) {
1.16400 + case 101:
1.16401 + case 69:
1.16402 + charsetState = 6;
1.16403 + continue;
1.16404 + default:charsetState = 0;
1.16405 + continue;
1.16406 + }
1.16407 +
1.16408 + case 6:
1.16409 + switch (c) {
1.16410 + case 116:
1.16411 + case 84:
1.16412 + charsetState = 7;
1.16413 + continue;
1.16414 + default:charsetState = 0;
1.16415 + continue;
1.16416 + }
1.16417 +
1.16418 + case 7:
1.16419 + switch (c) {
1.16420 + case 9:
1.16421 + case 10:
1.16422 + case 12:
1.16423 + case 13:
1.16424 + case 32:
1.16425 + continue;
1.16426 + case 61:
1.16427 + charsetState = 8;
1.16428 + continue;
1.16429 + default:return null;
1.16430 + }
1.16431 +
1.16432 + case 8:
1.16433 + switch (c) {
1.16434 + case 9:
1.16435 + case 10:
1.16436 + case 12:
1.16437 + case 13:
1.16438 + case 32:
1.16439 + continue;
1.16440 + case 39:
1.16441 + start = i + 1;
1.16442 + charsetState = 9;
1.16443 + continue;
1.16444 + case 34:
1.16445 + start = i + 1;
1.16446 + charsetState = 10;
1.16447 + continue;
1.16448 + default:start = i;
1.16449 + charsetState = 11;
1.16450 + continue;
1.16451 + }
1.16452 +
1.16453 + case 9:
1.16454 + switch (c) {
1.16455 + case 39:
1.16456 + end = i;
1.16457 + break charsetloop;
1.16458 + default:continue;
1.16459 + }
1.16460 +
1.16461 + case 10:
1.16462 + switch (c) {
1.16463 + case 34:
1.16464 + end = i;
1.16465 + break charsetloop;
1.16466 + default:continue;
1.16467 + }
1.16468 +
1.16469 + case 11:
1.16470 + switch (c) {
1.16471 + case 9:
1.16472 + case 10:
1.16473 + case 12:
1.16474 + case 13:
1.16475 + case 32:
1.16476 + case 59:
1.16477 + end = i;
1.16478 + break charsetloop;
1.16479 + default:continue;
1.16480 + }
1.16481 +
1.16482 + }
1.16483 + }
1.16484 + charset = null;
1.16485 + if (start != -1) {
1.16486 + if (end == -1) {
1.16487 + end = buffer.length;
1.16488 + }
1.16489 + charset = valueOf_1(buffer, start, end - start);
1.16490 + }
1.16491 + return charset;
1.16492 +}
1.16493 +
1.16494 +function getClass_57(){
1.16495 + return Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit;
1.16496 +}
1.16497 +
1.16498 +function TreeBuilder(){
1.16499 +}
1.16500 +
1.16501 +_ = TreeBuilder.prototype = new Object_0();
1.16502 +_.getClass$ = getClass_57;
1.16503 +_.typeId$ = 0;
1.16504 +_.charBuffer = null;
1.16505 +_.charBufferLen = 0;
1.16506 +_.contextName = null;
1.16507 +_.contextNamespace = null;
1.16508 +_.currentPtr = -1;
1.16509 +_.foreignFlag = 1;
1.16510 +_.formPointer = null;
1.16511 +_.fragment = false;
1.16512 +_.headPointer = null;
1.16513 +_.html4 = false;
1.16514 +_.listOfActiveFormattingElements = null;
1.16515 +_.listPtr = -1;
1.16516 +_.mode = 0;
1.16517 +_.needToDropLF = false;
1.16518 +_.originalMode = 0;
1.16519 +_.quirks = false;
1.16520 +_.stack = null;
1.16521 +_.tokenizer = null;
1.16522 +_.wantingComments = false;
1.16523 +var HTML4_PUBLIC_IDS, ISINDEX_PROMPT, QUIRKY_PUBLIC_IDS;
1.16524 +function $clinit_88(){
1.16525 + $clinit_88 = nullMethod;
1.16526 + $clinit_98();
1.16527 +}
1.16528 +
1.16529 +function $accumulateCharacters(this$static, buf, start, length){
1.16530 + var newBuf, newLen;
1.16531 + newLen = this$static.charBufferLen + length;
1.16532 + if (newLen > this$static.charBuffer.length) {
1.16533 + newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
1.16534 + arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
1.16535 + this$static.charBuffer = newBuf;
1.16536 + }
1.16537 + arraycopy(buf, start, this$static.charBuffer, this$static.charBufferLen, length);
1.16538 + this$static.charBufferLen = newLen;
1.16539 +}
1.16540 +
1.16541 +function $insertFosterParentedCharacters_0(this$static, buf, start, length, table, stackParent){
1.16542 + var end;
1.16543 + $insertFosterParentedCharacters(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)), table, stackParent);
1.16544 +}
1.16545 +
1.16546 +function getClass_50(){
1.16547 + return Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit;
1.16548 +}
1.16549 +
1.16550 +function CoalescingTreeBuilder(){
1.16551 +}
1.16552 +
1.16553 +_ = CoalescingTreeBuilder.prototype = new TreeBuilder();
1.16554 +_.getClass$ = getClass_50;
1.16555 +_.typeId$ = 0;
1.16556 +function $clinit_82(){
1.16557 + $clinit_82 = nullMethod;
1.16558 + $clinit_88();
1.16559 +}
1.16560 +
1.16561 +function $BrowserTreeBuilder(this$static, document_0){
1.16562 + $clinit_82();
1.16563 + this$static.doctypeExpectation = ($clinit_77() , HTML);
1.16564 + this$static.namePolicy = ($clinit_80() , ALTER_INFOSET);
1.16565 + this$static.idLocations = $HashMap(new HashMap());
1.16566 + this$static.fragment = false;
1.16567 + this$static.scriptStack = $LinkedList(new LinkedList());
1.16568 + this$static.document_0 = document_0;
1.16569 + installExplorerCreateElementNS(document_0);
1.16570 + return this$static;
1.16571 +}
1.16572 +
1.16573 +function $addAttributesToElement(this$static, element, attributes){
1.16574 + var $e0, e, i, localName, uri;
1.16575 + try {
1.16576 + for (i = 0; i < attributes.length_0; ++i) {
1.16577 + localName = $getLocalName(attributes, i);
1.16578 + uri = $getURI(attributes, i);
1.16579 + if (!element.hasAttributeNS(uri, localName)) {
1.16580 + element.setAttributeNS(uri, localName, $getValue(attributes, i));
1.16581 + }
1.16582 + }
1.16583 + }
1.16584 + catch ($e0) {
1.16585 + $e0 = caught($e0);
1.16586 + if (instanceOf($e0, 19)) {
1.16587 + e = $e0;
1.16588 + $fatal_0(this$static, e);
1.16589 + }
1.16590 + else
1.16591 + throw $e0;
1.16592 + }
1.16593 +}
1.16594 +
1.16595 +function $appendCharacters(this$static, parent, text){
1.16596 + var $e0, e;
1.16597 + try {
1.16598 + if (parent == this$static.placeholder) {
1.16599 + this$static.script.appendChild(this$static.document_0.createTextNode(text));
1.16600 + }
1.16601 + parent.appendChild(this$static.document_0.createTextNode(text));
1.16602 + }
1.16603 + catch ($e0) {
1.16604 + $e0 = caught($e0);
1.16605 + if (instanceOf($e0, 19)) {
1.16606 + e = $e0;
1.16607 + $fatal_0(this$static, e);
1.16608 + }
1.16609 + else
1.16610 + throw $e0;
1.16611 + }
1.16612 +}
1.16613 +
1.16614 +function $appendChildrenToNewParent(this$static, oldParent, newParent){
1.16615 + var $e0, e;
1.16616 + try {
1.16617 + while (oldParent.hasChildNodes()) {
1.16618 + newParent.appendChild(oldParent.firstChild);
1.16619 + }
1.16620 + }
1.16621 + catch ($e0) {
1.16622 + $e0 = caught($e0);
1.16623 + if (instanceOf($e0, 19)) {
1.16624 + e = $e0;
1.16625 + $fatal_0(this$static, e);
1.16626 + }
1.16627 + else
1.16628 + throw $e0;
1.16629 + }
1.16630 +}
1.16631 +
1.16632 +function $appendComment(this$static, parent, comment){
1.16633 + var $e0, e;
1.16634 + try {
1.16635 + if (parent == this$static.placeholder) {
1.16636 + this$static.script.appendChild(this$static.document_0.createComment(comment));
1.16637 + }
1.16638 + parent.appendChild(this$static.document_0.createComment(comment));
1.16639 + }
1.16640 + catch ($e0) {
1.16641 + $e0 = caught($e0);
1.16642 + if (instanceOf($e0, 19)) {
1.16643 + e = $e0;
1.16644 + $fatal_0(this$static, e);
1.16645 + }
1.16646 + else
1.16647 + throw $e0;
1.16648 + }
1.16649 +}
1.16650 +
1.16651 +function $appendCommentToDocument(this$static, comment){
1.16652 + var $e0, e;
1.16653 + try {
1.16654 + this$static.document_0.appendChild(this$static.document_0.createComment(comment));
1.16655 + }
1.16656 + catch ($e0) {
1.16657 + $e0 = caught($e0);
1.16658 + if (instanceOf($e0, 19)) {
1.16659 + e = $e0;
1.16660 + $fatal_0(this$static, e);
1.16661 + }
1.16662 + else
1.16663 + throw $e0;
1.16664 + }
1.16665 +}
1.16666 +
1.16667 +function $appendElement(this$static, child, newParent){
1.16668 + var $e0, e;
1.16669 + try {
1.16670 + if (newParent == this$static.placeholder) {
1.16671 + this$static.script.appendChild(child.cloneNode(true));
1.16672 + }
1.16673 + newParent.appendChild(child);
1.16674 + }
1.16675 + catch ($e0) {
1.16676 + $e0 = caught($e0);
1.16677 + if (instanceOf($e0, 19)) {
1.16678 + e = $e0;
1.16679 + $fatal_0(this$static, e);
1.16680 + }
1.16681 + else
1.16682 + throw $e0;
1.16683 + }
1.16684 +}
1.16685 +
1.16686 +function $createElement(this$static, ns, name, attributes){
1.16687 + var $e0, e, i, rv;
1.16688 + try {
1.16689 + rv = this$static.document_0.createElementNS(ns, name);
1.16690 + for (i = 0; i < attributes.length_0; ++i) {
1.16691 + rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
1.16692 + }
1.16693 + if ('script' == name) {
1.16694 + if (this$static.placeholder) {
1.16695 + $addLast(this$static.scriptStack, $BrowserTreeBuilder$ScriptHolder(new BrowserTreeBuilder$ScriptHolder(), this$static.script, this$static.placeholder));
1.16696 + }
1.16697 + this$static.script = rv;
1.16698 + this$static.placeholder = this$static.document_0.createElementNS('http://n.validator.nu/placeholder/', 'script');
1.16699 + rv = this$static.placeholder;
1.16700 + for (i = 0; i < attributes.length_0; ++i) {
1.16701 + rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
1.16702 + }
1.16703 + }
1.16704 + return rv;
1.16705 + }
1.16706 + catch ($e0) {
1.16707 + $e0 = caught($e0);
1.16708 + if (instanceOf($e0, 19)) {
1.16709 + e = $e0;
1.16710 + $fatal_0(this$static, e);
1.16711 + throw $RuntimeException(new RuntimeException(), 'Unreachable');
1.16712 + }
1.16713 + else
1.16714 + throw $e0;
1.16715 + }
1.16716 +}
1.16717 +
1.16718 +function $createElement_0(this$static, ns, name, attributes){
1.16719 + var $e0, e, rv;
1.16720 + try {
1.16721 + rv = $createElement(this$static, ns, name, attributes);
1.16722 + return rv;
1.16723 + }
1.16724 + catch ($e0) {
1.16725 + $e0 = caught($e0);
1.16726 + if (instanceOf($e0, 19)) {
1.16727 + e = $e0;
1.16728 + $fatal_0(this$static, e);
1.16729 + return null;
1.16730 + }
1.16731 + else
1.16732 + throw $e0;
1.16733 + }
1.16734 +}
1.16735 +
1.16736 +function $createHtmlElementSetAsRoot(this$static, attributes){
1.16737 + var $e0, e, i, rv;
1.16738 + try {
1.16739 + rv = this$static.document_0.createElementNS('http://www.w3.org/1999/xhtml', 'html');
1.16740 + for (i = 0; i < attributes.length_0; ++i) {
1.16741 + rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
1.16742 + }
1.16743 + this$static.document_0.appendChild(rv);
1.16744 + return rv;
1.16745 + }
1.16746 + catch ($e0) {
1.16747 + $e0 = caught($e0);
1.16748 + if (instanceOf($e0, 19)) {
1.16749 + e = $e0;
1.16750 + $fatal_0(this$static, e);
1.16751 + throw $RuntimeException(new RuntimeException(), 'Unreachable');
1.16752 + }
1.16753 + else
1.16754 + throw $e0;
1.16755 + }
1.16756 +}
1.16757 +
1.16758 +function $detachFromParent(this$static, element){
1.16759 + var $e0, e, parent;
1.16760 + try {
1.16761 + parent = element.parentNode;
1.16762 + if (parent) {
1.16763 + parent.removeChild(element);
1.16764 + }
1.16765 + }
1.16766 + catch ($e0) {
1.16767 + $e0 = caught($e0);
1.16768 + if (instanceOf($e0, 19)) {
1.16769 + e = $e0;
1.16770 + $fatal_0(this$static, e);
1.16771 + }
1.16772 + else
1.16773 + throw $e0;
1.16774 + }
1.16775 +}
1.16776 +
1.16777 +function $elementPopped(this$static, ns, name, node){
1.16778 + if (node == this$static.placeholder) {
1.16779 + this$static.readyToRun = true;
1.16780 + this$static.tokenizer.shouldSuspend = true;
1.16781 + }
1.16782 + __elementPopped__(ns, name, node);
1.16783 +}
1.16784 +
1.16785 +function $getDocument(this$static){
1.16786 + var rv;
1.16787 + rv = this$static.document_0;
1.16788 + this$static.document_0 = null;
1.16789 + return rv;
1.16790 +}
1.16791 +
1.16792 +function $insertFosterParentedCharacters(this$static, text, table, stackParent){
1.16793 + var $e0, child, e, parent;
1.16794 + try {
1.16795 + child = this$static.document_0.createTextNode(text);
1.16796 + parent = table.parentNode;
1.16797 + if (!!parent && parent.nodeType == 1) {
1.16798 + parent.insertBefore(child, table);
1.16799 + }
1.16800 + else {
1.16801 + stackParent.appendChild(child);
1.16802 + }
1.16803 + }
1.16804 + catch ($e0) {
1.16805 + $e0 = caught($e0);
1.16806 + if (instanceOf($e0, 19)) {
1.16807 + e = $e0;
1.16808 + $fatal_0(this$static, e);
1.16809 + }
1.16810 + else
1.16811 + throw $e0;
1.16812 + }
1.16813 +}
1.16814 +
1.16815 +function $insertFosterParentedChild(this$static, child, table, stackParent){
1.16816 + var $e0, e, parent;
1.16817 + parent = table.parentNode;
1.16818 + try {
1.16819 + if (!!parent && parent.nodeType == 1) {
1.16820 + parent.insertBefore(child, table);
1.16821 + }
1.16822 + else {
1.16823 + stackParent.appendChild(child);
1.16824 + }
1.16825 + }
1.16826 + catch ($e0) {
1.16827 + $e0 = caught($e0);
1.16828 + if (instanceOf($e0, 19)) {
1.16829 + e = $e0;
1.16830 + $fatal_0(this$static, e);
1.16831 + }
1.16832 + else
1.16833 + throw $e0;
1.16834 + }
1.16835 +}
1.16836 +
1.16837 +function $maybeRunScript(this$static){
1.16838 + var scriptHolder;
1.16839 + if (this$static.readyToRun) {
1.16840 + this$static.readyToRun = false;
1.16841 + replace_0(this$static.placeholder, this$static.script);
1.16842 + if (this$static.scriptStack.size == 0) {
1.16843 + this$static.script = null;
1.16844 + this$static.placeholder = null;
1.16845 + }
1.16846 + else {
1.16847 + scriptHolder = dynamicCast($removeLast(this$static.scriptStack), 20);
1.16848 + this$static.script = scriptHolder.script;
1.16849 + this$static.placeholder = scriptHolder.placeholder;
1.16850 + }
1.16851 + }
1.16852 +}
1.16853 +
1.16854 +function getClass_45(){
1.16855 + return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit;
1.16856 +}
1.16857 +
1.16858 +function installExplorerCreateElementNS(doc){
1.16859 + if (!doc.createElementNS) {
1.16860 + doc.createElementNS = function(uri, local){
1.16861 + if ('http://www.w3.org/1999/xhtml' == uri) {
1.16862 + return doc.createElement(local);
1.16863 + }
1.16864 + else if ('http://www.w3.org/1998/Math/MathML' == uri) {
1.16865 + if (!doc.mathplayerinitialized) {
1.16866 + var obj = document.createElement('object');
1.16867 + obj.setAttribute('id', 'mathplayer');
1.16868 + obj.setAttribute('classid', 'clsid:32F66A20-7614-11D4-BD11-00104BD3F987');
1.16869 + document.getElementsByTagName('head')[0].appendChild(obj);
1.16870 + document.namespaces.add('m', 'http://www.w3.org/1998/Math/MathML', '#mathplayer');
1.16871 + doc.mathplayerinitialized = true;
1.16872 + }
1.16873 + return doc.createElement('m:' + local);
1.16874 + }
1.16875 + else if ('http://www.w3.org/2000/svg' == uri) {
1.16876 + if (!doc.renesisinitialized) {
1.16877 + var obj = document.createElement('object');
1.16878 + obj.setAttribute('id', 'renesis');
1.16879 + obj.setAttribute('classid', 'clsid:AC159093-1683-4BA2-9DCF-0C350141D7F2');
1.16880 + document.getElementsByTagName('head')[0].appendChild(obj);
1.16881 + document.namespaces.add('s', 'http://www.w3.org/2000/svg', '#renesis');
1.16882 + doc.renesisinitialized = true;
1.16883 + }
1.16884 + return doc.createElement('s:' + local);
1.16885 + }
1.16886 + else {
1.16887 + }
1.16888 + }
1.16889 + ;
1.16890 + }
1.16891 +}
1.16892 +
1.16893 +function replace_0(oldNode, newNode){
1.16894 + oldNode.parentNode.replaceChild(newNode, oldNode);
1.16895 + __elementPopped__('', newNode.nodeName, newNode);
1.16896 +}
1.16897 +
1.16898 +function BrowserTreeBuilder(){
1.16899 +}
1.16900 +
1.16901 +_ = BrowserTreeBuilder.prototype = new CoalescingTreeBuilder();
1.16902 +_.getClass$ = getClass_45;
1.16903 +_.typeId$ = 0;
1.16904 +_.document_0 = null;
1.16905 +_.placeholder = null;
1.16906 +_.readyToRun = false;
1.16907 +_.script = null;
1.16908 +function $BrowserTreeBuilder$ScriptHolder(this$static, script, placeholder){
1.16909 + this$static.script = script;
1.16910 + this$static.placeholder = placeholder;
1.16911 + return this$static;
1.16912 +}
1.16913 +
1.16914 +function getClass_44(){
1.16915 + return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit;
1.16916 +}
1.16917 +
1.16918 +function BrowserTreeBuilder$ScriptHolder(){
1.16919 +}
1.16920 +
1.16921 +_ = BrowserTreeBuilder$ScriptHolder.prototype = new Object_0();
1.16922 +_.getClass$ = getClass_44;
1.16923 +_.typeId$ = 34;
1.16924 +_.placeholder = null;
1.16925 +_.script = null;
1.16926 +function $HtmlParser(this$static, document_0){
1.16927 + this$static.documentWriteBuffer = $StringBuilder(new StringBuilder());
1.16928 + this$static.bufferStack = $LinkedList(new LinkedList());
1.16929 + this$static.domTreeBuilder = $BrowserTreeBuilder(new BrowserTreeBuilder(), document_0);
1.16930 + this$static.tokenizer = $ErrorReportingTokenizer(new ErrorReportingTokenizer(), this$static.domTreeBuilder);
1.16931 + this$static.domTreeBuilder.namePolicy = ($clinit_80() , ALTER_INFOSET);
1.16932 + this$static.tokenizer.commentPolicy = ALTER_INFOSET;
1.16933 + this$static.tokenizer.contentNonXmlCharPolicy = ALTER_INFOSET;
1.16934 + this$static.tokenizer.contentSpacePolicy = ALTER_INFOSET;
1.16935 + this$static.tokenizer.namePolicy = ALTER_INFOSET;
1.16936 + $setXmlnsPolicy(this$static.tokenizer, ALTER_INFOSET);
1.16937 + return this$static;
1.16938 +}
1.16939 +
1.16940 +function $parse(this$static, source, useSetTimeouts, callback){
1.16941 + this$static.parseEndListener = callback;
1.16942 + $setFragmentContext(this$static.domTreeBuilder, null);
1.16943 + this$static.lastWasCR = false;
1.16944 + this$static.ending = false;
1.16945 + $setLength(this$static.documentWriteBuffer, 0);
1.16946 + this$static.streamLength = source.length;
1.16947 + this$static.stream = $UTF16Buffer(new UTF16Buffer(), $toCharArray(source), 0, this$static.streamLength < 512?this$static.streamLength:512);
1.16948 + $clear(this$static.bufferStack);
1.16949 + $addLast(this$static.bufferStack, this$static.stream);
1.16950 + $setFragmentContext(this$static.domTreeBuilder, null);
1.16951 + $start_0(this$static.tokenizer);
1.16952 + $pump(this$static, useSetTimeouts);
1.16953 +}
1.16954 +
1.16955 +function $pump(this$static, useSetTimeouts){
1.16956 + var $e0, buffer, docWriteLen, newBuf, newEnd, timer;
1.16957 + if (this$static.ending) {
1.16958 + $end(this$static.tokenizer);
1.16959 + $getDocument(this$static.domTreeBuilder);
1.16960 + this$static.parseEndListener.callback();
1.16961 + return;
1.16962 + }
1.16963 + docWriteLen = this$static.documentWriteBuffer.stringLength;
1.16964 + if (docWriteLen > 0) {
1.16965 + newBuf = initDim(_3C_classLit, 42, -1, docWriteLen, 1);
1.16966 + $getChars(this$static.documentWriteBuffer, 0, docWriteLen, newBuf, 0);
1.16967 + $addLast(this$static.bufferStack, $UTF16Buffer(new UTF16Buffer(), newBuf, 0, docWriteLen));
1.16968 + $setLength(this$static.documentWriteBuffer, 0);
1.16969 + }
1.16970 + for (;;) {
1.16971 + buffer = dynamicCast($getLast(this$static.bufferStack), 21);
1.16972 + if (buffer.start >= buffer.end) {
1.16973 + if (buffer == this$static.stream) {
1.16974 + if (buffer.end == this$static.streamLength) {
1.16975 + $eof(this$static.tokenizer);
1.16976 + this$static.ending = true;
1.16977 + break;
1.16978 + }
1.16979 + else {
1.16980 + newEnd = buffer.start + 512;
1.16981 + buffer.end = newEnd < this$static.streamLength?newEnd:this$static.streamLength;
1.16982 + continue;
1.16983 + }
1.16984 + }
1.16985 + else {
1.16986 + dynamicCast($removeLast(this$static.bufferStack), 21);
1.16987 + continue;
1.16988 + }
1.16989 + }
1.16990 + $adjust(buffer, this$static.lastWasCR);
1.16991 + this$static.lastWasCR = false;
1.16992 + if (buffer.start < buffer.end) {
1.16993 + this$static.lastWasCR = $tokenizeBuffer(this$static.tokenizer, buffer);
1.16994 + $maybeRunScript(this$static.domTreeBuilder);
1.16995 + break;
1.16996 + }
1.16997 + else {
1.16998 + continue;
1.16999 + }
1.17000 + }
1.17001 + if (useSetTimeouts) {
1.17002 + timer = $HtmlParser$1(new HtmlParser$1(), this$static);
1.17003 + $schedule(timer, 1);
1.17004 + }
1.17005 + else {
1.17006 + try {
1.17007 + $pump(this$static, false);
1.17008 + }
1.17009 + catch ($e0) {
1.17010 + $e0 = caught($e0);
1.17011 + if (instanceOf($e0, 22)) {
1.17012 + this$static.ending = true;
1.17013 + }
1.17014 + else
1.17015 + throw $e0;
1.17016 + }
1.17017 + }
1.17018 +}
1.17019 +
1.17020 +function documentWrite(text){
1.17021 + var buffer;
1.17022 + buffer = $UTF16Buffer(new UTF16Buffer(), $toCharArray(text), 0, text.length);
1.17023 + while (buffer.start < buffer.end) {
1.17024 + $adjust(buffer, this.lastWasCR);
1.17025 + this.lastWasCR = false;
1.17026 + if (buffer.start < buffer.end) {
1.17027 + this.lastWasCR = $tokenizeBuffer(this.tokenizer, buffer);
1.17028 + $maybeRunScript(this.domTreeBuilder);
1.17029 + }
1.17030 + }
1.17031 +}
1.17032 +
1.17033 +function getClass_47(){
1.17034 + return Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit;
1.17035 +}
1.17036 +
1.17037 +function HtmlParser(){
1.17038 +}
1.17039 +
1.17040 +_ = HtmlParser.prototype = new Object_0();
1.17041 +_.documentWrite = documentWrite;
1.17042 +_.getClass$ = getClass_47;
1.17043 +_.typeId$ = 0;
1.17044 +_.domTreeBuilder = null;
1.17045 +_.ending = false;
1.17046 +_.lastWasCR = false;
1.17047 +_.parseEndListener = null;
1.17048 +_.stream = null;
1.17049 +_.streamLength = 0;
1.17050 +_.tokenizer = null;
1.17051 +function $clinit_83(){
1.17052 + $clinit_83 = nullMethod;
1.17053 + $clinit_12();
1.17054 +}
1.17055 +
1.17056 +function $HtmlParser$1(this$static, this$0){
1.17057 + $clinit_83();
1.17058 + this$static.this$0 = this$0;
1.17059 + return this$static;
1.17060 +}
1.17061 +
1.17062 +function $run(this$static){
1.17063 + var $e0;
1.17064 + // try {
1.17065 + $pump(this$static.this$0, true);
1.17066 + /*}
1.17067 + catch ($e0) {
1.17068 + $e0 = caught($e0);
1.17069 + if (instanceOf($e0, 22)) {
1.17070 + this$static.this$0.ending = true;
1.17071 + }
1.17072 + else
1.17073 + throw $e0;
1.17074 + } */
1.17075 +}
1.17076 +
1.17077 +function getClass_46(){
1.17078 + return Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit;
1.17079 +}
1.17080 +
1.17081 +function HtmlParser$1(){
1.17082 +}
1.17083 +
1.17084 +_ = HtmlParser$1.prototype = new Timer();
1.17085 +_.getClass$ = getClass_46;
1.17086 +_.typeId$ = 35;
1.17087 +_.this$0 = null;
1.17088 +function installDocWrite(doc, parser){
1.17089 + doc.write = function(){
1.17090 + if (arguments.length == 0) {
1.17091 + return;
1.17092 + }
1.17093 + var text = arguments[0];
1.17094 + for (var i = 1; i < arguments.length; i++) {
1.17095 + text += arguments[i];
1.17096 + }
1.17097 + parser.documentWrite(text);
1.17098 + }
1.17099 + ;
1.17100 + doc.writeln = function(){
1.17101 + if (arguments.length == 0) {
1.17102 + parser.documentWrite('\n');
1.17103 + return;
1.17104 + }
1.17105 + var text = arguments[0];
1.17106 + for (var i = 1; i < arguments.length; i++) {
1.17107 + text += arguments[i];
1.17108 + }
1.17109 + text += '\n';
1.17110 + parser.documentWrite(text);
1.17111 + }
1.17112 + ;
1.17113 +}
1.17114 +
1.17115 +function parseHtmlDocument(source, document_0, useSetTimeouts, readyCallback, errorHandler){
1.17116 + var parser;
1.17117 + if (!readyCallback) {
1.17118 + readyCallback = createFunction();
1.17119 + }
1.17120 + zapChildren(document_0);
1.17121 + parser = $HtmlParser(new HtmlParser(), document_0);
1.17122 + installDocWrite(document_0, parser);
1.17123 + $parse(parser, source, useSetTimeouts, $ParseEndListener(new ParseEndListener(), readyCallback));
1.17124 +}
1.17125 +
1.17126 +function zapChildren(node){
1.17127 + while (node.hasChildNodes()) {
1.17128 + node.removeChild(node.lastChild);
1.17129 + }
1.17130 +}
1.17131 +
1.17132 +function $ParseEndListener(this$static, callback){
1.17133 + this$static.callback = callback;
1.17134 + return this$static;
1.17135 +}
1.17136 +
1.17137 +function getClass_48(){
1.17138 + return Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit;
1.17139 +}
1.17140 +
1.17141 +function ParseEndListener(){
1.17142 +}
1.17143 +
1.17144 +_ = ParseEndListener.prototype = new Object_0();
1.17145 +_.getClass$ = getClass_48;
1.17146 +_.typeId$ = 0;
1.17147 +_.callback = null;
1.17148 +function $clinit_87(){
1.17149 + var arr_32;
1.17150 + $clinit_87 = nullMethod;
1.17151 + ALL_NO_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', '']);
1.17152 + XMLNS_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/2000/xmlns/', 'http://www.w3.org/2000/xmlns/', '']);
1.17153 + XML_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/XML/1998/namespace', 'http://www.w3.org/XML/1998/namespace', '']);
1.17154 + XLINK_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/1999/xlink', 'http://www.w3.org/1999/xlink', '']);
1.17155 + LANG_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', 'http://www.w3.org/XML/1998/namespace']);
1.17156 + ALL_NO_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, null]);
1.17157 + XMLNS_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xmlns', 'xmlns', null]);
1.17158 + XLINK_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xlink', 'xlink', null]);
1.17159 + XML_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xml', 'xml', null]);
1.17160 + LANG_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, 'xml']);
1.17161 + ALL_NCNAME = initValues(_3Z_classLit, 0, -1, [true, true, true, true]);
1.17162 + ALL_NO_NCNAME = initValues(_3Z_classLit, 0, -1, [false, false, false, false]);
1.17163 + D = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('d'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17164 + K = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17165 + R = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('r'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17166 + X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17167 + Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17168 + Z = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('z'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17169 + BY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('by'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17170 + CX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cx'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17171 + CY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cy'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17172 + DX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dx'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17173 + DY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dy'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17174 + G2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g2'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17175 + G1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g1'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17176 + FX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fx'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17177 + FY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fy'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17178 + K4 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k4'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17179 + K2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k2'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17180 + K3 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k3'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17181 + K1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k1'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17182 + ID = $AttributeName_0(new AttributeName(), ALL_NO_NS, SAME_LOCAL('id'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17183 + IN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17184 + U2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u2'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17185 + U1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u1'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17186 + RT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rt'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17187 + RX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rx'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17188 + RY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ry'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17189 + TO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('to'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17190 + Y2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y2'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17191 + Y1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y1'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17192 + X1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x1'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17193 + X2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x2'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17194 + ALT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alt'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17195 + DIR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dir'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17196 + DUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dur'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17197 + END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('end'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17198 + FOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('for'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17199 + IN2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in2'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17200 + MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('max'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17201 + MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('min'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17202 + LOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('low'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17203 + REL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rel'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17204 + REV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rev'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17205 + SRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('src'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17206 + AXIS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('axis'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17207 + ABBR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('abbr'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17208 + BBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17209 + CITE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cite'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17210 + CODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('code'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17211 + BIAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bias'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17212 + COLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cols'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17213 + CLIP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17214 + CHAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('char'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17215 + BASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('base'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17216 + EDGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('edge'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17217 + DATA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('data'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17218 + FILL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17219 + FROM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('from'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17220 + FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('form'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17221 + FACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('face'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17222 + HIGH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('high'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17223 + HREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('href'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17224 + OPEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('open'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17225 + ICON = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('icon'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17226 + NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('name'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17227 + MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17228 + MASK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mask'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17229 + LINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('link'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17230 + LANG = $AttributeName(new AttributeName(), LANG_NS, SAME_LOCAL('lang'), LANG_PREFIX, ALL_NCNAME, false);
1.17231 + LIST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('list'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17232 + TYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('type'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17233 + WHEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('when'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17234 + WRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('wrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17235 + TEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17236 + PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('path'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17237 + PING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ping'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17238 + REFX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refx', 'refX'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17239 + REFY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refy', 'refY'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17240 + SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('size'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17241 + SEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seed'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17242 + ROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rows'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17243 + SPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('span'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17244 + STEP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('step'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17245 + ROLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('role'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17246 + XREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('xref'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17247 + ASYNC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('async'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17248 + ALINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alink'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17249 + ALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('align'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17250 + CLOSE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('close'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17251 + COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17252 + CLASS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('class'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17253 + CLEAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clear'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17254 + BEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('begin'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17255 + DEPTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('depth'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17256 + DEFER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('defer'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17257 + FENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fence'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17258 + FRAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frame'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17259 + ISMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ismap'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17260 + ONEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onend'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17261 + INDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('index'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17262 + ORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('order'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17263 + OTHER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('other'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17264 + ONCUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncut'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17265 + NARGS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nargs'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17266 + MEDIA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('media'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17267 + LABEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('label'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17268 + LOCAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('local'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17269 + WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('width'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17270 + TITLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('title'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17271 + VLINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vlink'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17272 + VALUE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('value'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17273 + SLOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('slope'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17274 + SHAPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17275 + SCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scope'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17276 + SCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scale'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17277 + SPEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('speed'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17278 + STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('style'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17279 + RULES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rules'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17280 + STEMH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemh'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17281 + STEMV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemv'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17282 + START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('start'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17283 + XMLNS = $AttributeName(new AttributeName(), XMLNS_NS, SAME_LOCAL('xmlns'), ALL_NO_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
1.17284 + ACCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17285 + ACCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17286 + ASCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ascent'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17287 + ACTIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('active'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17288 + ALTIMG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('altimg'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17289 + ACTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('action'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17290 + BORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('border'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17291 + CURSOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cursor'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17292 + COORDS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('coords'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17293 + FILTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('filter'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17294 + FORMAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('format'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17295 + HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17296 + HSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17297 + HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('height'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17298 + ONMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmove'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17299 + ONLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onload'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17300 + ONDRAG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrag'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17301 + ORIGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('origin'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17302 + ONZOOM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onzoom'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17303 + ONHELP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onhelp'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17304 + ONSTOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstop'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17305 + ONDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17306 + ONBLUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onblur'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17307 + OBJECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('object'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17308 + OFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('offset'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17309 + ORIENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orient'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17310 + ONCOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17311 + NOWRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nowrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17312 + NOHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nohref'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17313 + MACROS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('macros'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17314 + METHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('method'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17315 + LOWSRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lowsrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17316 + LSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17317 + LQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17318 + USEMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('usemap'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17319 + WIDTHS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('widths'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17320 + TARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('target'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17321 + VALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('values'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17322 + VALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valign'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17323 + VSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17324 + POSTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('poster'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17325 + POINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('points'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17326 + PROMPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('prompt'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17327 + SCOPED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scoped'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17328 + STRING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('string'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17329 + SCHEME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scheme'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17330 + STROKE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17331 + RADIUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radius'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17332 + RESULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('result'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17333 + REPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17334 + RSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17335 + ROTATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rotate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17336 + RQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17337 + ALTTEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alttext'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17338 + ARCHIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('archive'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17339 + AZIMUTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('azimuth'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17340 + CLOSURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('closure'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17341 + CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17342 + CLASSID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('classid'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17343 + CHAROFF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charoff'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17344 + BGCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bgcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17345 + COLSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('colspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17346 + CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17347 + COMPACT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('compact'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17348 + CONTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('content'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17349 + ENCTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enctype'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17350 + DATASRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datasrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17351 + DATAFLD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datafld'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17352 + DECLARE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('declare'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17353 + DISPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('display'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17354 + DIVISOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('divisor'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17355 + DEFAULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('default'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17356 + DESCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('descent'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17357 + KERNING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('kerning'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17358 + HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17359 + HEADERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('headers'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17360 + ONPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17361 + ONCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17362 + OPTIMUM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('optimum'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17363 + ONBEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbegin'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17364 + ONKEYUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeyup'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17365 + ONFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17366 + ONERROR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerror'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17367 + ONINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninput'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17368 + ONABORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onabort'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17369 + ONSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17370 + ONRESET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreset'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17371 + OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17372 + NOSHADE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noshade'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17373 + MINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('minsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17374 + MAXSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17375 + LOOPEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopend'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17376 + LARGEOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('largeop'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17377 + UNICODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17378 + TARGETX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targetx', 'targetX'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17379 + TARGETY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targety', 'targetY'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17380 + VIEWBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewbox', 'viewBox'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17381 + VERSION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('version'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17382 + PATTERN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pattern'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17383 + PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17384 + SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17385 + RESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('restart'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17386 + ROWSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17387 + SANDBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('sandbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17388 + SUMMARY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('summary'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17389 + STANDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('standby'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17390 + REPLACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('replace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17391 + AUTOPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autoplay'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17392 + ADDITIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('additive'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17393 + CALCMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('calcmode', 'calcMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17394 + CODETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17395 + CODEBASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codebase'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17396 + CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17397 + BEVELLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bevelled'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17398 + BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17399 + EXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('exponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17400 + EDGEMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('edgemode', 'edgeMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17401 + ENCODING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('encoding'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17402 + GLYPHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('glyphref', 'glyphRef'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17403 + DATETIME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datetime'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17404 + DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17405 + FONTSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17406 + KEYTIMES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keytimes', 'keyTimes'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17407 + PANOSE_1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('panose-1'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17408 + HREFLANG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hreflang'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17409 + ONRESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17410 + ONCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17411 + ONBOUNCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbounce'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17412 + ONUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17413 + ONFINISH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfinish'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17414 + ONSCROLL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onscroll'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17415 + OPERATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('operator'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17416 + OVERFLOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overflow'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17417 + ONSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onsubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17418 + ONREPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrepeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17419 + ONSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17420 + NOTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('notation'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17421 + NORESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17422 + MANIFEST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('manifest'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17423 + MATHSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17424 + MULTIPLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('multiple'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17425 + LONGDESC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('longdesc'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17426 + LANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('language'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17427 + TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('template'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17428 + TABINDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('tabindex'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17429 + READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17430 + SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17431 + ROWLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17432 + SEAMLESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seamless'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17433 + ROWALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17434 + STRETCHY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stretchy'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17435 + REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('required'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17436 + XML_BASE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:base', 'base'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17437 + XML_LANG = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:lang', 'lang'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17438 + X_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17439 + ARIA_OWNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-owns'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17440 + AUTOFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autofocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17441 + ARIA_SORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-sort'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17442 + ACCESSKEY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accesskey'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17443 + ARIA_BUSY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-busy'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17444 + ARIA_GRAB = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-grab'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17445 + AMPLITUDE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('amplitude'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17446 + ARIA_LIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-live'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17447 + CLIP_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17448 + CLIP_PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-path'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17449 + EQUALROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalrows'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17450 + ELEVATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('elevation'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17451 + DIRECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('direction'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17452 + DRAGGABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('draggable'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17453 + FILTERRES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterres', 'filterRes'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17454 + FILL_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17455 + FONTSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontstyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17456 + FONT_SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17457 + KEYPOINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keypoints', 'keyPoints'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17458 + HIDEFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidefocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17459 + ONMESSAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmessage'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17460 + INTERCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('intercept'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17461 + ONDRAGEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragend'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17462 + ONMOVEEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmoveend'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17463 + ONINVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninvalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17464 + ONKEYDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeydown'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17465 + ONFOCUSIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusin'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17466 + ONMOUSEUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseup'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17467 + INPUTMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('inputmode'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17468 + ONROWEXIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowexit'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17469 + MATHCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17470 + MASKUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskunits', 'maskUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17471 + MAXLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxlength'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17472 + LINEBREAK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linebreak'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17473 + LOOPSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17474 + TRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('transform'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17475 + V_HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17476 + VALUETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valuetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17477 + POINTSATZ = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatz', 'pointsAtZ'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17478 + POINTSATX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatx', 'pointsAtX'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17479 + POINTSATY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsaty', 'pointsAtY'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17480 + PLAYCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('playcount'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17481 + SYMMETRIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('symmetric'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17482 + SCROLLING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolling'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17483 + REPEATDUR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatdur', 'repeatDur'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17484 + SELECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selection'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17485 + SEPARATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separator'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17486 + XML_SPACE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:space', 'space'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17487 + AUTOSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autosubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17488 + ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17489 + ACTIONTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('actiontype'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17490 + ACCUMULATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accumulate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17491 + ARIA_LEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-level'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17492 + COLUMNSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17493 + CAP_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cap-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17494 + BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('background'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17495 + GLYPH_NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-name'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17496 + GROUPALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('groupalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17497 + FONTFAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontfamily'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17498 + FONTWEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontweight'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17499 + FONT_STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-style'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17500 + KEYSPLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keysplines', 'keySplines'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17501 + HTTP_EQUIV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('http-equiv'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17502 + ONACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17503 + OCCURRENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('occurrence'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17504 + IRRELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('irrelevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17505 + ONDBLCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondblclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17506 + ONDRAGDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragdrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17507 + ONKEYPRESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeypress'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17508 + ONROWENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17509 + ONDRAGOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragover'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17510 + ONFOCUSOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusout'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17511 + ONMOUSEOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseout'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17512 + NUMOCTAVES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('numoctaves', 'numOctaves'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17513 + MARKER_MID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-mid'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17514 + MARKER_END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-end'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17515 + TEXTLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('textlength', 'textLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17516 + VISIBILITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('visibility'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17517 + VIEWTARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewtarget', 'viewTarget'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17518 + VERT_ADV_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-adv-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17519 + PATHLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pathlength', 'pathLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17520 + REPEAT_MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-max'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17521 + RADIOGROUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radiogroup'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17522 + STOP_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17523 + SEPARATORS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separators'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17524 + REPEAT_MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-min'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17525 + ROWSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17526 + ZOOMANDPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('zoomandpan', 'zoomAndPan'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17527 + XLINK_TYPE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:type', 'type'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17528 + XLINK_ROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:role', 'role'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17529 + XLINK_HREF = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:href', 'href'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17530 + XLINK_SHOW = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:show', 'show'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17531 + ACCENTUNDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accentunder'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17532 + ARIA_SECRET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-secret'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17533 + ARIA_ATOMIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-atomic'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17534 + ARIA_HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17535 + ARIA_FLOWTO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-flowto'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17536 + ARABIC_FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('arabic-form'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17537 + CELLPADDING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellpadding'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17538 + CELLSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17539 + COLUMNWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17540 + COLUMNALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17541 + COLUMNLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17542 + CONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17543 + BASEPROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('baseprofile', 'baseProfile'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17544 + FONT_FAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-family'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17545 + FRAMEBORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frameborder'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17546 + FILTERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterunits', 'filterUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17547 + FLOOD_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17548 + FONT_WEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-weight'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17549 + HORIZ_ADV_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-adv-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17550 + ONDRAGLEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17551 + ONMOUSEMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousemove'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17552 + ORIENTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orientation'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17553 + ONMOUSEDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousedown'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17554 + ONMOUSEOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseover'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17555 + ONDRAGENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17556 + IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17557 + ONBEFORECUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecut'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17558 + ONFORMINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onforminput'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17559 + ONDRAGSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17560 + ONMOVESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmovestart'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17561 + MARKERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerunits', 'markerUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17562 + MATHVARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathvariant'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17563 + MARGINWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17564 + MARKERWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerwidth', 'markerWidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17565 + TEXT_ANCHOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-anchor'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17566 + TABLEVALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('tablevalues', 'tableValues'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17567 + SCRIPTLEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptlevel'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17568 + REPEATCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatcount', 'repeatCount'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17569 + STITCHTILES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stitchtiles', 'stitchTiles'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17570 + STARTOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('startoffset', 'startOffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17571 + SCROLLDELAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolldelay'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17572 + XMLNS_XLINK = $AttributeName(new AttributeName(), XMLNS_NS, COLONIFIED_LOCAL('xmlns:xlink', 'xlink'), XMLNS_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
1.17573 + XLINK_TITLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:title', 'title'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17574 + ARIA_INVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-invalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17575 + ARIA_PRESSED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-pressed'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17576 + ARIA_CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17577 + AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17578 + ARIA_SETSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-setsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17579 + ARIA_CHANNEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-channel'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17580 + EQUALCOLUMNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalcolumns'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17581 + DISPLAYSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('displaystyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17582 + DATAFORMATAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dataformatas'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17583 + FILL_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17584 + FONT_VARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-variant'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17585 + FONT_STRETCH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-stretch'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17586 + FRAMESPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('framespacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17587 + KERNELMATRIX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelmatrix', 'kernelMatrix'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17588 + ONDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17589 + ONROWSDELETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsdelete'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17590 + ONMOUSELEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17591 + ONFORMCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onformchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17592 + ONCELLCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncellchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17593 + ONMOUSEWHEEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousewheel'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17594 + ONMOUSEENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17595 + ONAFTERPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17596 + ONBEFORECOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17597 + MARGINHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginheight'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17598 + MARKERHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerheight', 'markerHeight'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17599 + MARKER_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17600 + MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17601 + LENGTHADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('lengthadjust', 'lengthAdjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17602 + UNSELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17603 + UNICODE_BIDI = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-bidi'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17604 + UNITS_PER_EM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('units-per-em'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17605 + WORD_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('word-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17606 + WRITING_MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('writing-mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17607 + V_ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17608 + PATTERNUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patternunits', 'patternUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17609 + SPREADMETHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('spreadmethod', 'spreadMethod'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17610 + SURFACESCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('surfacescale', 'surfaceScale'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17611 + STROKE_WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-width'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17612 + REPEAT_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17613 + STDDEVIATION = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stddeviation', 'stdDeviation'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17614 + STOP_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17615 + ARIA_CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17616 + ARIA_HASPOPUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-haspopup'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17617 + ACCENT_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17618 + ARIA_VALUENOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuenow'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17619 + ARIA_RELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-relevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17620 + ARIA_POSINSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-posinset'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17621 + ARIA_VALUEMAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemax'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17622 + ARIA_READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17623 + ARIA_SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17624 + ARIA_REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-required'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17625 + ARIA_EXPANDED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-expanded'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17626 + ARIA_DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17627 + ATTRIBUTETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributetype', 'attributeType'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17628 + ATTRIBUTENAME = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributename', 'attributeName'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17629 + ARIA_DATATYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-datatype'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17630 + ARIA_VALUEMIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemin'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17631 + BASEFREQUENCY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('basefrequency', 'baseFrequency'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17632 + COLUMNSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17633 + COLOR_PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17634 + CLIPPATHUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('clippathunits', 'clipPathUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17635 + DEFINITIONURL = $AttributeName(new AttributeName(), ALL_NO_NS, (arr_32 = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0) , arr_32[0] = 'definitionurl' , arr_32[1] = 'definitionURL' , arr_32[2] = 'definitionurl' , arr_32[3] = 'definitionurl' , arr_32), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17636 + GRADIENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradientunits', 'gradientUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17637 + FLOOD_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17638 + ONAFTERUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17639 + ONERRORUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerrorupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17640 + ONBEFOREPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforepaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17641 + ONLOSECAPTURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onlosecapture'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17642 + ONCONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17643 + ONSELECTSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselectstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17644 + ONBEFOREPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17645 + MOVABLELIMITS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('movablelimits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17646 + LINETHICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linethickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17647 + UNICODE_RANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-range'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17648 + THINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17649 + VERT_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17650 + VERT_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17651 + V_IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17652 + PRESERVEALPHA = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preservealpha', 'preserveAlpha'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17653 + SCRIPTMINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptminsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17654 + SPECIFICATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('specification'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17655 + XLINK_ACTUATE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:actuate', 'actuate'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17656 + XLINK_ARCROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:arcrole', 'arcrole'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
1.17657 + ACCEPT_CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept-charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17658 + ALIGNMENTSCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignmentscope'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17659 + ARIA_MULTILINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiline'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17660 + BASELINE_SHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline-shift'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17661 + HORIZ_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17662 + HORIZ_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17663 + ONBEFOREUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17664 + ONFILTERCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfilterchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17665 + ONROWSINSERTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsinserted'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17666 + ONBEFOREUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17667 + MATHBACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathbackground'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17668 + LETTER_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('letter-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17669 + LIGHTING_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lighting-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17670 + THICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17671 + TEXT_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17672 + V_MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17673 + POINTER_EVENTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pointer-events'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17674 + PRIMITIVEUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('primitiveunits', 'primitiveUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17675 + SYSTEMLANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('systemlanguage', 'systemLanguage'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17676 + STROKE_LINECAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linecap'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17677 + SUBSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('subscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17678 + STROKE_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17679 + ARIA_DROPEFFECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-dropeffect'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17680 + ARIA_LABELLEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-labelledby'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17681 + ARIA_TEMPLATEID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-templateid'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17682 + COLOR_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17683 + CONTENTEDITABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contenteditable'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17684 + DIFFUSECONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('diffuseconstant', 'diffuseConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17685 + ONDATAAVAILABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondataavailable'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17686 + ONCONTROLSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontrolselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17687 + IMAGE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('image-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17688 + MEDIUMMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mediummathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17689 + TEXT_DECORATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-decoration'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17690 + SHAPE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17691 + STROKE_LINEJOIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linejoin'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17692 + REPEAT_TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-template'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17693 + ARIA_DESCRIBEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-describedby'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17694 + CONTENTSTYLETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentstyletype', 'contentStyleType'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17695 + FONT_SIZE_ADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size-adjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17696 + KERNELUNITLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelunitlength', 'kernelUnitLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17697 + ONBEFOREACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17698 + ONPROPERTYCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpropertychange'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17699 + ONDATASETCHANGED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetchanged'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17700 + MASKCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskcontentunits', 'maskContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17701 + PATTERNTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterntransform', 'patternTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17702 + REQUIREDFEATURES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredfeatures', 'requiredFeatures'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17703 + RENDERING_INTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rendering-intent'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17704 + SPECULAREXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularexponent', 'specularExponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17705 + SPECULARCONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularconstant', 'specularConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17706 + SUPERSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('superscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17707 + STROKE_DASHARRAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dasharray'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17708 + XCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('xchannelselector', 'xChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17709 + YCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('ychannelselector', 'yChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17710 + ARIA_AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17711 + CONTENTSCRIPTTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentscripttype', 'contentScriptType'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17712 + ENABLE_BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enable-background'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17713 + DOMINANT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dominant-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17714 + GRADIENTTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradienttransform', 'gradientTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17715 + ONBEFORDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbefordeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17716 + ONDATASETCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetcomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17717 + OVERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17718 + ONBEFOREEDITFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeeditfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17719 + LIMITINGCONEANGLE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('limitingconeangle', 'limitingConeAngle'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17720 + VERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17721 + STROKE_DASHOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dashoffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17722 + STROKE_MITERLIMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-miterlimit'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17723 + ALIGNMENT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignment-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17724 + ONREADYSTATECHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreadystatechange'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17725 + OVERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17726 + UNDERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17727 + VERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17728 + REQUIREDEXTENSIONS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredextensions', 'requiredExtensions'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17729 + COLOR_INTERPOLATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17730 + UNDERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17731 + PRESERVEASPECTRATIO = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preserveaspectratio', 'preserveAspectRatio'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17732 + PATTERNCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterncontentunits', 'patternContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17733 + ARIA_MULTISELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17734 + SCRIPTSIZEMULTIPLIER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptsizemultiplier'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17735 + ARIA_ACTIVEDESCENDANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-activedescendant'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17736 + VERYVERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17737 + VERYVERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17738 + STRIKETHROUGH_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17739 + STRIKETHROUGH_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17740 + EXTERNALRESOURCESREQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('externalresourcesrequired', 'externalResourcesRequired'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17741 + GLYPH_ORIENTATION_VERTICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-vertical'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17742 + COLOR_INTERPOLATION_FILTERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation-filters'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17743 + GLYPH_ORIENTATION_HORIZONTAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-horizontal'), ALL_NO_PREFIX, ALL_NCNAME, false);
1.17744 + ATTRIBUTE_NAMES = initValues(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, [D, K, R, X, Y, Z, BY, CX, CY, DX, DY, G2, G1, FX, FY, K4, K2, K3, K1, ID, IN, U2, U1, RT, RX, RY, TO, Y2, Y1, X1, X2, ALT, DIR, DUR, END, FOR, IN2, MAX, MIN, LOW, REL, REV, SRC, AXIS, ABBR, BBOX, CITE, CODE, BIAS, COLS, CLIP, CHAR, BASE, EDGE, DATA, FILL, FROM, FORM, FACE, HIGH, HREF, OPEN, ICON, NAME, MODE, MASK, LINK, LANG, LIST, TYPE, WHEN, WRAP, TEXT, PATH, PING, REFX, REFY, SIZE, SEED, ROWS, SPAN, STEP, ROLE, XREF, ASYNC, ALINK, ALIGN, CLOSE, COLOR, CLASS, CLEAR, BEGIN, DEPTH, DEFER, FENCE, FRAME, ISMAP, ONEND, INDEX, ORDER, OTHER, ONCUT, NARGS, MEDIA, LABEL, LOCAL, WIDTH, TITLE, VLINK, VALUE, SLOPE, SHAPE, SCOPE, SCALE, SPEED, STYLE, RULES, STEMH, STEMV, START, XMLNS, ACCEPT, ACCENT, ASCENT, ACTIVE, ALTIMG, ACTION, BORDER, CURSOR, COORDS, FILTER, FORMAT, HIDDEN, HSPACE, HEIGHT, ONMOVE, ONLOAD, ONDRAG, ORIGIN, ONZOOM, ONHELP, ONSTOP, ONDROP, ONBLUR, OBJECT, OFFSET, ORIENT, ONCOPY, NOWRAP, NOHREF, MACROS, METHOD, LOWSRC, LSPACE, LQUOTE, USEMAP, WIDTHS, TARGET, VALUES, VALIGN, VSPACE, POSTER, POINTS, PROMPT, SCOPED, STRING, SCHEME, STROKE, RADIUS, RESULT, REPEAT, RSPACE, ROTATE, RQUOTE, ALTTEXT, ARCHIVE, AZIMUTH, CLOSURE, CHECKED, CLASSID, CHAROFF, BGCOLOR, COLSPAN, CHARSET, COMPACT, CONTENT, ENCTYPE, DATASRC, DATAFLD, DECLARE, DISPLAY, DIVISOR, DEFAULT, DESCENT, KERNING, HANGING, HEADERS, ONPASTE, ONCLICK, OPTIMUM, ONBEGIN, ONKEYUP, ONFOCUS, ONERROR, ONINPUT, ONABORT, ONSTART, ONRESET, OPACITY, NOSHADE, MINSIZE, MAXSIZE, LOOPEND, LARGEOP, UNICODE, TARGETX, TARGETY, VIEWBOX, VERSION, PATTERN, PROFILE, SPACING, RESTART, ROWSPAN, SANDBOX, SUMMARY, STANDBY, REPLACE, AUTOPLAY, ADDITIVE, CALCMODE, CODETYPE, CODEBASE, CONTROLS, BEVELLED, BASELINE, EXPONENT, EDGEMODE, ENCODING, GLYPHREF, DATETIME, DISABLED, FONTSIZE, KEYTIMES, PANOSE_1, HREFLANG, ONRESIZE, ONCHANGE, ONBOUNCE, ONUNLOAD, ONFINISH, ONSCROLL, OPERATOR, OVERFLOW, ONSUBMIT, ONREPEAT, ONSELECT, NOTATION, NORESIZE, MANIFEST, MATHSIZE, MULTIPLE, LONGDESC, LANGUAGE, TEMPLATE, TABINDEX, READONLY, SELECTED, ROWLINES, SEAMLESS, ROWALIGN, STRETCHY, REQUIRED, XML_BASE, XML_LANG, X_HEIGHT, ARIA_OWNS, AUTOFOCUS, ARIA_SORT, ACCESSKEY, ARIA_BUSY, ARIA_GRAB, AMPLITUDE, ARIA_LIVE, CLIP_RULE, CLIP_PATH, EQUALROWS, ELEVATION, DIRECTION, DRAGGABLE, FILTERRES, FILL_RULE, FONTSTYLE, FONT_SIZE, KEYPOINTS, HIDEFOCUS, ONMESSAGE, INTERCEPT, ONDRAGEND, ONMOVEEND, ONINVALID, ONKEYDOWN, ONFOCUSIN, ONMOUSEUP, INPUTMODE, ONROWEXIT, MATHCOLOR, MASKUNITS, MAXLENGTH, LINEBREAK, LOOPSTART, TRANSFORM, V_HANGING, VALUETYPE, POINTSATZ, POINTSATX, POINTSATY, PLAYCOUNT, SYMMETRIC, SCROLLING, REPEATDUR, SELECTION, SEPARATOR, XML_SPACE, AUTOSUBMIT, ALPHABETIC, ACTIONTYPE, ACCUMULATE, ARIA_LEVEL, COLUMNSPAN, CAP_HEIGHT, BACKGROUND, GLYPH_NAME, GROUPALIGN, FONTFAMILY, FONTWEIGHT, FONT_STYLE, KEYSPLINES, HTTP_EQUIV, ONACTIVATE, OCCURRENCE, IRRELEVANT, ONDBLCLICK, ONDRAGDROP, ONKEYPRESS, ONROWENTER, ONDRAGOVER, ONFOCUSOUT, ONMOUSEOUT, NUMOCTAVES, MARKER_MID, MARKER_END, TEXTLENGTH, VISIBILITY, VIEWTARGET, VERT_ADV_Y, PATHLENGTH, REPEAT_MAX, RADIOGROUP, STOP_COLOR, SEPARATORS, REPEAT_MIN, ROWSPACING, ZOOMANDPAN, XLINK_TYPE, XLINK_ROLE, XLINK_HREF, XLINK_SHOW, ACCENTUNDER, ARIA_SECRET, ARIA_ATOMIC, ARIA_HIDDEN, ARIA_FLOWTO, ARABIC_FORM, CELLPADDING, CELLSPACING, COLUMNWIDTH, COLUMNALIGN, COLUMNLINES, CONTEXTMENU, BASEPROFILE, FONT_FAMILY, FRAMEBORDER, FILTERUNITS, FLOOD_COLOR, FONT_WEIGHT, HORIZ_ADV_X, ONDRAGLEAVE, ONMOUSEMOVE, ORIENTATION, ONMOUSEDOWN, ONMOUSEOVER, ONDRAGENTER, IDEOGRAPHIC, ONBEFORECUT, ONFORMINPUT, ONDRAGSTART, ONMOVESTART, MARKERUNITS, MATHVARIANT, MARGINWIDTH, MARKERWIDTH, TEXT_ANCHOR, TABLEVALUES, SCRIPTLEVEL, REPEATCOUNT, STITCHTILES, STARTOFFSET, SCROLLDELAY, XMLNS_XLINK, XLINK_TITLE, ARIA_INVALID, ARIA_PRESSED, ARIA_CHECKED, AUTOCOMPLETE, ARIA_SETSIZE, ARIA_CHANNEL, EQUALCOLUMNS, DISPLAYSTYLE, DATAFORMATAS, FILL_OPACITY, FONT_VARIANT, FONT_STRETCH, FRAMESPACING, KERNELMATRIX, ONDEACTIVATE, ONROWSDELETE, ONMOUSELEAVE, ONFORMCHANGE, ONCELLCHANGE, ONMOUSEWHEEL, ONMOUSEENTER, ONAFTERPRINT, ONBEFORECOPY, MARGINHEIGHT, MARKERHEIGHT, MARKER_START, MATHEMATICAL, LENGTHADJUST, UNSELECTABLE, UNICODE_BIDI, UNITS_PER_EM, WORD_SPACING, WRITING_MODE, V_ALPHABETIC, PATTERNUNITS, SPREADMETHOD, SURFACESCALE, STROKE_WIDTH, REPEAT_START, STDDEVIATION, STOP_OPACITY, ARIA_CONTROLS, ARIA_HASPOPUP, ACCENT_HEIGHT, ARIA_VALUENOW, ARIA_RELEVANT, ARIA_POSINSET, ARIA_VALUEMAX, ARIA_READONLY, ARIA_SELECTED, ARIA_REQUIRED, ARIA_EXPANDED, ARIA_DISABLED, ATTRIBUTETYPE, ATTRIBUTENAME, ARIA_DATATYPE, ARIA_VALUEMIN, BASEFREQUENCY, COLUMNSPACING, COLOR_PROFILE, CLIPPATHUNITS, DEFINITIONURL, GRADIENTUNITS, FLOOD_OPACITY, ONAFTERUPDATE, ONERRORUPDATE, ONBEFOREPASTE, ONLOSECAPTURE, ONCONTEXTMENU, ONSELECTSTART, ONBEFOREPRINT, MOVABLELIMITS, LINETHICKNESS, UNICODE_RANGE, THINMATHSPACE, VERT_ORIGIN_X, VERT_ORIGIN_Y, V_IDEOGRAPHIC, PRESERVEALPHA, SCRIPTMINSIZE, SPECIFICATION, XLINK_ACTUATE, XLINK_ARCROLE, ACCEPT_CHARSET, ALIGNMENTSCOPE, ARIA_MULTILINE, BASELINE_SHIFT, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, ONBEFOREUPDATE, ONFILTERCHANGE, ONROWSINSERTED, ONBEFOREUNLOAD, MATHBACKGROUND, LETTER_SPACING, LIGHTING_COLOR, THICKMATHSPACE, TEXT_RENDERING, V_MATHEMATICAL, POINTER_EVENTS, PRIMITIVEUNITS, SYSTEMLANGUAGE, STROKE_LINECAP, SUBSCRIPTSHIFT, STROKE_OPACITY, ARIA_DROPEFFECT, ARIA_LABELLEDBY, ARIA_TEMPLATEID, COLOR_RENDERING, CONTENTEDITABLE, DIFFUSECONSTANT, ONDATAAVAILABLE, ONCONTROLSELECT, IMAGE_RENDERING, MEDIUMMATHSPACE, TEXT_DECORATION, SHAPE_RENDERING, STROKE_LINEJOIN, REPEAT_TEMPLATE, ARIA_DESCRIBEDBY, CONTENTSTYLETYPE, FONT_SIZE_ADJUST, KERNELUNITLENGTH, ONBEFOREACTIVATE, ONPROPERTYCHANGE, ONDATASETCHANGED, MASKCONTENTUNITS, PATTERNTRANSFORM, REQUIREDFEATURES, RENDERING_INTENT, SPECULAREXPONENT, SPECULARCONSTANT, SUPERSCRIPTSHIFT, STROKE_DASHARRAY, XCHANNELSELECTOR, YCHANNELSELECTOR, ARIA_AUTOCOMPLETE, CONTENTSCRIPTTYPE, ENABLE_BACKGROUND, DOMINANT_BASELINE, GRADIENTTRANSFORM, ONBEFORDEACTIVATE, ONDATASETCOMPLETE, OVERLINE_POSITION, ONBEFOREEDITFOCUS, LIMITINGCONEANGLE, VERYTHINMATHSPACE, STROKE_DASHOFFSET, STROKE_MITERLIMIT, ALIGNMENT_BASELINE, ONREADYSTATECHANGE, OVERLINE_THICKNESS, UNDERLINE_POSITION, VERYTHICKMATHSPACE, REQUIREDEXTENSIONS, COLOR_INTERPOLATION, UNDERLINE_THICKNESS, PRESERVEASPECTRATIO, PATTERNCONTENTUNITS, ARIA_MULTISELECTABLE, SCRIPTSIZEMULTIPLIER, ARIA_ACTIVEDESCENDANT, VERYVERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, EXTERNALRESOURCESREQUIRED, GLYPH_ORIENTATION_VERTICAL, COLOR_INTERPOLATION_FILTERS, GLYPH_ORIENTATION_HORIZONTAL]);
1.17745 + ATTRIBUTE_HASHES = initValues(_3I_classLit, 0, -1, [1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251083937, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 309671175, 310252031, 310358241, 310373094, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 318721061, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 323938869, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 539214049, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 572768481, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 843809551, 878105336, 908643300, 945213471]);
1.17746 +}
1.17747 +
1.17748 +function $AttributeName_0(this$static, uri, local, prefix, ncname, xmlns){
1.17749 + $clinit_87();
1.17750 + this$static.uri = uri;
1.17751 + this$static.local = local;
1.17752 + COMPUTE_QNAME(local, prefix);
1.17753 + this$static.ncname = ncname;
1.17754 + this$static.xmlns = xmlns;
1.17755 + return this$static;
1.17756 +}
1.17757 +
1.17758 +function $AttributeName(this$static, uri, local, prefix, ncname, xmlns){
1.17759 + $clinit_87();
1.17760 + this$static.uri = uri;
1.17761 + this$static.local = local;
1.17762 + COMPUTE_QNAME(local, prefix);
1.17763 + this$static.ncname = ncname;
1.17764 + this$static.xmlns = xmlns;
1.17765 + return this$static;
1.17766 +}
1.17767 +
1.17768 +function $isBoolean(this$static){
1.17769 + return this$static == ACTIVE || this$static == ASYNC || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == COMPACT || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DISABLED || this$static == ISMAP || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REQUIRED || this$static == SELECTED;
1.17770 +}
1.17771 +
1.17772 +function $isCaseFolded(this$static){
1.17773 + return this$static == ACTIVE || this$static == ALIGN || this$static == ASYNC || this$static == AUTOCOMPLETE || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == CLEAR || this$static == COMPACT || this$static == DATAFORMATAS || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DIR || this$static == DISABLED || this$static == ENCTYPE || this$static == FRAME || this$static == ISMAP || this$static == METHOD || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REPLACE || this$static == REQUIRED || this$static == RULES || this$static == SCOPE || this$static == SCROLLING || this$static == SELECTED || this$static == SHAPE || this$static == STEP || this$static == TYPE || this$static == VALIGN || this$static == VALUETYPE;
1.17774 +}
1.17775 +
1.17776 +function COLONIFIED_LOCAL(name, suffix){
1.17777 + var arr;
1.17778 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
1.17779 + arr[0] = name;
1.17780 + arr[1] = suffix;
1.17781 + arr[2] = suffix;
1.17782 + arr[3] = name;
1.17783 + return arr;
1.17784 +}
1.17785 +
1.17786 +function COMPUTE_QNAME(local, prefix){
1.17787 + var arr, i;
1.17788 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
1.17789 + for (i = 0; i < arr.length; ++i) {
1.17790 + if (prefix[i] == null) {
1.17791 + arr[i] = local[i];
1.17792 + }
1.17793 + else {
1.17794 + arr[i] = String(prefix[i] + ':' + local[i]);
1.17795 + }
1.17796 + }
1.17797 + return arr;
1.17798 +}
1.17799 +
1.17800 +function SAME_LOCAL(name){
1.17801 + var arr;
1.17802 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
1.17803 + arr[0] = name;
1.17804 + arr[1] = name;
1.17805 + arr[2] = name;
1.17806 + arr[3] = name;
1.17807 + return arr;
1.17808 +}
1.17809 +
1.17810 +function SVG_DIFFERENT(name, camel){
1.17811 + var arr;
1.17812 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
1.17813 + arr[0] = name;
1.17814 + arr[1] = name;
1.17815 + arr[2] = camel;
1.17816 + arr[3] = name;
1.17817 + return arr;
1.17818 +}
1.17819 +
1.17820 +function bufToHash(buf, len){
1.17821 + var hash, hash2, i, j;
1.17822 + hash2 = 0;
1.17823 + hash = len;
1.17824 + hash <<= 5;
1.17825 + hash += buf[0] - 96;
1.17826 + j = len;
1.17827 + for (i = 0; i < 4 && j > 0; ++i) {
1.17828 + --j;
1.17829 + hash <<= 5;
1.17830 + hash += buf[j] - 96;
1.17831 + hash2 <<= 6;
1.17832 + hash2 += buf[i] - 95;
1.17833 + }
1.17834 + return hash ^ hash2;
1.17835 +}
1.17836 +
1.17837 +function createAttributeName(name, checkNcName){
1.17838 + var ncName, xmlns;
1.17839 + ncName = true;
1.17840 + xmlns = name.indexOf('xmlns:') == 0;
1.17841 + if (checkNcName) {
1.17842 + if (xmlns) {
1.17843 + ncName = false;
1.17844 + }
1.17845 + else {
1.17846 + ncName = isNCName(name);
1.17847 + }
1.17848 + }
1.17849 + return $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(name), ALL_NO_PREFIX, ncName?ALL_NCNAME:ALL_NO_NCNAME, xmlns);
1.17850 +}
1.17851 +
1.17852 +function getClass_49(){
1.17853 + return Lnu_validator_htmlparser_impl_AttributeName_2_classLit;
1.17854 +}
1.17855 +
1.17856 +function nameByBuffer(buf, offset, length, checkNcName){
1.17857 + var end, end_0;
1.17858 + $clinit_87();
1.17859 + var attributeName, hash, index, name;
1.17860 + hash = bufToHash(buf, length);
1.17861 + index = binarySearch(ATTRIBUTE_HASHES, hash);
1.17862 + if (index < 0) {
1.17863 + return createAttributeName(String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))), checkNcName);
1.17864 + }
1.17865 + else {
1.17866 + attributeName = ATTRIBUTE_NAMES[index];
1.17867 + name = attributeName.local[0];
1.17868 + if (!localEqualsBuffer(name, buf, offset, length)) {
1.17869 + return createAttributeName(String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))), checkNcName);
1.17870 + }
1.17871 + return attributeName;
1.17872 + }
1.17873 +}
1.17874 +
1.17875 +function AttributeName(){
1.17876 +}
1.17877 +
1.17878 +_ = AttributeName.prototype = new Object_0();
1.17879 +_.getClass$ = getClass_49;
1.17880 +_.typeId$ = 36;
1.17881 +_.local = null;
1.17882 +_.ncname = null;
1.17883 +_.uri = null;
1.17884 +_.xmlns = false;
1.17885 +var ABBR, ACCENT, ACCENTUNDER, ACCENT_HEIGHT, ACCEPT, ACCEPT_CHARSET, ACCESSKEY, ACCUMULATE, ACTION, ACTIONTYPE, ACTIVE, ADDITIVE, ALIGN, ALIGNMENTSCOPE, ALIGNMENT_BASELINE, ALINK, ALL_NCNAME, ALL_NO_NCNAME, ALL_NO_NS, ALL_NO_PREFIX, ALPHABETIC, ALT, ALTIMG, ALTTEXT, AMPLITUDE, ARABIC_FORM, ARCHIVE, ARIA_ACTIVEDESCENDANT, ARIA_ATOMIC, ARIA_AUTOCOMPLETE, ARIA_BUSY, ARIA_CHANNEL, ARIA_CHECKED, ARIA_CONTROLS, ARIA_DATATYPE, ARIA_DESCRIBEDBY, ARIA_DISABLED, ARIA_DROPEFFECT, ARIA_EXPANDED, ARIA_FLOWTO, ARIA_GRAB, ARIA_HASPOPUP, ARIA_HIDDEN, ARIA_INVALID, ARIA_LABELLEDBY, ARIA_LEVEL, ARIA_LIVE, ARIA_MULTILINE, ARIA_MULTISELECTABLE, ARIA_OWNS, ARIA_POSINSET, ARIA_PRESSED, ARIA_READONLY, ARIA_RELEVANT, ARIA_REQUIRED, ARIA_SECRET, ARIA_SELECTED, ARIA_SETSIZE, ARIA_SORT, ARIA_TEMPLATEID, ARIA_VALUEMAX, ARIA_VALUEMIN, ARIA_VALUENOW, ASCENT, ASYNC, ATTRIBUTENAME, ATTRIBUTETYPE, ATTRIBUTE_HASHES, ATTRIBUTE_NAMES, AUTOCOMPLETE, AUTOFOCUS, AUTOPLAY, AUTOSUBMIT, AXIS, AZIMUTH, BACKGROUND, BASE, BASEFREQUENCY, BASELINE, BASELINE_SHIFT, BASEPROFILE, BBOX, BEGIN, BEVELLED, BGCOLOR, BIAS, BORDER, BY, CALCMODE, CAP_HEIGHT, CELLPADDING, CELLSPACING, CHAR, CHAROFF, CHARSET, CHECKED, CITE, CLASS, CLASSID, CLEAR, CLIP, CLIPPATHUNITS, CLIP_PATH, CLIP_RULE, CLOSE, CLOSURE, CODE, CODEBASE, CODETYPE, COLOR, COLOR_INTERPOLATION, COLOR_INTERPOLATION_FILTERS, COLOR_PROFILE, COLOR_RENDERING, COLS, COLSPAN, COLUMNALIGN, COLUMNLINES, COLUMNSPACING, COLUMNSPAN, COLUMNWIDTH, COMPACT, CONTENT, CONTENTEDITABLE, CONTENTSCRIPTTYPE, CONTENTSTYLETYPE, CONTEXTMENU, CONTROLS, COORDS, CURSOR, CX, CY, D, DATA, DATAFLD, DATAFORMATAS, DATASRC, DATETIME, DECLARE, DEFAULT, DEFER, DEFINITIONURL, DEPTH, DESCENT, DIFFUSECONSTANT, DIR, DIRECTION, DISABLED, DISPLAY, DISPLAYSTYLE, DIVISOR, DOMINANT_BASELINE, DRAGGABLE, DUR, DX, DY, EDGE, EDGEMODE, ELEVATION, ENABLE_BACKGROUND, ENCODING, ENCTYPE, END, EQUALCOLUMNS, EQUALROWS, EXPONENT, EXTERNALRESOURCESREQUIRED, FACE, FENCE, FILL, FILL_OPACITY, FILL_RULE, FILTER, FILTERRES, FILTERUNITS, FLOOD_COLOR, FLOOD_OPACITY, FONTFAMILY, FONTSIZE, FONTSTYLE, FONTWEIGHT, FONT_FAMILY, FONT_SIZE, FONT_SIZE_ADJUST, FONT_STRETCH, FONT_STYLE, FONT_VARIANT, FONT_WEIGHT, FOR, FORM, FORMAT, FRAME, FRAMEBORDER, FRAMESPACING, FROM, FX, FY, G1, G2, GLYPHREF, GLYPH_NAME, GLYPH_ORIENTATION_HORIZONTAL, GLYPH_ORIENTATION_VERTICAL, GRADIENTTRANSFORM, GRADIENTUNITS, GROUPALIGN, HANGING, HEADERS, HEIGHT, HIDDEN, HIDEFOCUS, HIGH, HORIZ_ADV_X, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, HREF, HREFLANG, HSPACE, HTTP_EQUIV, ICON, ID, IDEOGRAPHIC, IMAGE_RENDERING, IN, IN2, INDEX, INPUTMODE, INTERCEPT, IRRELEVANT, ISMAP, K, K1, K2, K3, K4, KERNELMATRIX, KERNELUNITLENGTH, KERNING, KEYPOINTS, KEYSPLINES, KEYTIMES, LABEL, LANG, LANGUAGE, LANG_NS, LANG_PREFIX, LARGEOP, LENGTHADJUST, LETTER_SPACING, LIGHTING_COLOR, LIMITINGCONEANGLE, LINEBREAK, LINETHICKNESS, LINK, LIST, LOCAL, LONGDESC, LOOPEND, LOOPSTART, LOW, LOWSRC, LQUOTE, LSPACE, MACROS, MANIFEST, MARGINHEIGHT, MARGINWIDTH, MARKERHEIGHT, MARKERUNITS, MARKERWIDTH, MARKER_END, MARKER_MID, MARKER_START, MASK, MASKCONTENTUNITS, MASKUNITS, MATHBACKGROUND, MATHCOLOR, MATHEMATICAL, MATHSIZE, MATHVARIANT, MAX, MAXLENGTH, MAXSIZE, MEDIA, MEDIUMMATHSPACE, METHOD, MIN, MINSIZE, MODE, MOVABLELIMITS, MULTIPLE, NAME, NARGS, NOHREF, NORESIZE, NOSHADE, NOTATION, NOWRAP, NUMOCTAVES, OBJECT, OCCURRENCE, OFFSET, ONABORT, ONACTIVATE, ONAFTERPRINT, ONAFTERUPDATE, ONBEFORDEACTIVATE, ONBEFOREACTIVATE, ONBEFORECOPY, ONBEFORECUT, ONBEFOREEDITFOCUS, ONBEFOREPASTE, ONBEFOREPRINT, ONBEFOREUNLOAD, ONBEFOREUPDATE, ONBEGIN, ONBLUR, ONBOUNCE, ONCELLCHANGE, ONCHANGE, ONCLICK, ONCONTEXTMENU, ONCONTROLSELECT, ONCOPY, ONCUT, ONDATAAVAILABLE, ONDATASETCHANGED, ONDATASETCOMPLETE, ONDBLCLICK, ONDEACTIVATE, ONDRAG, ONDRAGDROP, ONDRAGEND, ONDRAGENTER, ONDRAGLEAVE, ONDRAGOVER, ONDRAGSTART, ONDROP, ONEND, ONERROR, ONERRORUPDATE, ONFILTERCHANGE, ONFINISH, ONFOCUS, ONFOCUSIN, ONFOCUSOUT, ONFORMCHANGE, ONFORMINPUT, ONHELP, ONINPUT, ONINVALID, ONKEYDOWN, ONKEYPRESS, ONKEYUP, ONLOAD, ONLOSECAPTURE, ONMESSAGE, ONMOUSEDOWN, ONMOUSEENTER, ONMOUSELEAVE, ONMOUSEMOVE, ONMOUSEOUT, ONMOUSEOVER, ONMOUSEUP, ONMOUSEWHEEL, ONMOVE, ONMOVEEND, ONMOVESTART, ONPASTE, ONPROPERTYCHANGE, ONREADYSTATECHANGE, ONREPEAT, ONRESET, ONRESIZE, ONROWENTER, ONROWEXIT, ONROWSDELETE, ONROWSINSERTED, ONSCROLL, ONSELECT, ONSELECTSTART, ONSTART, ONSTOP, ONSUBMIT, ONUNLOAD, ONZOOM, OPACITY, OPEN, OPERATOR, OPTIMUM, ORDER, ORIENT, ORIENTATION, ORIGIN, OTHER, OVERFLOW, OVERLINE_POSITION, OVERLINE_THICKNESS, PANOSE_1, PATH, PATHLENGTH, PATTERN, PATTERNCONTENTUNITS, PATTERNTRANSFORM, PATTERNUNITS, PING, PLAYCOUNT, POINTER_EVENTS, POINTS, POINTSATX, POINTSATY, POINTSATZ, POSTER, PRESERVEALPHA, PRESERVEASPECTRATIO, PRIMITIVEUNITS, PROFILE, PROMPT, R, RADIOGROUP, RADIUS, READONLY, REFX, REFY, REL, RENDERING_INTENT, REPEAT, REPEATCOUNT, REPEATDUR, REPEAT_MAX, REPEAT_MIN, REPEAT_START, REPEAT_TEMPLATE, REPLACE, REQUIRED, REQUIREDEXTENSIONS, REQUIREDFEATURES, RESTART, RESULT, REV, ROLE, ROTATE, ROWALIGN, ROWLINES, ROWS, ROWSPACING, ROWSPAN, RQUOTE, RSPACE, RT, RULES, RX, RY, SANDBOX, SCALE, SCHEME, SCOPE, SCOPED, SCRIPTLEVEL, SCRIPTMINSIZE, SCRIPTSIZEMULTIPLIER, SCROLLDELAY, SCROLLING, SEAMLESS, SEED, SELECTED, SELECTION, SEPARATOR, SEPARATORS, SHAPE, SHAPE_RENDERING, SIZE, SLOPE, SPACING, SPAN, SPECIFICATION, SPECULARCONSTANT, SPECULAREXPONENT, SPEED, SPREADMETHOD, SRC, STANDBY, START, STARTOFFSET, STDDEVIATION, STEMH, STEMV, STEP, STITCHTILES, STOP_COLOR, STOP_OPACITY, STRETCHY, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, STRING, STROKE, STROKE_DASHARRAY, STROKE_DASHOFFSET, STROKE_LINECAP, STROKE_LINEJOIN, STROKE_MITERLIMIT, STROKE_OPACITY, STROKE_WIDTH, STYLE, SUBSCRIPTSHIFT, SUMMARY, SUPERSCRIPTSHIFT, SURFACESCALE, SYMMETRIC, SYSTEMLANGUAGE, TABINDEX, TABLEVALUES, TARGET, TARGETX, TARGETY, TEMPLATE, TEXT, TEXTLENGTH, TEXT_ANCHOR, TEXT_DECORATION, TEXT_RENDERING, THICKMATHSPACE, THINMATHSPACE, TITLE, TO, TRANSFORM, TYPE, U1, U2, UNDERLINE_POSITION, UNDERLINE_THICKNESS, UNICODE, UNICODE_BIDI, UNICODE_RANGE, UNITS_PER_EM, UNSELECTABLE, USEMAP, VALIGN, VALUE, VALUES, VALUETYPE, VERSION, VERT_ADV_Y, VERT_ORIGIN_X, VERT_ORIGIN_Y, VERYTHICKMATHSPACE, VERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, VERYVERYTHINMATHSPACE, VIEWBOX, VIEWTARGET, VISIBILITY, VLINK, VSPACE, V_ALPHABETIC, V_HANGING, V_IDEOGRAPHIC, V_MATHEMATICAL, WHEN, WIDTH, WIDTHS, WORD_SPACING, WRAP, WRITING_MODE, X, X1, X2, XCHANNELSELECTOR, XLINK_ACTUATE, XLINK_ARCROLE, XLINK_HREF, XLINK_NS, XLINK_PREFIX, XLINK_ROLE, XLINK_SHOW, XLINK_TITLE, XLINK_TYPE, XMLNS, XMLNS_NS, XMLNS_PREFIX, XMLNS_XLINK, XML_BASE, XML_LANG, XML_NS, XML_PREFIX, XML_SPACE, XREF, X_HEIGHT, Y, Y1, Y2, YCHANNELSELECTOR, Z, ZOOMANDPAN;
1.17886 +function $clinit_89(){
1.17887 + $clinit_89 = nullMethod;
1.17888 + $ElementName(new ElementName(), null);
1.17889 + A = $ElementName_0(new ElementName(), 'a', 'a', 1, false, false, false);
1.17890 + B = $ElementName_0(new ElementName(), 'b', 'b', 45, false, false, false);
1.17891 + G = $ElementName_0(new ElementName(), 'g', 'g', 0, false, false, false);
1.17892 + I = $ElementName_0(new ElementName(), 'i', 'i', 45, false, false, false);
1.17893 + P = $ElementName_0(new ElementName(), 'p', 'p', 29, true, false, false);
1.17894 + Q = $ElementName_0(new ElementName(), 'q', 'q', 0, false, false, false);
1.17895 + S = $ElementName_0(new ElementName(), 's', 's', 45, false, false, false);
1.17896 + U = $ElementName_0(new ElementName(), 'u', 'u', 45, false, false, false);
1.17897 + BR = $ElementName_0(new ElementName(), 'br', 'br', 4, true, false, false);
1.17898 + CI = $ElementName_0(new ElementName(), 'ci', 'ci', 0, false, false, false);
1.17899 + CN = $ElementName_0(new ElementName(), 'cn', 'cn', 0, false, false, false);
1.17900 + DD = $ElementName_0(new ElementName(), 'dd', 'dd', 41, true, false, false);
1.17901 + DL = $ElementName_0(new ElementName(), 'dl', 'dl', 46, true, false, false);
1.17902 + DT = $ElementName_0(new ElementName(), 'dt', 'dt', 41, true, false, false);
1.17903 + EM = $ElementName_0(new ElementName(), 'em', 'em', 45, false, false, false);
1.17904 + EQ = $ElementName_0(new ElementName(), 'eq', 'eq', 0, false, false, false);
1.17905 + FN = $ElementName_0(new ElementName(), 'fn', 'fn', 0, false, false, false);
1.17906 + H1 = $ElementName_0(new ElementName(), 'h1', 'h1', 42, true, false, false);
1.17907 + H2 = $ElementName_0(new ElementName(), 'h2', 'h2', 42, true, false, false);
1.17908 + H3 = $ElementName_0(new ElementName(), 'h3', 'h3', 42, true, false, false);
1.17909 + H4 = $ElementName_0(new ElementName(), 'h4', 'h4', 42, true, false, false);
1.17910 + H5 = $ElementName_0(new ElementName(), 'h5', 'h5', 42, true, false, false);
1.17911 + H6 = $ElementName_0(new ElementName(), 'h6', 'h6', 42, true, false, false);
1.17912 + GT = $ElementName_0(new ElementName(), 'gt', 'gt', 0, false, false, false);
1.17913 + HR = $ElementName_0(new ElementName(), 'hr', 'hr', 22, true, false, false);
1.17914 + IN_0 = $ElementName_0(new ElementName(), 'in', 'in', 0, false, false, false);
1.17915 + LI = $ElementName_0(new ElementName(), 'li', 'li', 15, true, false, false);
1.17916 + LN = $ElementName_0(new ElementName(), 'ln', 'ln', 0, false, false, false);
1.17917 + LT = $ElementName_0(new ElementName(), 'lt', 'lt', 0, false, false, false);
1.17918 + MI = $ElementName_0(new ElementName(), 'mi', 'mi', 57, false, false, false);
1.17919 + MN = $ElementName_0(new ElementName(), 'mn', 'mn', 57, false, false, false);
1.17920 + MO = $ElementName_0(new ElementName(), 'mo', 'mo', 57, false, false, false);
1.17921 + MS = $ElementName_0(new ElementName(), 'ms', 'ms', 57, false, false, false);
1.17922 + OL = $ElementName_0(new ElementName(), 'ol', 'ol', 46, true, false, false);
1.17923 + OR = $ElementName_0(new ElementName(), 'or', 'or', 0, false, false, false);
1.17924 + PI = $ElementName_0(new ElementName(), 'pi', 'pi', 0, false, false, false);
1.17925 + RP = $ElementName_0(new ElementName(), 'rp', 'rp', 53, false, false, false);
1.17926 + RT_0 = $ElementName_0(new ElementName(), 'rt', 'rt', 53, false, false, false);
1.17927 + TD = $ElementName_0(new ElementName(), 'td', 'td', 40, false, true, false);
1.17928 + TH = $ElementName_0(new ElementName(), 'th', 'th', 40, false, true, false);
1.17929 + TR = $ElementName_0(new ElementName(), 'tr', 'tr', 37, true, false, true);
1.17930 + TT = $ElementName_0(new ElementName(), 'tt', 'tt', 45, false, false, false);
1.17931 + UL = $ElementName_0(new ElementName(), 'ul', 'ul', 46, true, false, false);
1.17932 + AND = $ElementName_0(new ElementName(), 'and', 'and', 0, false, false, false);
1.17933 + ARG = $ElementName_0(new ElementName(), 'arg', 'arg', 0, false, false, false);
1.17934 + ABS = $ElementName_0(new ElementName(), 'abs', 'abs', 0, false, false, false);
1.17935 + BIG = $ElementName_0(new ElementName(), 'big', 'big', 45, false, false, false);
1.17936 + BDO = $ElementName_0(new ElementName(), 'bdo', 'bdo', 0, false, false, false);
1.17937 + CSC = $ElementName_0(new ElementName(), 'csc', 'csc', 0, false, false, false);
1.17938 + COL = $ElementName_0(new ElementName(), 'col', 'col', 7, true, false, false);
1.17939 + COS = $ElementName_0(new ElementName(), 'cos', 'cos', 0, false, false, false);
1.17940 + COT = $ElementName_0(new ElementName(), 'cot', 'cot', 0, false, false, false);
1.17941 + DEL = $ElementName_0(new ElementName(), 'del', 'del', 0, false, false, false);
1.17942 + DFN = $ElementName_0(new ElementName(), 'dfn', 'dfn', 0, false, false, false);
1.17943 + DIR_0 = $ElementName_0(new ElementName(), 'dir', 'dir', 51, true, false, false);
1.17944 + DIV = $ElementName_0(new ElementName(), 'div', 'div', 50, true, false, false);
1.17945 + EXP = $ElementName_0(new ElementName(), 'exp', 'exp', 0, false, false, false);
1.17946 + GCD = $ElementName_0(new ElementName(), 'gcd', 'gcd', 0, false, false, false);
1.17947 + GEQ = $ElementName_0(new ElementName(), 'geq', 'geq', 0, false, false, false);
1.17948 + IMG = $ElementName_0(new ElementName(), 'img', 'img', 48, true, false, false);
1.17949 + INS = $ElementName_0(new ElementName(), 'ins', 'ins', 0, false, false, false);
1.17950 + INT = $ElementName_0(new ElementName(), 'int', 'int', 0, false, false, false);
1.17951 + KBD = $ElementName_0(new ElementName(), 'kbd', 'kbd', 0, false, false, false);
1.17952 + LOG = $ElementName_0(new ElementName(), 'log', 'log', 0, false, false, false);
1.17953 + LCM = $ElementName_0(new ElementName(), 'lcm', 'lcm', 0, false, false, false);
1.17954 + LEQ = $ElementName_0(new ElementName(), 'leq', 'leq', 0, false, false, false);
1.17955 + MTD = $ElementName_0(new ElementName(), 'mtd', 'mtd', 0, false, false, false);
1.17956 + MIN_0 = $ElementName_0(new ElementName(), 'min', 'min', 0, false, false, false);
1.17957 + MAP = $ElementName_0(new ElementName(), 'map', 'map', 0, false, false, false);
1.17958 + MTR = $ElementName_0(new ElementName(), 'mtr', 'mtr', 0, false, false, false);
1.17959 + MAX_0 = $ElementName_0(new ElementName(), 'max', 'max', 0, false, false, false);
1.17960 + NEQ = $ElementName_0(new ElementName(), 'neq', 'neq', 0, false, false, false);
1.17961 + NOT = $ElementName_0(new ElementName(), 'not', 'not', 0, false, false, false);
1.17962 + NAV = $ElementName_0(new ElementName(), 'nav', 'nav', 51, true, false, false);
1.17963 + PRE = $ElementName_0(new ElementName(), 'pre', 'pre', 44, true, false, false);
1.17964 + REM = $ElementName_0(new ElementName(), 'rem', 'rem', 0, false, false, false);
1.17965 + SUB = $ElementName_0(new ElementName(), 'sub', 'sub', 52, false, false, false);
1.17966 + SEC = $ElementName_0(new ElementName(), 'sec', 'sec', 0, false, false, false);
1.17967 + SVG = $ElementName_0(new ElementName(), 'svg', 'svg', 19, false, false, false);
1.17968 + SUM = $ElementName_0(new ElementName(), 'sum', 'sum', 0, false, false, false);
1.17969 + SIN = $ElementName_0(new ElementName(), 'sin', 'sin', 0, false, false, false);
1.17970 + SEP = $ElementName_0(new ElementName(), 'sep', 'sep', 0, false, false, false);
1.17971 + SUP = $ElementName_0(new ElementName(), 'sup', 'sup', 52, false, false, false);
1.17972 + SET = $ElementName_0(new ElementName(), 'set', 'set', 0, false, false, false);
1.17973 + TAN = $ElementName_0(new ElementName(), 'tan', 'tan', 0, false, false, false);
1.17974 + USE = $ElementName_0(new ElementName(), 'use', 'use', 0, false, false, false);
1.17975 + VAR = $ElementName_0(new ElementName(), 'var', 'var', 52, false, false, false);
1.17976 + WBR = $ElementName_0(new ElementName(), 'wbr', 'wbr', 49, true, false, false);
1.17977 + XMP = $ElementName_0(new ElementName(), 'xmp', 'xmp', 38, false, false, false);
1.17978 + XOR = $ElementName_0(new ElementName(), 'xor', 'xor', 0, false, false, false);
1.17979 + AREA = $ElementName_0(new ElementName(), 'area', 'area', 49, true, false, false);
1.17980 + ABBR_0 = $ElementName_0(new ElementName(), 'abbr', 'abbr', 0, false, false, false);
1.17981 + BASE_0 = $ElementName_0(new ElementName(), 'base', 'base', 2, true, false, false);
1.17982 + BVAR = $ElementName_0(new ElementName(), 'bvar', 'bvar', 0, false, false, false);
1.17983 + BODY = $ElementName_0(new ElementName(), 'body', 'body', 3, true, false, false);
1.17984 + CARD = $ElementName_0(new ElementName(), 'card', 'card', 0, false, false, false);
1.17985 + CODE_0 = $ElementName_0(new ElementName(), 'code', 'code', 45, false, false, false);
1.17986 + CITE_0 = $ElementName_0(new ElementName(), 'cite', 'cite', 0, false, false, false);
1.17987 + CSCH = $ElementName_0(new ElementName(), 'csch', 'csch', 0, false, false, false);
1.17988 + COSH = $ElementName_0(new ElementName(), 'cosh', 'cosh', 0, false, false, false);
1.17989 + COTH = $ElementName_0(new ElementName(), 'coth', 'coth', 0, false, false, false);
1.17990 + CURL = $ElementName_0(new ElementName(), 'curl', 'curl', 0, false, false, false);
1.17991 + DESC = $ElementName_0(new ElementName(), 'desc', 'desc', 59, false, false, false);
1.17992 + DIFF = $ElementName_0(new ElementName(), 'diff', 'diff', 0, false, false, false);
1.17993 + DEFS = $ElementName_0(new ElementName(), 'defs', 'defs', 0, false, false, false);
1.17994 + FORM_0 = $ElementName_0(new ElementName(), 'form', 'form', 9, true, false, false);
1.17995 + FONT = $ElementName_0(new ElementName(), 'font', 'font', 64, false, false, false);
1.17996 + GRAD = $ElementName_0(new ElementName(), 'grad', 'grad', 0, false, false, false);
1.17997 + HEAD = $ElementName_0(new ElementName(), 'head', 'head', 20, true, false, false);
1.17998 + HTML_0 = $ElementName_0(new ElementName(), 'html', 'html', 23, false, true, false);
1.17999 + LINE = $ElementName_0(new ElementName(), 'line', 'line', 0, false, false, false);
1.18000 + LINK_0 = $ElementName_0(new ElementName(), 'link', 'link', 16, true, false, false);
1.18001 + LIST_0 = $ElementName_0(new ElementName(), 'list', 'list', 0, false, false, false);
1.18002 + META = $ElementName_0(new ElementName(), 'meta', 'meta', 18, true, false, false);
1.18003 + MSUB = $ElementName_0(new ElementName(), 'msub', 'msub', 0, false, false, false);
1.18004 + MODE_0 = $ElementName_0(new ElementName(), 'mode', 'mode', 0, false, false, false);
1.18005 + MATH = $ElementName_0(new ElementName(), 'math', 'math', 17, false, false, false);
1.18006 + MARK = $ElementName_0(new ElementName(), 'mark', 'mark', 0, false, false, false);
1.18007 + MASK_0 = $ElementName_0(new ElementName(), 'mask', 'mask', 0, false, false, false);
1.18008 + MEAN = $ElementName_0(new ElementName(), 'mean', 'mean', 0, false, false, false);
1.18009 + MSUP = $ElementName_0(new ElementName(), 'msup', 'msup', 0, false, false, false);
1.18010 + MENU = $ElementName_0(new ElementName(), 'menu', 'menu', 50, true, false, false);
1.18011 + MROW = $ElementName_0(new ElementName(), 'mrow', 'mrow', 0, false, false, false);
1.18012 + NONE = $ElementName_0(new ElementName(), 'none', 'none', 0, false, false, false);
1.18013 + NOBR = $ElementName_0(new ElementName(), 'nobr', 'nobr', 24, false, false, false);
1.18014 + NEST = $ElementName_0(new ElementName(), 'nest', 'nest', 0, false, false, false);
1.18015 + PATH_0 = $ElementName_0(new ElementName(), 'path', 'path', 0, false, false, false);
1.18016 + PLUS = $ElementName_0(new ElementName(), 'plus', 'plus', 0, false, false, false);
1.18017 + RULE = $ElementName_0(new ElementName(), 'rule', 'rule', 0, false, false, false);
1.18018 + REAL = $ElementName_0(new ElementName(), 'real', 'real', 0, false, false, false);
1.18019 + RELN = $ElementName_0(new ElementName(), 'reln', 'reln', 0, false, false, false);
1.18020 + RECT = $ElementName_0(new ElementName(), 'rect', 'rect', 0, false, false, false);
1.18021 + ROOT = $ElementName_0(new ElementName(), 'root', 'root', 0, false, false, false);
1.18022 + RUBY = $ElementName_0(new ElementName(), 'ruby', 'ruby', 52, false, false, false);
1.18023 + SECH = $ElementName_0(new ElementName(), 'sech', 'sech', 0, false, false, false);
1.18024 + SINH = $ElementName_0(new ElementName(), 'sinh', 'sinh', 0, false, false, false);
1.18025 + SPAN_0 = $ElementName_0(new ElementName(), 'span', 'span', 52, false, false, false);
1.18026 + SAMP = $ElementName_0(new ElementName(), 'samp', 'samp', 0, false, false, false);
1.18027 + STOP = $ElementName_0(new ElementName(), 'stop', 'stop', 0, false, false, false);
1.18028 + SDEV = $ElementName_0(new ElementName(), 'sdev', 'sdev', 0, false, false, false);
1.18029 + TIME = $ElementName_0(new ElementName(), 'time', 'time', 0, false, false, false);
1.18030 + TRUE = $ElementName_0(new ElementName(), 'true', 'true', 0, false, false, false);
1.18031 + TREF = $ElementName_0(new ElementName(), 'tref', 'tref', 0, false, false, false);
1.18032 + TANH = $ElementName_0(new ElementName(), 'tanh', 'tanh', 0, false, false, false);
1.18033 + TEXT_0 = $ElementName_0(new ElementName(), 'text', 'text', 0, false, false, false);
1.18034 + VIEW = $ElementName_0(new ElementName(), 'view', 'view', 0, false, false, false);
1.18035 + ASIDE = $ElementName_0(new ElementName(), 'aside', 'aside', 51, true, false, false);
1.18036 + AUDIO = $ElementName_0(new ElementName(), 'audio', 'audio', 0, false, false, false);
1.18037 + APPLY = $ElementName_0(new ElementName(), 'apply', 'apply', 0, false, false, false);
1.18038 + EMBED = $ElementName_0(new ElementName(), 'embed', 'embed', 48, true, false, false);
1.18039 + FRAME_0 = $ElementName_0(new ElementName(), 'frame', 'frame', 10, true, false, false);
1.18040 + FALSE = $ElementName_0(new ElementName(), 'false', 'false', 0, false, false, false);
1.18041 + FLOOR = $ElementName_0(new ElementName(), 'floor', 'floor', 0, false, false, false);
1.18042 + GLYPH = $ElementName_0(new ElementName(), 'glyph', 'glyph', 0, false, false, false);
1.18043 + HKERN = $ElementName_0(new ElementName(), 'hkern', 'hkern', 0, false, false, false);
1.18044 + IMAGE = $ElementName_0(new ElementName(), 'image', 'image', 12, true, false, false);
1.18045 + IDENT = $ElementName_0(new ElementName(), 'ident', 'ident', 0, false, false, false);
1.18046 + INPUT = $ElementName_0(new ElementName(), 'input', 'input', 13, true, false, false);
1.18047 + LABEL_0 = $ElementName_0(new ElementName(), 'label', 'label', 62, false, false, false);
1.18048 + LIMIT = $ElementName_0(new ElementName(), 'limit', 'limit', 0, false, false, false);
1.18049 + MFRAC = $ElementName_0(new ElementName(), 'mfrac', 'mfrac', 0, false, false, false);
1.18050 + MPATH = $ElementName_0(new ElementName(), 'mpath', 'mpath', 0, false, false, false);
1.18051 + METER = $ElementName_0(new ElementName(), 'meter', 'meter', 0, false, false, false);
1.18052 + MOVER = $ElementName_0(new ElementName(), 'mover', 'mover', 0, false, false, false);
1.18053 + MINUS = $ElementName_0(new ElementName(), 'minus', 'minus', 0, false, false, false);
1.18054 + MROOT = $ElementName_0(new ElementName(), 'mroot', 'mroot', 0, false, false, false);
1.18055 + MSQRT = $ElementName_0(new ElementName(), 'msqrt', 'msqrt', 0, false, false, false);
1.18056 + MTEXT = $ElementName_0(new ElementName(), 'mtext', 'mtext', 57, false, false, false);
1.18057 + NOTIN = $ElementName_0(new ElementName(), 'notin', 'notin', 0, false, false, false);
1.18058 + PIECE = $ElementName_0(new ElementName(), 'piece', 'piece', 0, false, false, false);
1.18059 + PARAM = $ElementName_0(new ElementName(), 'param', 'param', 55, true, false, false);
1.18060 + POWER = $ElementName_0(new ElementName(), 'power', 'power', 0, false, false, false);
1.18061 + REALS = $ElementName_0(new ElementName(), 'reals', 'reals', 0, false, false, false);
1.18062 + STYLE_0 = $ElementName_0(new ElementName(), 'style', 'style', 33, true, false, false);
1.18063 + SMALL = $ElementName_0(new ElementName(), 'small', 'small', 45, false, false, false);
1.18064 + THEAD = $ElementName_0(new ElementName(), 'thead', 'thead', 39, true, false, true);
1.18065 + TABLE = $ElementName_0(new ElementName(), 'table', 'table', 34, false, true, true);
1.18066 + TITLE_0 = $ElementName_0(new ElementName(), 'title', 'title', 36, true, false, false);
1.18067 + TSPAN = $ElementName_0(new ElementName(), 'tspan', 'tspan', 0, false, false, false);
1.18068 + TIMES = $ElementName_0(new ElementName(), 'times', 'times', 0, false, false, false);
1.18069 + TFOOT = $ElementName_0(new ElementName(), 'tfoot', 'tfoot', 39, true, false, true);
1.18070 + TBODY = $ElementName_0(new ElementName(), 'tbody', 'tbody', 39, true, false, true);
1.18071 + UNION = $ElementName_0(new ElementName(), 'union', 'union', 0, false, false, false);
1.18072 + VKERN = $ElementName_0(new ElementName(), 'vkern', 'vkern', 0, false, false, false);
1.18073 + VIDEO = $ElementName_0(new ElementName(), 'video', 'video', 0, false, false, false);
1.18074 + ARCSEC = $ElementName_0(new ElementName(), 'arcsec', 'arcsec', 0, false, false, false);
1.18075 + ARCCSC = $ElementName_0(new ElementName(), 'arccsc', 'arccsc', 0, false, false, false);
1.18076 + ARCTAN = $ElementName_0(new ElementName(), 'arctan', 'arctan', 0, false, false, false);
1.18077 + ARCSIN = $ElementName_0(new ElementName(), 'arcsin', 'arcsin', 0, false, false, false);
1.18078 + ARCCOS = $ElementName_0(new ElementName(), 'arccos', 'arccos', 0, false, false, false);
1.18079 + APPLET = $ElementName_0(new ElementName(), 'applet', 'applet', 43, false, true, false);
1.18080 + ARCCOT = $ElementName_0(new ElementName(), 'arccot', 'arccot', 0, false, false, false);
1.18081 + APPROX = $ElementName_0(new ElementName(), 'approx', 'approx', 0, false, false, false);
1.18082 + BUTTON = $ElementName_0(new ElementName(), 'button', 'button', 5, false, true, false);
1.18083 + CIRCLE = $ElementName_0(new ElementName(), 'circle', 'circle', 0, false, false, false);
1.18084 + CENTER = $ElementName_0(new ElementName(), 'center', 'center', 50, true, false, false);
1.18085 + CURSOR_0 = $ElementName_0(new ElementName(), 'cursor', 'cursor', 0, false, false, false);
1.18086 + CANVAS = $ElementName_0(new ElementName(), 'canvas', 'canvas', 0, false, false, false);
1.18087 + DIVIDE = $ElementName_0(new ElementName(), 'divide', 'divide', 0, false, false, false);
1.18088 + DEGREE = $ElementName_0(new ElementName(), 'degree', 'degree', 0, false, false, false);
1.18089 + DIALOG = $ElementName_0(new ElementName(), 'dialog', 'dialog', 51, true, false, false);
1.18090 + DOMAIN = $ElementName_0(new ElementName(), 'domain', 'domain', 0, false, false, false);
1.18091 + EXISTS = $ElementName_0(new ElementName(), 'exists', 'exists', 0, false, false, false);
1.18092 + FETILE = $ElementName_0(new ElementName(), 'fetile', 'feTile', 0, false, false, false);
1.18093 + FIGURE = $ElementName_0(new ElementName(), 'figure', 'figure', 51, true, false, false);
1.18094 + FORALL = $ElementName_0(new ElementName(), 'forall', 'forall', 0, false, false, false);
1.18095 + FILTER_0 = $ElementName_0(new ElementName(), 'filter', 'filter', 0, false, false, false);
1.18096 + FOOTER = $ElementName_0(new ElementName(), 'footer', 'footer', 51, true, false, false);
1.18097 + HEADER = $ElementName_0(new ElementName(), 'header', 'header', 51, true, false, false);
1.18098 + IFRAME = $ElementName_0(new ElementName(), 'iframe', 'iframe', 47, true, false, false);
1.18099 + KEYGEN = $ElementName_0(new ElementName(), 'keygen', 'keygen', 65, true, false, false);
1.18100 + LAMBDA = $ElementName_0(new ElementName(), 'lambda', 'lambda', 0, false, false, false);
1.18101 + LEGEND = $ElementName_0(new ElementName(), 'legend', 'legend', 0, false, false, false);
1.18102 + MSPACE = $ElementName_0(new ElementName(), 'mspace', 'mspace', 0, false, false, false);
1.18103 + MTABLE = $ElementName_0(new ElementName(), 'mtable', 'mtable', 0, false, false, false);
1.18104 + MSTYLE = $ElementName_0(new ElementName(), 'mstyle', 'mstyle', 0, false, false, false);
1.18105 + MGLYPH = $ElementName_0(new ElementName(), 'mglyph', 'mglyph', 56, false, false, false);
1.18106 + MEDIAN = $ElementName_0(new ElementName(), 'median', 'median', 0, false, false, false);
1.18107 + MUNDER = $ElementName_0(new ElementName(), 'munder', 'munder', 0, false, false, false);
1.18108 + MARKER = $ElementName_0(new ElementName(), 'marker', 'marker', 0, false, false, false);
1.18109 + MERROR = $ElementName_0(new ElementName(), 'merror', 'merror', 0, false, false, false);
1.18110 + MOMENT = $ElementName_0(new ElementName(), 'moment', 'moment', 0, false, false, false);
1.18111 + MATRIX = $ElementName_0(new ElementName(), 'matrix', 'matrix', 0, false, false, false);
1.18112 + OPTION = $ElementName_0(new ElementName(), 'option', 'option', 28, true, false, false);
1.18113 + OBJECT_0 = $ElementName_0(new ElementName(), 'object', 'object', 63, false, true, false);
1.18114 + OUTPUT = $ElementName_0(new ElementName(), 'output', 'output', 62, false, false, false);
1.18115 + PRIMES = $ElementName_0(new ElementName(), 'primes', 'primes', 0, false, false, false);
1.18116 + SOURCE = $ElementName_0(new ElementName(), 'source', 'source', 55, false, false, false);
1.18117 + STRIKE = $ElementName_0(new ElementName(), 'strike', 'strike', 45, false, false, false);
1.18118 + STRONG = $ElementName_0(new ElementName(), 'strong', 'strong', 45, false, false, false);
1.18119 + SWITCH = $ElementName_0(new ElementName(), 'switch', 'switch', 0, false, false, false);
1.18120 + SYMBOL = $ElementName_0(new ElementName(), 'symbol', 'symbol', 0, false, false, false);
1.18121 + SPACER = $ElementName_0(new ElementName(), 'spacer', 'spacer', 49, true, false, false);
1.18122 + SELECT = $ElementName_0(new ElementName(), 'select', 'select', 32, true, false, false);
1.18123 + SUBSET = $ElementName_0(new ElementName(), 'subset', 'subset', 0, false, false, false);
1.18124 + SCRIPT = $ElementName_0(new ElementName(), 'script', 'script', 31, true, false, false);
1.18125 + TBREAK = $ElementName_0(new ElementName(), 'tbreak', 'tbreak', 0, false, false, false);
1.18126 + VECTOR = $ElementName_0(new ElementName(), 'vector', 'vector', 0, false, false, false);
1.18127 + ARTICLE = $ElementName_0(new ElementName(), 'article', 'article', 51, true, false, false);
1.18128 + ANIMATE = $ElementName_0(new ElementName(), 'animate', 'animate', 0, false, false, false);
1.18129 + ARCSECH = $ElementName_0(new ElementName(), 'arcsech', 'arcsech', 0, false, false, false);
1.18130 + ARCCSCH = $ElementName_0(new ElementName(), 'arccsch', 'arccsch', 0, false, false, false);
1.18131 + ARCTANH = $ElementName_0(new ElementName(), 'arctanh', 'arctanh', 0, false, false, false);
1.18132 + ARCSINH = $ElementName_0(new ElementName(), 'arcsinh', 'arcsinh', 0, false, false, false);
1.18133 + ARCCOSH = $ElementName_0(new ElementName(), 'arccosh', 'arccosh', 0, false, false, false);
1.18134 + ARCCOTH = $ElementName_0(new ElementName(), 'arccoth', 'arccoth', 0, false, false, false);
1.18135 + ACRONYM = $ElementName_0(new ElementName(), 'acronym', 'acronym', 0, false, false, false);
1.18136 + ADDRESS = $ElementName_0(new ElementName(), 'address', 'address', 51, true, false, false);
1.18137 + BGSOUND = $ElementName_0(new ElementName(), 'bgsound', 'bgsound', 49, true, false, false);
1.18138 + COMMAND = $ElementName_0(new ElementName(), 'command', 'command', 54, true, false, false);
1.18139 + COMPOSE = $ElementName_0(new ElementName(), 'compose', 'compose', 0, false, false, false);
1.18140 + CEILING = $ElementName_0(new ElementName(), 'ceiling', 'ceiling', 0, false, false, false);
1.18141 + CSYMBOL = $ElementName_0(new ElementName(), 'csymbol', 'csymbol', 0, false, false, false);
1.18142 + CAPTION = $ElementName_0(new ElementName(), 'caption', 'caption', 6, false, true, false);
1.18143 + DISCARD = $ElementName_0(new ElementName(), 'discard', 'discard', 0, false, false, false);
1.18144 + DECLARE_0 = $ElementName_0(new ElementName(), 'declare', 'declare', 0, false, false, false);
1.18145 + DETAILS = $ElementName_0(new ElementName(), 'details', 'details', 51, true, false, false);
1.18146 + ELLIPSE = $ElementName_0(new ElementName(), 'ellipse', 'ellipse', 0, false, false, false);
1.18147 + FEFUNCA = $ElementName_0(new ElementName(), 'fefunca', 'feFuncA', 0, false, false, false);
1.18148 + FEFUNCB = $ElementName_0(new ElementName(), 'fefuncb', 'feFuncB', 0, false, false, false);
1.18149 + FEBLEND = $ElementName_0(new ElementName(), 'feblend', 'feBlend', 0, false, false, false);
1.18150 + FEFLOOD = $ElementName_0(new ElementName(), 'feflood', 'feFlood', 0, false, false, false);
1.18151 + FEIMAGE = $ElementName_0(new ElementName(), 'feimage', 'feImage', 0, false, false, false);
1.18152 + FEMERGE = $ElementName_0(new ElementName(), 'femerge', 'feMerge', 0, false, false, false);
1.18153 + FEFUNCG = $ElementName_0(new ElementName(), 'fefuncg', 'feFuncG', 0, false, false, false);
1.18154 + FEFUNCR = $ElementName_0(new ElementName(), 'fefuncr', 'feFuncR', 0, false, false, false);
1.18155 + HANDLER = $ElementName_0(new ElementName(), 'handler', 'handler', 0, false, false, false);
1.18156 + INVERSE = $ElementName_0(new ElementName(), 'inverse', 'inverse', 0, false, false, false);
1.18157 + IMPLIES = $ElementName_0(new ElementName(), 'implies', 'implies', 0, false, false, false);
1.18158 + ISINDEX = $ElementName_0(new ElementName(), 'isindex', 'isindex', 14, true, false, false);
1.18159 + LOGBASE = $ElementName_0(new ElementName(), 'logbase', 'logbase', 0, false, false, false);
1.18160 + LISTING = $ElementName_0(new ElementName(), 'listing', 'listing', 44, true, false, false);
1.18161 + MFENCED = $ElementName_0(new ElementName(), 'mfenced', 'mfenced', 0, false, false, false);
1.18162 + MPADDED = $ElementName_0(new ElementName(), 'mpadded', 'mpadded', 0, false, false, false);
1.18163 + MARQUEE = $ElementName_0(new ElementName(), 'marquee', 'marquee', 43, false, true, false);
1.18164 + MACTION = $ElementName_0(new ElementName(), 'maction', 'maction', 0, false, false, false);
1.18165 + MSUBSUP = $ElementName_0(new ElementName(), 'msubsup', 'msubsup', 0, false, false, false);
1.18166 + NOEMBED = $ElementName_0(new ElementName(), 'noembed', 'noembed', 60, true, false, false);
1.18167 + POLYGON = $ElementName_0(new ElementName(), 'polygon', 'polygon', 0, false, false, false);
1.18168 + PATTERN_0 = $ElementName_0(new ElementName(), 'pattern', 'pattern', 0, false, false, false);
1.18169 + PRODUCT = $ElementName_0(new ElementName(), 'product', 'product', 0, false, false, false);
1.18170 + SETDIFF = $ElementName_0(new ElementName(), 'setdiff', 'setdiff', 0, false, false, false);
1.18171 + SECTION = $ElementName_0(new ElementName(), 'section', 'section', 51, true, false, false);
1.18172 + TENDSTO = $ElementName_0(new ElementName(), 'tendsto', 'tendsto', 0, false, false, false);
1.18173 + UPLIMIT = $ElementName_0(new ElementName(), 'uplimit', 'uplimit', 0, false, false, false);
1.18174 + ALTGLYPH = $ElementName_0(new ElementName(), 'altglyph', 'altGlyph', 0, false, false, false);
1.18175 + BASEFONT = $ElementName_0(new ElementName(), 'basefont', 'basefont', 49, true, false, false);
1.18176 + CLIPPATH = $ElementName_0(new ElementName(), 'clippath', 'clipPath', 0, false, false, false);
1.18177 + CODOMAIN = $ElementName_0(new ElementName(), 'codomain', 'codomain', 0, false, false, false);
1.18178 + COLGROUP = $ElementName_0(new ElementName(), 'colgroup', 'colgroup', 8, true, false, false);
1.18179 + DATAGRID = $ElementName_0(new ElementName(), 'datagrid', 'datagrid', 51, true, false, false);
1.18180 + EMPTYSET = $ElementName_0(new ElementName(), 'emptyset', 'emptyset', 0, false, false, false);
1.18181 + FACTOROF = $ElementName_0(new ElementName(), 'factorof', 'factorof', 0, false, false, false);
1.18182 + FIELDSET = $ElementName_0(new ElementName(), 'fieldset', 'fieldset', 61, true, false, false);
1.18183 + FRAMESET = $ElementName_0(new ElementName(), 'frameset', 'frameset', 11, true, false, false);
1.18184 + FEOFFSET = $ElementName_0(new ElementName(), 'feoffset', 'feOffset', 0, false, false, false);
1.18185 + GLYPHREF_0 = $ElementName_0(new ElementName(), 'glyphref', 'glyphRef', 0, false, false, false);
1.18186 + INTERVAL = $ElementName_0(new ElementName(), 'interval', 'interval', 0, false, false, false);
1.18187 + INTEGERS = $ElementName_0(new ElementName(), 'integers', 'integers', 0, false, false, false);
1.18188 + INFINITY = $ElementName_0(new ElementName(), 'infinity', 'infinity', 0, false, false, false);
1.18189 + LISTENER = $ElementName_0(new ElementName(), 'listener', 'listener', 0, false, false, false);
1.18190 + LOWLIMIT = $ElementName_0(new ElementName(), 'lowlimit', 'lowlimit', 0, false, false, false);
1.18191 + METADATA = $ElementName_0(new ElementName(), 'metadata', 'metadata', 0, false, false, false);
1.18192 + MENCLOSE = $ElementName_0(new ElementName(), 'menclose', 'menclose', 0, false, false, false);
1.18193 + MPHANTOM = $ElementName_0(new ElementName(), 'mphantom', 'mphantom', 0, false, false, false);
1.18194 + NOFRAMES = $ElementName_0(new ElementName(), 'noframes', 'noframes', 25, true, false, false);
1.18195 + NOSCRIPT = $ElementName_0(new ElementName(), 'noscript', 'noscript', 26, true, false, false);
1.18196 + OPTGROUP = $ElementName_0(new ElementName(), 'optgroup', 'optgroup', 27, true, false, false);
1.18197 + POLYLINE = $ElementName_0(new ElementName(), 'polyline', 'polyline', 0, false, false, false);
1.18198 + PREFETCH = $ElementName_0(new ElementName(), 'prefetch', 'prefetch', 0, false, false, false);
1.18199 + PROGRESS = $ElementName_0(new ElementName(), 'progress', 'progress', 0, false, false, false);
1.18200 + PRSUBSET = $ElementName_0(new ElementName(), 'prsubset', 'prsubset', 0, false, false, false);
1.18201 + QUOTIENT = $ElementName_0(new ElementName(), 'quotient', 'quotient', 0, false, false, false);
1.18202 + SELECTOR = $ElementName_0(new ElementName(), 'selector', 'selector', 0, false, false, false);
1.18203 + TEXTAREA = $ElementName_0(new ElementName(), 'textarea', 'textarea', 35, true, false, false);
1.18204 + TEXTPATH = $ElementName_0(new ElementName(), 'textpath', 'textPath', 0, false, false, false);
1.18205 + VARIANCE = $ElementName_0(new ElementName(), 'variance', 'variance', 0, false, false, false);
1.18206 + ANIMATION = $ElementName_0(new ElementName(), 'animation', 'animation', 0, false, false, false);
1.18207 + CONJUGATE = $ElementName_0(new ElementName(), 'conjugate', 'conjugate', 0, false, false, false);
1.18208 + CONDITION = $ElementName_0(new ElementName(), 'condition', 'condition', 0, false, false, false);
1.18209 + COMPLEXES = $ElementName_0(new ElementName(), 'complexes', 'complexes', 0, false, false, false);
1.18210 + FONT_FACE = $ElementName_0(new ElementName(), 'font-face', 'font-face', 0, false, false, false);
1.18211 + FACTORIAL = $ElementName_0(new ElementName(), 'factorial', 'factorial', 0, false, false, false);
1.18212 + INTERSECT = $ElementName_0(new ElementName(), 'intersect', 'intersect', 0, false, false, false);
1.18213 + IMAGINARY = $ElementName_0(new ElementName(), 'imaginary', 'imaginary', 0, false, false, false);
1.18214 + LAPLACIAN = $ElementName_0(new ElementName(), 'laplacian', 'laplacian', 0, false, false, false);
1.18215 + MATRIXROW = $ElementName_0(new ElementName(), 'matrixrow', 'matrixrow', 0, false, false, false);
1.18216 + NOTSUBSET = $ElementName_0(new ElementName(), 'notsubset', 'notsubset', 0, false, false, false);
1.18217 + OTHERWISE = $ElementName_0(new ElementName(), 'otherwise', 'otherwise', 0, false, false, false);
1.18218 + PIECEWISE = $ElementName_0(new ElementName(), 'piecewise', 'piecewise', 0, false, false, false);
1.18219 + PLAINTEXT = $ElementName_0(new ElementName(), 'plaintext', 'plaintext', 30, true, false, false);
1.18220 + RATIONALS = $ElementName_0(new ElementName(), 'rationals', 'rationals', 0, false, false, false);
1.18221 + SEMANTICS = $ElementName_0(new ElementName(), 'semantics', 'semantics', 0, false, false, false);
1.18222 + TRANSPOSE = $ElementName_0(new ElementName(), 'transpose', 'transpose', 0, false, false, false);
1.18223 + ANNOTATION = $ElementName_0(new ElementName(), 'annotation', 'annotation', 0, false, false, false);
1.18224 + BLOCKQUOTE = $ElementName_0(new ElementName(), 'blockquote', 'blockquote', 50, true, false, false);
1.18225 + DIVERGENCE = $ElementName_0(new ElementName(), 'divergence', 'divergence', 0, false, false, false);
1.18226 + EULERGAMMA = $ElementName_0(new ElementName(), 'eulergamma', 'eulergamma', 0, false, false, false);
1.18227 + EQUIVALENT = $ElementName_0(new ElementName(), 'equivalent', 'equivalent', 0, false, false, false);
1.18228 + IMAGINARYI = $ElementName_0(new ElementName(), 'imaginaryi', 'imaginaryi', 0, false, false, false);
1.18229 + MALIGNMARK = $ElementName_0(new ElementName(), 'malignmark', 'malignmark', 56, false, false, false);
1.18230 + MUNDEROVER = $ElementName_0(new ElementName(), 'munderover', 'munderover', 0, false, false, false);
1.18231 + MLABELEDTR = $ElementName_0(new ElementName(), 'mlabeledtr', 'mlabeledtr', 0, false, false, false);
1.18232 + NOTANUMBER = $ElementName_0(new ElementName(), 'notanumber', 'notanumber', 0, false, false, false);
1.18233 + SOLIDCOLOR = $ElementName_0(new ElementName(), 'solidcolor', 'solidcolor', 0, false, false, false);
1.18234 + ALTGLYPHDEF = $ElementName_0(new ElementName(), 'altglyphdef', 'altGlyphDef', 0, false, false, false);
1.18235 + DETERMINANT = $ElementName_0(new ElementName(), 'determinant', 'determinant', 0, false, false, false);
1.18236 + EVENTSOURCE = $ElementName_0(new ElementName(), 'eventsource', 'eventsource', 54, true, false, false);
1.18237 + FEMERGENODE = $ElementName_0(new ElementName(), 'femergenode', 'feMergeNode', 0, false, false, false);
1.18238 + FECOMPOSITE = $ElementName_0(new ElementName(), 'fecomposite', 'feComposite', 0, false, false, false);
1.18239 + FESPOTLIGHT = $ElementName_0(new ElementName(), 'fespotlight', 'feSpotLight', 0, false, false, false);
1.18240 + MALIGNGROUP = $ElementName_0(new ElementName(), 'maligngroup', 'maligngroup', 0, false, false, false);
1.18241 + MPRESCRIPTS = $ElementName_0(new ElementName(), 'mprescripts', 'mprescripts', 0, false, false, false);
1.18242 + MOMENTABOUT = $ElementName_0(new ElementName(), 'momentabout', 'momentabout', 0, false, false, false);
1.18243 + NOTPRSUBSET = $ElementName_0(new ElementName(), 'notprsubset', 'notprsubset', 0, false, false, false);
1.18244 + PARTIALDIFF = $ElementName_0(new ElementName(), 'partialdiff', 'partialdiff', 0, false, false, false);
1.18245 + ALTGLYPHITEM = $ElementName_0(new ElementName(), 'altglyphitem', 'altGlyphItem', 0, false, false, false);
1.18246 + ANIMATECOLOR = $ElementName_0(new ElementName(), 'animatecolor', 'animateColor', 0, false, false, false);
1.18247 + DATATEMPLATE = $ElementName_0(new ElementName(), 'datatemplate', 'datatemplate', 0, false, false, false);
1.18248 + EXPONENTIALE = $ElementName_0(new ElementName(), 'exponentiale', 'exponentiale', 0, false, false, false);
1.18249 + FETURBULENCE = $ElementName_0(new ElementName(), 'feturbulence', 'feTurbulence', 0, false, false, false);
1.18250 + FEPOINTLIGHT = $ElementName_0(new ElementName(), 'fepointlight', 'fePointLight', 0, false, false, false);
1.18251 + FEMORPHOLOGY = $ElementName_0(new ElementName(), 'femorphology', 'feMorphology', 0, false, false, false);
1.18252 + OUTERPRODUCT = $ElementName_0(new ElementName(), 'outerproduct', 'outerproduct', 0, false, false, false);
1.18253 + ANIMATEMOTION = $ElementName_0(new ElementName(), 'animatemotion', 'animateMotion', 0, false, false, false);
1.18254 + COLOR_PROFILE_0 = $ElementName_0(new ElementName(), 'color-profile', 'color-profile', 0, false, false, false);
1.18255 + FONT_FACE_SRC = $ElementName_0(new ElementName(), 'font-face-src', 'font-face-src', 0, false, false, false);
1.18256 + FONT_FACE_URI = $ElementName_0(new ElementName(), 'font-face-uri', 'font-face-uri', 0, false, false, false);
1.18257 + FOREIGNOBJECT = $ElementName_0(new ElementName(), 'foreignobject', 'foreignObject', 59, false, false, false);
1.18258 + FECOLORMATRIX = $ElementName_0(new ElementName(), 'fecolormatrix', 'feColorMatrix', 0, false, false, false);
1.18259 + MISSING_GLYPH = $ElementName_0(new ElementName(), 'missing-glyph', 'missing-glyph', 0, false, false, false);
1.18260 + MMULTISCRIPTS = $ElementName_0(new ElementName(), 'mmultiscripts', 'mmultiscripts', 0, false, false, false);
1.18261 + SCALARPRODUCT = $ElementName_0(new ElementName(), 'scalarproduct', 'scalarproduct', 0, false, false, false);
1.18262 + VECTORPRODUCT = $ElementName_0(new ElementName(), 'vectorproduct', 'vectorproduct', 0, false, false, false);
1.18263 + ANNOTATION_XML = $ElementName_0(new ElementName(), 'annotation-xml', 'annotation-xml', 58, false, false, false);
1.18264 + DEFINITION_SRC = $ElementName_0(new ElementName(), 'definition-src', 'definition-src', 0, false, false, false);
1.18265 + FONT_FACE_NAME = $ElementName_0(new ElementName(), 'font-face-name', 'font-face-name', 0, false, false, false);
1.18266 + FEGAUSSIANBLUR = $ElementName_0(new ElementName(), 'fegaussianblur', 'feGaussianBlur', 0, false, false, false);
1.18267 + FEDISTANTLIGHT = $ElementName_0(new ElementName(), 'fedistantlight', 'feDistantLight', 0, false, false, false);
1.18268 + LINEARGRADIENT = $ElementName_0(new ElementName(), 'lineargradient', 'linearGradient', 0, false, false, false);
1.18269 + NATURALNUMBERS = $ElementName_0(new ElementName(), 'naturalnumbers', 'naturalnumbers', 0, false, false, false);
1.18270 + RADIALGRADIENT = $ElementName_0(new ElementName(), 'radialgradient', 'radialGradient', 0, false, false, false);
1.18271 + ANIMATETRANSFORM = $ElementName_0(new ElementName(), 'animatetransform', 'animateTransform', 0, false, false, false);
1.18272 + CARTESIANPRODUCT = $ElementName_0(new ElementName(), 'cartesianproduct', 'cartesianproduct', 0, false, false, false);
1.18273 + FONT_FACE_FORMAT = $ElementName_0(new ElementName(), 'font-face-format', 'font-face-format', 0, false, false, false);
1.18274 + FECONVOLVEMATRIX = $ElementName_0(new ElementName(), 'feconvolvematrix', 'feConvolveMatrix', 0, false, false, false);
1.18275 + FEDIFFUSELIGHTING = $ElementName_0(new ElementName(), 'fediffuselighting', 'feDiffuseLighting', 0, false, false, false);
1.18276 + FEDISPLACEMENTMAP = $ElementName_0(new ElementName(), 'fedisplacementmap', 'feDisplacementMap', 0, false, false, false);
1.18277 + FESPECULARLIGHTING = $ElementName_0(new ElementName(), 'fespecularlighting', 'feSpecularLighting', 0, false, false, false);
1.18278 + DOMAINOFAPPLICATION = $ElementName_0(new ElementName(), 'domainofapplication', 'domainofapplication', 0, false, false, false);
1.18279 + FECOMPONENTTRANSFER = $ElementName_0(new ElementName(), 'fecomponenttransfer', 'feComponentTransfer', 0, false, false, false);
1.18280 + ELEMENT_NAMES = initValues(_3Lnu_validator_htmlparser_impl_ElementName_2_classLit, 50, 10, [A, B, G, I, P, Q, S, U, BR, CI, CN, DD, DL, DT, EM, EQ, FN, H1, H2, H3, H4, H5, H6, GT, HR, IN_0, LI, LN, LT, MI, MN, MO, MS, OL, OR, PI, RP, RT_0, TD, TH, TR, TT, UL, AND, ARG, ABS, BIG, BDO, CSC, COL, COS, COT, DEL, DFN, DIR_0, DIV, EXP, GCD, GEQ, IMG, INS, INT, KBD, LOG, LCM, LEQ, MTD, MIN_0, MAP, MTR, MAX_0, NEQ, NOT, NAV, PRE, REM, SUB, SEC, SVG, SUM, SIN, SEP, SUP, SET, TAN, USE, VAR, WBR, XMP, XOR, AREA, ABBR_0, BASE_0, BVAR, BODY, CARD, CODE_0, CITE_0, CSCH, COSH, COTH, CURL, DESC, DIFF, DEFS, FORM_0, FONT, GRAD, HEAD, HTML_0, LINE, LINK_0, LIST_0, META, MSUB, MODE_0, MATH, MARK, MASK_0, MEAN, MSUP, MENU, MROW, NONE, NOBR, NEST, PATH_0, PLUS, RULE, REAL, RELN, RECT, ROOT, RUBY, SECH, SINH, SPAN_0, SAMP, STOP, SDEV, TIME, TRUE, TREF, TANH, TEXT_0, VIEW, ASIDE, AUDIO, APPLY, EMBED, FRAME_0, FALSE, FLOOR, GLYPH, HKERN, IMAGE, IDENT, INPUT, LABEL_0, LIMIT, MFRAC, MPATH, METER, MOVER, MINUS, MROOT, MSQRT, MTEXT, NOTIN, PIECE, PARAM, POWER, REALS, STYLE_0, SMALL, THEAD, TABLE, TITLE_0, TSPAN, TIMES, TFOOT, TBODY, UNION, VKERN, VIDEO, ARCSEC, ARCCSC, ARCTAN, ARCSIN, ARCCOS, APPLET, ARCCOT, APPROX, BUTTON, CIRCLE, CENTER, CURSOR_0, CANVAS, DIVIDE, DEGREE, DIALOG, DOMAIN, EXISTS, FETILE, FIGURE, FORALL, FILTER_0, FOOTER, HEADER, IFRAME, KEYGEN, LAMBDA, LEGEND, MSPACE, MTABLE, MSTYLE, MGLYPH, MEDIAN, MUNDER, MARKER, MERROR, MOMENT, MATRIX, OPTION, OBJECT_0, OUTPUT, PRIMES, SOURCE, STRIKE, STRONG, SWITCH, SYMBOL, SPACER, SELECT, SUBSET, SCRIPT, TBREAK, VECTOR, ARTICLE, ANIMATE, ARCSECH, ARCCSCH, ARCTANH, ARCSINH, ARCCOSH, ARCCOTH, ACRONYM, ADDRESS, BGSOUND, COMMAND, COMPOSE, CEILING, CSYMBOL, CAPTION, DISCARD, DECLARE_0, DETAILS, ELLIPSE, FEFUNCA, FEFUNCB, FEBLEND, FEFLOOD, FEIMAGE, FEMERGE, FEFUNCG, FEFUNCR, HANDLER, INVERSE, IMPLIES, ISINDEX, LOGBASE, LISTING, MFENCED, MPADDED, MARQUEE, MACTION, MSUBSUP, NOEMBED, POLYGON, PATTERN_0, PRODUCT, SETDIFF, SECTION, TENDSTO, UPLIMIT, ALTGLYPH, BASEFONT, CLIPPATH, CODOMAIN, COLGROUP, DATAGRID, EMPTYSET, FACTOROF, FIELDSET, FRAMESET, FEOFFSET, GLYPHREF_0, INTERVAL, INTEGERS, INFINITY, LISTENER, LOWLIMIT, METADATA, MENCLOSE, MPHANTOM, NOFRAMES, NOSCRIPT, OPTGROUP, POLYLINE, PREFETCH, PROGRESS, PRSUBSET, QUOTIENT, SELECTOR, TEXTAREA, TEXTPATH, VARIANCE, ANIMATION, CONJUGATE, CONDITION, COMPLEXES, FONT_FACE, FACTORIAL, INTERSECT, IMAGINARY, LAPLACIAN, MATRIXROW, NOTSUBSET, OTHERWISE, PIECEWISE, PLAINTEXT, RATIONALS, SEMANTICS, TRANSPOSE, ANNOTATION, BLOCKQUOTE, DIVERGENCE, EULERGAMMA, EQUIVALENT, IMAGINARYI, MALIGNMARK, MUNDEROVER, MLABELEDTR, NOTANUMBER, SOLIDCOLOR, ALTGLYPHDEF, DETERMINANT, EVENTSOURCE, FEMERGENODE, FECOMPOSITE, FESPOTLIGHT, MALIGNGROUP, MPRESCRIPTS, MOMENTABOUT, NOTPRSUBSET, PARTIALDIFF, ALTGLYPHITEM, ANIMATECOLOR, DATATEMPLATE, EXPONENTIALE, FETURBULENCE, FEPOINTLIGHT, FEMORPHOLOGY, OUTERPRODUCT, ANIMATEMOTION, COLOR_PROFILE_0, FONT_FACE_SRC, FONT_FACE_URI, FOREIGNOBJECT, FECOLORMATRIX, MISSING_GLYPH, MMULTISCRIPTS, SCALARPRODUCT, VECTORPRODUCT, ANNOTATION_XML, DEFINITION_SRC, FONT_FACE_NAME, FEGAUSSIANBLUR, FEDISTANTLIGHT, LINEARGRADIENT, NATURALNUMBERS, RADIALGRADIENT, ANIMATETRANSFORM, CARTESIANPRODUCT, FONT_FACE_FORMAT, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FESPECULARLIGHTING, DOMAINOFAPPLICATION, FECOMPONENTTRANSFER]);
1.18281 + ELEMENT_HASHES = initValues(_3I_classLit, 0, -1, [1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205766017, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221844577, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238172205, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 252317348, 255007012, 255278388, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 272770631, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 374509141, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819]);
1.18282 +}
1.18283 +
1.18284 +function $ElementName_0(this$static, name, camelCaseName, group, special, scoping, fosterParenting){
1.18285 + $clinit_89();
1.18286 + this$static.name_0 = name;
1.18287 + this$static.camelCaseName = camelCaseName;
1.18288 + this$static.group = group;
1.18289 + this$static.special = special;
1.18290 + this$static.scoping = scoping;
1.18291 + this$static.fosterParenting = fosterParenting;
1.18292 + this$static.custom = false;
1.18293 + return this$static;
1.18294 +}
1.18295 +
1.18296 +function $ElementName(this$static, name){
1.18297 + $clinit_89();
1.18298 + this$static.name_0 = name;
1.18299 + this$static.camelCaseName = name;
1.18300 + this$static.group = 0;
1.18301 + this$static.special = false;
1.18302 + this$static.scoping = false;
1.18303 + this$static.fosterParenting = false;
1.18304 + this$static.custom = true;
1.18305 + return this$static;
1.18306 +}
1.18307 +
1.18308 +function bufToHash_0(buf, len){
1.18309 + var hash, i, j;
1.18310 + hash = len;
1.18311 + hash <<= 5;
1.18312 + hash += buf[0] - 96;
1.18313 + j = len;
1.18314 + for (i = 0; i < 4 && j > 0; ++i) {
1.18315 + --j;
1.18316 + hash <<= 5;
1.18317 + hash += buf[j] - 96;
1.18318 + }
1.18319 + return hash;
1.18320 +}
1.18321 +
1.18322 +function elementNameByBuffer(buf, offset, length){
1.18323 + var end, end_0;
1.18324 + $clinit_89();
1.18325 + var elementName, hash, index, name;
1.18326 + hash = bufToHash_0(buf, length);
1.18327 + index = binarySearch(ELEMENT_HASHES, hash);
1.18328 + if (index < 0) {
1.18329 + return $ElementName(new ElementName(), String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))));
1.18330 + }
1.18331 + else {
1.18332 + elementName = ELEMENT_NAMES[index];
1.18333 + name = elementName.name_0;
1.18334 + if (!localEqualsBuffer(name, buf, offset, length)) {
1.18335 + return $ElementName(new ElementName(), String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))));
1.18336 + }
1.18337 + return elementName;
1.18338 + }
1.18339 +}
1.18340 +
1.18341 +function getClass_51(){
1.18342 + return Lnu_validator_htmlparser_impl_ElementName_2_classLit;
1.18343 +}
1.18344 +
1.18345 +function ElementName(){
1.18346 +}
1.18347 +
1.18348 +_ = ElementName.prototype = new Object_0();
1.18349 +_.getClass$ = getClass_51;
1.18350 +_.typeId$ = 37;
1.18351 +_.camelCaseName = null;
1.18352 +_.custom = false;
1.18353 +_.fosterParenting = false;
1.18354 +_.group = 0;
1.18355 +_.name_0 = null;
1.18356 +_.scoping = false;
1.18357 +_.special = false;
1.18358 +var A, ABBR_0, ABS, ACRONYM, ADDRESS, ALTGLYPH, ALTGLYPHDEF, ALTGLYPHITEM, AND, ANIMATE, ANIMATECOLOR, ANIMATEMOTION, ANIMATETRANSFORM, ANIMATION, ANNOTATION, ANNOTATION_XML, APPLET, APPLY, APPROX, ARCCOS, ARCCOSH, ARCCOT, ARCCOTH, ARCCSC, ARCCSCH, ARCSEC, ARCSECH, ARCSIN, ARCSINH, ARCTAN, ARCTANH, AREA, ARG, ARTICLE, ASIDE, AUDIO, B, BASE_0, BASEFONT, BDO, BGSOUND, BIG, BLOCKQUOTE, BODY, BR, BUTTON, BVAR, CANVAS, CAPTION, CARD, CARTESIANPRODUCT, CEILING, CENTER, CI, CIRCLE, CITE_0, CLIPPATH, CN, CODE_0, CODOMAIN, COL, COLGROUP, COLOR_PROFILE_0, COMMAND, COMPLEXES, COMPOSE, CONDITION, CONJUGATE, COS, COSH, COT, COTH, CSC, CSCH, CSYMBOL, CURL, CURSOR_0, DATAGRID, DATATEMPLATE, DD, DECLARE_0, DEFINITION_SRC, DEFS, DEGREE, DEL, DESC, DETAILS, DETERMINANT, DFN, DIALOG, DIFF, DIR_0, DISCARD, DIV, DIVERGENCE, DIVIDE, DL, DOMAIN, DOMAINOFAPPLICATION, DT, ELEMENT_HASHES, ELEMENT_NAMES, ELLIPSE, EM, EMBED, EMPTYSET, EQ, EQUIVALENT, EULERGAMMA, EVENTSOURCE, EXISTS, EXP, EXPONENTIALE, FACTORIAL, FACTOROF, FALSE, FEBLEND, FECOLORMATRIX, FECOMPONENTTRANSFER, FECOMPOSITE, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FEDISTANTLIGHT, FEFLOOD, FEFUNCA, FEFUNCB, FEFUNCG, FEFUNCR, FEGAUSSIANBLUR, FEIMAGE, FEMERGE, FEMERGENODE, FEMORPHOLOGY, FEOFFSET, FEPOINTLIGHT, FESPECULARLIGHTING, FESPOTLIGHT, FETILE, FETURBULENCE, FIELDSET, FIGURE, FILTER_0, FLOOR, FN, FONT, FONT_FACE, FONT_FACE_FORMAT, FONT_FACE_NAME, FONT_FACE_SRC, FONT_FACE_URI, FOOTER, FORALL, FOREIGNOBJECT, FORM_0, FRAME_0, FRAMESET, G, GCD, GEQ, GLYPH, GLYPHREF_0, GRAD, GT, H1, H2, H3, H4, H5, H6, HANDLER, HEAD, HEADER, HKERN, HR, HTML_0, I, IDENT, IFRAME, IMAGE, IMAGINARY, IMAGINARYI, IMG, IMPLIES, IN_0, INFINITY, INPUT, INS, INT, INTEGERS, INTERSECT, INTERVAL, INVERSE, ISINDEX, KBD, KEYGEN, LABEL_0, LAMBDA, LAPLACIAN, LCM, LEGEND, LEQ, LI, LIMIT, LINE, LINEARGRADIENT, LINK_0, LIST_0, LISTENER, LISTING, LN, LOG, LOGBASE, LOWLIMIT, LT, MACTION, MALIGNGROUP, MALIGNMARK, MAP, MARK, MARKER, MARQUEE, MASK_0, MATH, MATRIX, MATRIXROW, MAX_0, MEAN, MEDIAN, MENCLOSE, MENU, MERROR, META, METADATA, METER, MFENCED, MFRAC, MGLYPH, MI, MIN_0, MINUS, MISSING_GLYPH, MLABELEDTR, MMULTISCRIPTS, MN, MO, MODE_0, MOMENT, MOMENTABOUT, MOVER, MPADDED, MPATH, MPHANTOM, MPRESCRIPTS, MROOT, MROW, MS, MSPACE, MSQRT, MSTYLE, MSUB, MSUBSUP, MSUP, MTABLE, MTD, MTEXT, MTR, MUNDER, MUNDEROVER, NATURALNUMBERS, NAV, NEQ, NEST, NOBR, NOEMBED, NOFRAMES, NONE, NOSCRIPT, NOT, NOTANUMBER, NOTIN, NOTPRSUBSET, NOTSUBSET, OBJECT_0, OL, OPTGROUP, OPTION, OR, OTHERWISE, OUTERPRODUCT, OUTPUT, P, PARAM, PARTIALDIFF, PATH_0, PATTERN_0, PI, PIECE, PIECEWISE, PLAINTEXT, PLUS, POLYGON, POLYLINE, POWER, PRE, PREFETCH, PRIMES, PRODUCT, PROGRESS, PRSUBSET, Q, QUOTIENT, RADIALGRADIENT, RATIONALS, REAL, REALS, RECT, RELN, REM, ROOT, RP, RT_0, RUBY, RULE, S, SAMP, SCALARPRODUCT, SCRIPT, SDEV, SEC, SECH, SECTION, SELECT, SELECTOR, SEMANTICS, SEP, SET, SETDIFF, SIN, SINH, SMALL, SOLIDCOLOR, SOURCE, SPACER, SPAN_0, STOP, STRIKE, STRONG, STYLE_0, SUB, SUBSET, SUM, SUP, SVG, SWITCH, SYMBOL, TABLE, TAN, TANH, TBODY, TBREAK, TD, TENDSTO, TEXT_0, TEXTAREA, TEXTPATH, TFOOT, TH, THEAD, TIME, TIMES, TITLE_0, TR, TRANSPOSE, TREF, TRUE, TSPAN, TT, U, UL, UNION, UPLIMIT, USE, VAR, VARIANCE, VECTOR, VECTORPRODUCT, VIDEO, VIEW, VKERN, WBR, XMP, XOR;
1.18359 +function $clinit_97(){
1.18360 + $clinit_97 = nullMethod;
1.18361 + LT_GT = initValues(_3C_classLit, 42, -1, [60, 62]);
1.18362 + LT_SOLIDUS = initValues(_3C_classLit, 42, -1, [60, 47]);
1.18363 + RSQB_RSQB = initValues(_3C_classLit, 42, -1, [93, 93]);
1.18364 + REPLACEMENT_CHARACTER = initValues(_3C_classLit, 42, -1, [65533]);
1.18365 + SPACE = initValues(_3C_classLit, 42, -1, [32]);
1.18366 + LF = initValues(_3C_classLit, 42, -1, [10]);
1.18367 + CDATA_LSQB = $toCharArray('CDATA[');
1.18368 + OCTYPE = $toCharArray('octype');
1.18369 + UBLIC = $toCharArray('ublic');
1.18370 + YSTEM = $toCharArray('ystem');
1.18371 + TITLE_ARR = initValues(_3C_classLit, 42, -1, [116, 105, 116, 108, 101]);
1.18372 + SCRIPT_ARR = initValues(_3C_classLit, 42, -1, [115, 99, 114, 105, 112, 116]);
1.18373 + STYLE_ARR = initValues(_3C_classLit, 42, -1, [115, 116, 121, 108, 101]);
1.18374 + PLAINTEXT_ARR = initValues(_3C_classLit, 42, -1, [112, 108, 97, 105, 110, 116, 101, 120, 116]);
1.18375 + XMP_ARR = initValues(_3C_classLit, 42, -1, [120, 109, 112]);
1.18376 + TEXTAREA_ARR = initValues(_3C_classLit, 42, -1, [116, 101, 120, 116, 97, 114, 101, 97]);
1.18377 + IFRAME_ARR = initValues(_3C_classLit, 42, -1, [105, 102, 114, 97, 109, 101]);
1.18378 + NOEMBED_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 101, 109, 98, 101, 100]);
1.18379 + NOSCRIPT_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 115, 99, 114, 105, 112, 116]);
1.18380 + NOFRAMES_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 102, 114, 97, 109, 101, 115]);
1.18381 +}
1.18382 +
1.18383 +function $addAttributeWithValue(this$static){
1.18384 + var value;
1.18385 + this$static.metaBoundaryPassed && ($clinit_89() , META) == this$static.tagName && ($clinit_87() , CHARSET) == this$static.attributeName;
1.18386 + if (this$static.attributeName) {
1.18387 + value = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.18388 + if (!this$static.endTag && this$static.html4 && this$static.html4ModeCompatibleWithXhtml1Schemata && $isCaseFolded(this$static.attributeName)) {
1.18389 + value = newAsciiLowerCaseStringFromString(value);
1.18390 + }
1.18391 + $addAttribute(this$static.attributes, this$static.attributeName, value, this$static.xmlnsPolicy);
1.18392 + }
1.18393 +}
1.18394 +
1.18395 +function $addAttributeWithoutValue(this$static){
1.18396 + this$static.metaBoundaryPassed && ($clinit_87() , CHARSET) == this$static.attributeName && ($clinit_89() , META) == this$static.tagName;
1.18397 + if (this$static.attributeName) {
1.18398 + if (this$static.html4) {
1.18399 + if ($isBoolean(this$static.attributeName)) {
1.18400 + if (this$static.html4ModeCompatibleWithXhtml1Schemata) {
1.18401 + $addAttribute(this$static.attributes, this$static.attributeName, this$static.attributeName.local[0], this$static.xmlnsPolicy);
1.18402 + }
1.18403 + else {
1.18404 + $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
1.18405 + }
1.18406 + }
1.18407 + else {
1.18408 + $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
1.18409 + }
1.18410 + }
1.18411 + else {
1.18412 + if (($clinit_87() , SRC) == this$static.attributeName || HREF == this$static.attributeName) {
1.18413 + 'Attribute \u201C' + this$static.attributeName.local[0] + '\u201D without an explicit value seen. The attribute may be dropped by IE7.';
1.18414 + }
1.18415 + $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
1.18416 + }
1.18417 + }
1.18418 +}
1.18419 +
1.18420 +function $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c){
1.18421 + switch (this$static.commentPolicy.ordinal) {
1.18422 + case 2:
1.18423 + --this$static.longStrBufLen;
1.18424 + $appendLongStrBuf(this$static, 32);
1.18425 + $appendLongStrBuf(this$static, 45);
1.18426 + case 0:
1.18427 + $appendLongStrBuf(this$static, c);
1.18428 + break;
1.18429 + case 1:
1.18430 + $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
1.18431 + }
1.18432 +}
1.18433 +
1.18434 +function $appendLongStrBuf(this$static, c){
1.18435 + var newBuf;
1.18436 + if (this$static.longStrBufLen == this$static.longStrBuf.length) {
1.18437 + newBuf = initDim(_3C_classLit, 42, -1, this$static.longStrBufLen + (this$static.longStrBufLen >> 1), 1);
1.18438 + arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
1.18439 + this$static.longStrBuf = newBuf;
1.18440 + }
1.18441 + this$static.longStrBuf[this$static.longStrBufLen++] = c;
1.18442 +}
1.18443 +
1.18444 +function $appendLongStrBuf_0(this$static, buffer, offset, length){
1.18445 + var newBuf, reqLen;
1.18446 + reqLen = this$static.longStrBufLen + length;
1.18447 + if (this$static.longStrBuf.length < reqLen) {
1.18448 + newBuf = initDim(_3C_classLit, 42, -1, reqLen + (reqLen >> 1), 1);
1.18449 + arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
1.18450 + this$static.longStrBuf = newBuf;
1.18451 + }
1.18452 + arraycopy(buffer, offset, this$static.longStrBuf, this$static.longStrBufLen, length);
1.18453 + this$static.longStrBufLen = reqLen;
1.18454 +}
1.18455 +
1.18456 +function $appendSecondHyphenToBogusComment(this$static){
1.18457 + switch (this$static.commentPolicy.ordinal) {
1.18458 + case 2:
1.18459 + $appendLongStrBuf(this$static, 32);
1.18460 + case 0:
1.18461 + $appendLongStrBuf(this$static, 45);
1.18462 + break;
1.18463 + case 1:
1.18464 + $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
1.18465 + }
1.18466 +}
1.18467 +
1.18468 +function $appendStrBuf(this$static, c){
1.18469 + var newBuf;
1.18470 + if (this$static.strBufLen == this$static.strBuf.length) {
1.18471 + newBuf = initDim(_3C_classLit, 42, -1, this$static.strBuf.length + 1024, 1);
1.18472 + arraycopy(this$static.strBuf, 0, newBuf, 0, this$static.strBuf.length);
1.18473 + this$static.strBuf = newBuf;
1.18474 + }
1.18475 + this$static.strBuf[this$static.strBufLen++] = c;
1.18476 +}
1.18477 +
1.18478 +function $attributeNameComplete(this$static){
1.18479 + this$static.attributeName = nameByBuffer(this$static.strBuf, 0, this$static.strBufLen, this$static.namePolicy != ($clinit_80() , ALLOW));
1.18480 + if (!this$static.attributes) {
1.18481 + this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
1.18482 + }
1.18483 + if ($contains(this$static.attributes, this$static.attributeName)) {
1.18484 + 'Duplicate attribute \u201C' + this$static.attributeName.local[0] + '\u201D.';
1.18485 + this$static.attributeName = null;
1.18486 + }
1.18487 +}
1.18488 +
1.18489 +function $contentModelElementToArray(this$static){
1.18490 + switch (this$static.contentModelElement.group) {
1.18491 + case 36:
1.18492 + this$static.contentModelElementNameAsArray = TITLE_ARR;
1.18493 + return;
1.18494 + case 31:
1.18495 + this$static.contentModelElementNameAsArray = SCRIPT_ARR;
1.18496 + return;
1.18497 + case 33:
1.18498 + this$static.contentModelElementNameAsArray = STYLE_ARR;
1.18499 + return;
1.18500 + case 30:
1.18501 + this$static.contentModelElementNameAsArray = PLAINTEXT_ARR;
1.18502 + return;
1.18503 + case 38:
1.18504 + this$static.contentModelElementNameAsArray = XMP_ARR;
1.18505 + return;
1.18506 + case 35:
1.18507 + this$static.contentModelElementNameAsArray = TEXTAREA_ARR;
1.18508 + return;
1.18509 + case 47:
1.18510 + this$static.contentModelElementNameAsArray = IFRAME_ARR;
1.18511 + return;
1.18512 + case 60:
1.18513 + this$static.contentModelElementNameAsArray = NOEMBED_ARR;
1.18514 + return;
1.18515 + case 26:
1.18516 + this$static.contentModelElementNameAsArray = NOSCRIPT_ARR;
1.18517 + return;
1.18518 + case 25:
1.18519 + this$static.contentModelElementNameAsArray = NOFRAMES_ARR;
1.18520 + return;
1.18521 + default:return;
1.18522 + }
1.18523 +}
1.18524 +
1.18525 +function $emitCarriageReturn(this$static, buf, pos){
1.18526 + this$static.nextCharOnNewLine = true;
1.18527 + this$static.lastCR = true;
1.18528 + $flushChars(this$static, buf, pos);
1.18529 + $characters(this$static.tokenHandler, LF, 0, 1);
1.18530 + this$static.cstart = 2147483647;
1.18531 +}
1.18532 +
1.18533 +function $emitComment(this$static, provisionalHyphens, pos){
1.18534 + if (this$static.wantsComments) {
1.18535 + $comment(this$static.tokenHandler, this$static.longStrBuf, 0, this$static.longStrBufLen - provisionalHyphens);
1.18536 + }
1.18537 + this$static.cstart = pos + 1;
1.18538 +}
1.18539 +
1.18540 +function $emitCurrentTagToken(this$static, selfClosing, pos){
1.18541 + var attrs;
1.18542 + this$static.cstart = pos + 1;
1.18543 + this$static.stateSave = 0;
1.18544 + attrs = !this$static.attributes?($clinit_91() , EMPTY_ATTRIBUTES):this$static.attributes;
1.18545 + if (this$static.endTag) {
1.18546 + $endTag(this$static.tokenHandler, this$static.tagName);
1.18547 + }
1.18548 + else {
1.18549 + $startTag(this$static.tokenHandler, this$static.tagName, attrs, selfClosing);
1.18550 + }
1.18551 + $resetAttributes(this$static);
1.18552 + return this$static.stateSave;
1.18553 +}
1.18554 +
1.18555 +function $emitOrAppend(this$static, val, returnState){
1.18556 + if ((returnState & -2) != 0) {
1.18557 + $appendLongStrBuf_0(this$static, val, 0, val.length);
1.18558 + }
1.18559 + else {
1.18560 + $characters(this$static.tokenHandler, val, 0, val.length);
1.18561 + }
1.18562 +}
1.18563 +
1.18564 +function $emitOrAppendOne(this$static, val, returnState){
1.18565 + if ((returnState & -2) != 0) {
1.18566 + $appendLongStrBuf(this$static, val[0]);
1.18567 + }
1.18568 + else {
1.18569 + $characters(this$static.tokenHandler, val, 0, 1);
1.18570 + }
1.18571 +}
1.18572 +
1.18573 +function $emitOrAppendStrBuf(this$static, returnState){
1.18574 + if ((returnState & -2) != 0) {
1.18575 + $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
1.18576 + }
1.18577 + else {
1.18578 + $emitStrBuf(this$static);
1.18579 + }
1.18580 +}
1.18581 +
1.18582 +function $emitReplacementCharacter(this$static, buf, pos){
1.18583 + this$static.nextCharOnNewLine = true;
1.18584 + this$static.lastCR = true;
1.18585 + $flushChars(this$static, buf, pos);
1.18586 + $characters(this$static.tokenHandler, REPLACEMENT_CHARACTER, 0, 1);
1.18587 + this$static.cstart = 2147483647;
1.18588 +}
1.18589 +
1.18590 +function $emitStrBuf(this$static){
1.18591 + if (this$static.strBufLen > 0) {
1.18592 + $characters(this$static.tokenHandler, this$static.strBuf, 0, this$static.strBufLen);
1.18593 + }
1.18594 +}
1.18595 +
1.18596 +function $emptyAttributes(this$static){
1.18597 + if (this$static.newAttributesEachTime) {
1.18598 + return $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
1.18599 + }
1.18600 + else {
1.18601 + return $clinit_91() , EMPTY_ATTRIBUTES;
1.18602 + }
1.18603 +}
1.18604 +
1.18605 +function $end(this$static){
1.18606 + this$static.strBuf = null;
1.18607 + this$static.longStrBuf = null;
1.18608 + this$static.systemIdentifier = null;
1.18609 + this$static.publicIdentifier = null;
1.18610 + this$static.doctypeName = null;
1.18611 + this$static.tagName = null;
1.18612 + this$static.attributeName = null;
1.18613 + $endTokenization(this$static.tokenHandler);
1.18614 + if (this$static.attributes) {
1.18615 + $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
1.18616 + this$static.attributes = null;
1.18617 + }
1.18618 +}
1.18619 +
1.18620 +function $eof(this$static){
1.18621 + var candidateArr, ch, i, returnState, state, val;
1.18622 + state = this$static.stateSave;
1.18623 + returnState = this$static.returnStateSave;
1.18624 + eofloop: for (;;) {
1.18625 + switch (state) {
1.18626 + case 53:
1.18627 + $characters(this$static.tokenHandler, LT_GT, 0, 1);
1.18628 + break eofloop;
1.18629 + case 4:
1.18630 + $characters(this$static.tokenHandler, LT_GT, 0, 1);
1.18631 + break eofloop;
1.18632 + case 37:
1.18633 + if (this$static.index < this$static.contentModelElementNameAsArray.length) {
1.18634 + break eofloop;
1.18635 + }
1.18636 + else {
1.18637 + break eofloop;
1.18638 + }
1.18639 +
1.18640 + case 5:
1.18641 + $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
1.18642 + break eofloop;
1.18643 + case 6:
1.18644 + break eofloop;
1.18645 + case 7:
1.18646 + case 14:
1.18647 + case 48:
1.18648 + break eofloop;
1.18649 + case 8:
1.18650 + break eofloop;
1.18651 + case 9:
1.18652 + case 10:
1.18653 + break eofloop;
1.18654 + case 11:
1.18655 + case 12:
1.18656 + case 13:
1.18657 + break eofloop;
1.18658 + case 15:
1.18659 + $emitComment(this$static, 0, 0);
1.18660 + break eofloop;
1.18661 + case 59:
1.18662 + $maybeAppendSpaceToBogusComment(this$static);
1.18663 + $emitComment(this$static, 0, 0);
1.18664 + break eofloop;
1.18665 + case 16:
1.18666 + this$static.longStrBufLen = 0;
1.18667 + $emitComment(this$static, 0, 0);
1.18668 + break eofloop;
1.18669 + case 38:
1.18670 + $emitComment(this$static, 0, 0);
1.18671 + break eofloop;
1.18672 + case 39:
1.18673 + if (this$static.index < 6) {
1.18674 + $emitComment(this$static, 0, 0);
1.18675 + }
1.18676 + else {
1.18677 + this$static.doctypeName = '';
1.18678 + this$static.publicIdentifier = null;
1.18679 + this$static.systemIdentifier = null;
1.18680 + this$static.forceQuirks = true;
1.18681 + this$static.cstart = 1;
1.18682 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18683 + break eofloop;
1.18684 + }
1.18685 +
1.18686 + break eofloop;
1.18687 + case 30:
1.18688 + case 32:
1.18689 + case 35:
1.18690 + $emitComment(this$static, 0, 0);
1.18691 + break eofloop;
1.18692 + case 34:
1.18693 + $emitComment(this$static, 2, 0);
1.18694 + break eofloop;
1.18695 + case 33:
1.18696 + case 31:
1.18697 + $emitComment(this$static, 1, 0);
1.18698 + break eofloop;
1.18699 + case 36:
1.18700 + $emitComment(this$static, 3, 0);
1.18701 + break eofloop;
1.18702 + case 17:
1.18703 + case 18:
1.18704 + this$static.forceQuirks = true;
1.18705 + this$static.cstart = 1;
1.18706 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18707 + break eofloop;
1.18708 + case 19:
1.18709 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
1.18710 + this$static.forceQuirks = true;
1.18711 + this$static.cstart = 1;
1.18712 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18713 + break eofloop;
1.18714 + case 40:
1.18715 + case 41:
1.18716 + case 20:
1.18717 + case 21:
1.18718 + this$static.forceQuirks = true;
1.18719 + this$static.cstart = 1;
1.18720 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18721 + break eofloop;
1.18722 + case 22:
1.18723 + case 23:
1.18724 + this$static.forceQuirks = true;
1.18725 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.18726 + this$static.cstart = 1;
1.18727 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18728 + break eofloop;
1.18729 + case 24:
1.18730 + case 25:
1.18731 + this$static.forceQuirks = true;
1.18732 + this$static.cstart = 1;
1.18733 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18734 + break eofloop;
1.18735 + case 26:
1.18736 + case 27:
1.18737 + this$static.forceQuirks = true;
1.18738 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.18739 + this$static.cstart = 1;
1.18740 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18741 + break eofloop;
1.18742 + case 28:
1.18743 + this$static.forceQuirks = true;
1.18744 + this$static.cstart = 1;
1.18745 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18746 + break eofloop;
1.18747 + case 29:
1.18748 + this$static.cstart = 1;
1.18749 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.18750 + break eofloop;
1.18751 + case 42:
1.18752 + $emitOrAppendStrBuf(this$static, returnState);
1.18753 + state = returnState;
1.18754 + continue;
1.18755 + case 44:
1.18756 + outer: for (;;) {
1.18757 + ++this$static.entCol;
1.18758 + hiloop: for (;;) {
1.18759 + if (this$static.hi == -1) {
1.18760 + break hiloop;
1.18761 + }
1.18762 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
1.18763 + break hiloop;
1.18764 + }
1.18765 + if (this$static.entCol > NAMES[this$static.hi].length) {
1.18766 + break outer;
1.18767 + }
1.18768 + else if (0 < NAMES[this$static.hi][this$static.entCol]) {
1.18769 + --this$static.hi;
1.18770 + }
1.18771 + else {
1.18772 + break hiloop;
1.18773 + }
1.18774 + }
1.18775 + loloop: for (;;) {
1.18776 + if (this$static.hi < this$static.lo) {
1.18777 + break outer;
1.18778 + }
1.18779 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
1.18780 + this$static.candidate = this$static.lo;
1.18781 + this$static.strBufMark = this$static.strBufLen;
1.18782 + ++this$static.lo;
1.18783 + }
1.18784 + else if (this$static.entCol > NAMES[this$static.lo].length) {
1.18785 + break outer;
1.18786 + }
1.18787 + else if (0 > NAMES[this$static.lo][this$static.entCol]) {
1.18788 + ++this$static.lo;
1.18789 + }
1.18790 + else {
1.18791 + break loloop;
1.18792 + }
1.18793 + }
1.18794 + if (this$static.hi < this$static.lo) {
1.18795 + break outer;
1.18796 + }
1.18797 + continue;
1.18798 + }
1.18799 +
1.18800 + if (this$static.candidate == -1) {
1.18801 + $emitOrAppendStrBuf(this$static, returnState);
1.18802 + state = returnState;
1.18803 + continue eofloop;
1.18804 + }
1.18805 + else {
1.18806 + candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
1.18807 + if (candidateArr[candidateArr.length - 1] != 59) {
1.18808 + if ((returnState & -2) != 0) {
1.18809 + if (this$static.strBufMark == this$static.strBufLen) {
1.18810 + ch = 0;
1.18811 + }
1.18812 + else {
1.18813 + ch = this$static.strBuf[this$static.strBufMark];
1.18814 + }
1.18815 + if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
1.18816 + $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
1.18817 + state = returnState;
1.18818 + continue eofloop;
1.18819 + }
1.18820 + }
1.18821 + }
1.18822 + val = VALUES_0[this$static.candidate];
1.18823 + $emitOrAppend(this$static, val, returnState);
1.18824 + if (this$static.strBufMark < this$static.strBufLen) {
1.18825 + if ((returnState & -2) != 0) {
1.18826 + for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
1.18827 + $appendLongStrBuf(this$static, this$static.strBuf[i]);
1.18828 + }
1.18829 + }
1.18830 + else {
1.18831 + $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
1.18832 + }
1.18833 + }
1.18834 + state = returnState;
1.18835 + continue eofloop;
1.18836 + }
1.18837 +
1.18838 + case 43:
1.18839 + case 46:
1.18840 + case 45:
1.18841 + if (this$static.seenDigits) {
1.18842 + }
1.18843 + else {
1.18844 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
1.18845 + $emitOrAppendStrBuf(this$static, returnState);
1.18846 + state = returnState;
1.18847 + continue;
1.18848 + }
1.18849 +
1.18850 + $handleNcrValue(this$static, returnState);
1.18851 + state = returnState;
1.18852 + continue;
1.18853 + case 0:
1.18854 + default:break eofloop;
1.18855 + }
1.18856 + }
1.18857 + $eof_0(this$static.tokenHandler);
1.18858 + return;
1.18859 +}
1.18860 +
1.18861 +function $fatal(this$static, message){
1.18862 + var spe;
1.18863 + spe = $SAXParseException(new SAXParseException(), message, this$static);
1.18864 + throw spe;
1.18865 +}
1.18866 +
1.18867 +function $handleNcrValue(this$static, returnState){
1.18868 + var ch, val;
1.18869 + if (this$static.value >= 128 && this$static.value <= 159) {
1.18870 + val = ($clinit_94() , WINDOWS_1252)[this$static.value - 128];
1.18871 + $emitOrAppendOne(this$static, val, returnState);
1.18872 + }
1.18873 + else if (this$static.value == 13) {
1.18874 + $emitOrAppendOne(this$static, LF, returnState);
1.18875 + }
1.18876 + else if (this$static.value == 12 && this$static.contentSpacePolicy != ($clinit_80() , ALLOW)) {
1.18877 + if (this$static.contentSpacePolicy == ($clinit_80() , ALTER_INFOSET)) {
1.18878 + $emitOrAppendOne(this$static, SPACE, returnState);
1.18879 + }
1.18880 + else if (this$static.contentSpacePolicy == FATAL) {
1.18881 + $fatal(this$static, 'A character reference expanded to a form feed which is not legal XML 1.0 white space.');
1.18882 + }
1.18883 + }
1.18884 + else if (this$static.value >= 0 && this$static.value <= 8 || this$static.value == 11 || this$static.value >= 14 && this$static.value <= 31 || this$static.value == 127) {
1.18885 + 'Character reference expands to a control character (' + $toUPlusString(this$static.value & 65535) + ').';
1.18886 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
1.18887 + }
1.18888 + else if ((this$static.value & 63488) == 55296) {
1.18889 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
1.18890 + }
1.18891 + else if ((this$static.value & 65534) == 65534) {
1.18892 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
1.18893 + }
1.18894 + else if (this$static.value >= 64976 && this$static.value <= 65007) {
1.18895 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
1.18896 + }
1.18897 + else if (this$static.value <= 65535) {
1.18898 + ch = this$static.value & 65535;
1.18899 + this$static.bmpChar[0] = ch;
1.18900 + $emitOrAppendOne(this$static, this$static.bmpChar, returnState);
1.18901 + }
1.18902 + else if (this$static.value <= 1114111) {
1.18903 + this$static.astralChar[0] = 55232 + (this$static.value >> 10) & 65535;
1.18904 + this$static.astralChar[1] = 56320 + (this$static.value & 1023) & 65535;
1.18905 + $emitOrAppend(this$static, this$static.astralChar, returnState);
1.18906 + }
1.18907 + else {
1.18908 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
1.18909 + }
1.18910 +}
1.18911 +
1.18912 +function $maybeAppendSpaceToBogusComment(this$static){
1.18913 + switch (this$static.commentPolicy.ordinal) {
1.18914 + case 2:
1.18915 + $appendLongStrBuf(this$static, 32);
1.18916 + break;
1.18917 + case 1:
1.18918 + $fatal(this$static, 'The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.');
1.18919 + }
1.18920 +}
1.18921 +
1.18922 +function $resetAttributes(this$static){
1.18923 + if (this$static.newAttributesEachTime) {
1.18924 + this$static.attributes = null;
1.18925 + }
1.18926 + else {
1.18927 + $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
1.18928 + }
1.18929 +}
1.18930 +
1.18931 +function $setContentModelFlag(this$static, contentModelFlag){
1.18932 + var asArray;
1.18933 + this$static.stateSave = contentModelFlag;
1.18934 + if (contentModelFlag == 0) {
1.18935 + return;
1.18936 + }
1.18937 + asArray = null.nullMethod();
1.18938 + this$static.contentModelElement = elementNameByBuffer(asArray, 0, null.nullField);
1.18939 + $contentModelElementToArray(this$static);
1.18940 +}
1.18941 +
1.18942 +function $setContentModelFlag_0(this$static, contentModelFlag, contentModelElement){
1.18943 + this$static.stateSave = contentModelFlag;
1.18944 + this$static.contentModelElement = contentModelElement;
1.18945 + $contentModelElementToArray(this$static);
1.18946 +}
1.18947 +
1.18948 +function $setXmlnsPolicy(this$static, xmlnsPolicy){
1.18949 + if (xmlnsPolicy == ($clinit_80() , FATAL)) {
1.18950 + throw $IllegalArgumentException(new IllegalArgumentException(), "Can't use FATAL here.");
1.18951 + }
1.18952 + this$static.xmlnsPolicy = xmlnsPolicy;
1.18953 +}
1.18954 +
1.18955 +function $start_0(this$static){
1.18956 + this$static.confident = false;
1.18957 + this$static.strBuf = initDim(_3C_classLit, 42, -1, 64, 1);
1.18958 + this$static.strBufLen = 0;
1.18959 + this$static.longStrBuf = initDim(_3C_classLit, 42, -1, 1024, 1);
1.18960 + this$static.longStrBufLen = 0;
1.18961 + this$static.stateSave = 0;
1.18962 + this$static.lastCR = false;
1.18963 + this$static.html4 = false;
1.18964 + this$static.metaBoundaryPassed = false;
1.18965 + $startTokenization(this$static.tokenHandler, this$static);
1.18966 + this$static.wantsComments = this$static.tokenHandler.wantingComments;
1.18967 + this$static.index = 0;
1.18968 + this$static.forceQuirks = false;
1.18969 + this$static.additional = 0;
1.18970 + this$static.entCol = -1;
1.18971 + this$static.lo = 0;
1.18972 + this$static.hi = ($clinit_94() , NAMES).length - 1;
1.18973 + this$static.candidate = -1;
1.18974 + this$static.strBufMark = 0;
1.18975 + this$static.prevValue = -1;
1.18976 + this$static.value = 0;
1.18977 + this$static.seenDigits = false;
1.18978 + this$static.shouldSuspend = false;
1.18979 + if (this$static.newAttributesEachTime) {
1.18980 + this$static.attributes = null;
1.18981 + }
1.18982 + else {
1.18983 + this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
1.18984 + }
1.18985 + this$static.alreadyComplainedAboutNonAscii = false;
1.18986 + this$static.line = this$static.linePrev = 0;
1.18987 + this$static.col = this$static.colPrev = 1;
1.18988 + this$static.nextCharOnNewLine = true;
1.18989 + this$static.prev = 0;
1.18990 + this$static.alreadyWarnedAboutPrivateUseCharacters = false;
1.18991 +}
1.18992 +
1.18993 +function $stateLoop(this$static, state, c, pos, buf, reconsume, returnState, endPos){
1.18994 + var candidateArr, ch, e, folded, i, val;
1.18995 + stateloop: for (;;) {
1.18996 + switch (state) {
1.18997 + case 0:
1.18998 + dataloop: for (;;) {
1.18999 + if (reconsume) {
1.19000 + reconsume = false;
1.19001 + }
1.19002 + else {
1.19003 + if (++pos == endPos) {
1.19004 + break stateloop;
1.19005 + }
1.19006 + c = $checkChar(this$static, buf, pos);
1.19007 + }
1.19008 + switch (c) {
1.19009 + case 38:
1.19010 + $flushChars(this$static, buf, pos);
1.19011 + this$static.strBuf[0] = c;
1.19012 + this$static.strBufLen = 1;
1.19013 + this$static.additional = 0;
1.19014 + $LocatorImpl(new LocatorImpl(), this$static);
1.19015 + returnState = state;
1.19016 + state = 42;
1.19017 + continue stateloop;
1.19018 + case 60:
1.19019 + $flushChars(this$static, buf, pos);
1.19020 + state = 4;
1.19021 + break dataloop;
1.19022 + case 0:
1.19023 + $emitReplacementCharacter(this$static, buf, pos);
1.19024 + continue;
1.19025 + case 13:
1.19026 + $emitCarriageReturn(this$static, buf, pos);
1.19027 + break stateloop;
1.19028 + case 10:
1.19029 + this$static.nextCharOnNewLine = true;
1.19030 + default:continue;
1.19031 + }
1.19032 + }
1.19033 +
1.19034 + case 4:
1.19035 + tagopenloop: for (;;) {
1.19036 + if (++pos == endPos) {
1.19037 + break stateloop;
1.19038 + }
1.19039 + c = $checkChar(this$static, buf, pos);
1.19040 + if (c >= 65 && c <= 90) {
1.19041 + this$static.endTag = false;
1.19042 + this$static.strBuf[0] = c + 32 & 65535;
1.19043 + this$static.strBufLen = 1;
1.19044 + state = 6;
1.19045 + break tagopenloop;
1.19046 + }
1.19047 + else if (c >= 97 && c <= 122) {
1.19048 + this$static.endTag = false;
1.19049 + this$static.strBuf[0] = c;
1.19050 + this$static.strBufLen = 1;
1.19051 + state = 6;
1.19052 + break tagopenloop;
1.19053 + }
1.19054 + switch (c) {
1.19055 + case 33:
1.19056 + state = 16;
1.19057 + continue stateloop;
1.19058 + case 47:
1.19059 + state = 5;
1.19060 + continue stateloop;
1.19061 + case 63:
1.19062 + this$static.longStrBuf[0] = c;
1.19063 + this$static.longStrBufLen = 1;
1.19064 + state = 15;
1.19065 + continue stateloop;
1.19066 + case 62:
1.19067 + $characters(this$static.tokenHandler, LT_GT, 0, 2);
1.19068 + this$static.cstart = pos + 1;
1.19069 + state = 0;
1.19070 + continue stateloop;
1.19071 + default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
1.19072 + this$static.cstart = pos;
1.19073 + state = 0;
1.19074 + reconsume = true;
1.19075 + continue stateloop;
1.19076 + }
1.19077 + }
1.19078 +
1.19079 + case 6:
1.19080 + tagnameloop: for (;;) {
1.19081 + if (++pos == endPos) {
1.19082 + break stateloop;
1.19083 + }
1.19084 + c = $checkChar(this$static, buf, pos);
1.19085 + switch (c) {
1.19086 + case 13:
1.19087 + this$static.nextCharOnNewLine = true;
1.19088 + this$static.lastCR = true;
1.19089 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
1.19090 + state = 7;
1.19091 + break stateloop;
1.19092 + case 10:
1.19093 + this$static.nextCharOnNewLine = true;
1.19094 + case 32:
1.19095 + case 9:
1.19096 + case 12:
1.19097 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
1.19098 + state = 7;
1.19099 + break tagnameloop;
1.19100 + case 47:
1.19101 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
1.19102 + state = 48;
1.19103 + continue stateloop;
1.19104 + case 62:
1.19105 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
1.19106 + state = $emitCurrentTagToken(this$static, false, pos);
1.19107 + if (this$static.shouldSuspend) {
1.19108 + break stateloop;
1.19109 + }
1.19110 +
1.19111 + continue stateloop;
1.19112 + case 0:
1.19113 + c = 65533;
1.19114 + default:if (c >= 65 && c <= 90) {
1.19115 + c += 32;
1.19116 + }
1.19117 +
1.19118 + $appendStrBuf(this$static, c);
1.19119 + continue;
1.19120 + }
1.19121 + }
1.19122 +
1.19123 + case 7:
1.19124 + beforeattributenameloop: for (;;) {
1.19125 + if (reconsume) {
1.19126 + reconsume = false;
1.19127 + }
1.19128 + else {
1.19129 + if (++pos == endPos) {
1.19130 + break stateloop;
1.19131 + }
1.19132 + c = $checkChar(this$static, buf, pos);
1.19133 + }
1.19134 + switch (c) {
1.19135 + case 13:
1.19136 + this$static.nextCharOnNewLine = true;
1.19137 + this$static.lastCR = true;
1.19138 + break stateloop;
1.19139 + case 10:
1.19140 + this$static.nextCharOnNewLine = true;
1.19141 + case 32:
1.19142 + case 9:
1.19143 + case 12:
1.19144 + continue;
1.19145 + case 47:
1.19146 + state = 48;
1.19147 + continue stateloop;
1.19148 + case 62:
1.19149 + state = $emitCurrentTagToken(this$static, false, pos);
1.19150 + if (this$static.shouldSuspend) {
1.19151 + break stateloop;
1.19152 + }
1.19153 +
1.19154 + continue stateloop;
1.19155 + case 0:
1.19156 + c = 65533;
1.19157 + case 34:
1.19158 + case 39:
1.19159 + case 60:
1.19160 + case 61:
1.19161 + default:if (c >= 65 && c <= 90) {
1.19162 + c += 32;
1.19163 + }
1.19164 +
1.19165 + this$static.strBuf[0] = c;
1.19166 + this$static.strBufLen = 1;
1.19167 + state = 8;
1.19168 + break beforeattributenameloop;
1.19169 + }
1.19170 + }
1.19171 +
1.19172 + case 8:
1.19173 + attributenameloop: for (;;) {
1.19174 + if (++pos == endPos) {
1.19175 + break stateloop;
1.19176 + }
1.19177 + c = $checkChar(this$static, buf, pos);
1.19178 + switch (c) {
1.19179 + case 13:
1.19180 + this$static.nextCharOnNewLine = true;
1.19181 + this$static.lastCR = true;
1.19182 + $attributeNameComplete(this$static);
1.19183 + state = 9;
1.19184 + break stateloop;
1.19185 + case 10:
1.19186 + this$static.nextCharOnNewLine = true;
1.19187 + case 32:
1.19188 + case 9:
1.19189 + case 12:
1.19190 + $attributeNameComplete(this$static);
1.19191 + state = 9;
1.19192 + continue stateloop;
1.19193 + case 47:
1.19194 + $attributeNameComplete(this$static);
1.19195 + $addAttributeWithoutValue(this$static);
1.19196 + state = 48;
1.19197 + continue stateloop;
1.19198 + case 61:
1.19199 + $attributeNameComplete(this$static);
1.19200 + state = 10;
1.19201 + break attributenameloop;
1.19202 + case 62:
1.19203 + $attributeNameComplete(this$static);
1.19204 + $addAttributeWithoutValue(this$static);
1.19205 + state = $emitCurrentTagToken(this$static, false, pos);
1.19206 + if (this$static.shouldSuspend) {
1.19207 + break stateloop;
1.19208 + }
1.19209 +
1.19210 + continue stateloop;
1.19211 + case 0:
1.19212 + c = 65533;
1.19213 + case 34:
1.19214 + case 39:
1.19215 + case 60:
1.19216 + default:if (c >= 65 && c <= 90) {
1.19217 + c += 32;
1.19218 + }
1.19219 +
1.19220 + $appendStrBuf(this$static, c);
1.19221 + continue;
1.19222 + }
1.19223 + }
1.19224 +
1.19225 + case 10:
1.19226 + beforeattributevalueloop: for (;;) {
1.19227 + if (++pos == endPos) {
1.19228 + break stateloop;
1.19229 + }
1.19230 + c = $checkChar(this$static, buf, pos);
1.19231 + switch (c) {
1.19232 + case 13:
1.19233 + this$static.nextCharOnNewLine = true;
1.19234 + this$static.lastCR = true;
1.19235 + break stateloop;
1.19236 + case 10:
1.19237 + this$static.nextCharOnNewLine = true;
1.19238 + case 32:
1.19239 + case 9:
1.19240 + case 12:
1.19241 + continue;
1.19242 + case 34:
1.19243 + this$static.longStrBufLen = 0;
1.19244 + state = 11;
1.19245 + break beforeattributevalueloop;
1.19246 + case 38:
1.19247 + this$static.longStrBufLen = 0;
1.19248 + state = 13;
1.19249 + reconsume = true;
1.19250 + continue stateloop;
1.19251 + case 39:
1.19252 + this$static.longStrBufLen = 0;
1.19253 + state = 12;
1.19254 + continue stateloop;
1.19255 + case 62:
1.19256 + $addAttributeWithoutValue(this$static);
1.19257 + state = $emitCurrentTagToken(this$static, false, pos);
1.19258 + if (this$static.shouldSuspend) {
1.19259 + break stateloop;
1.19260 + }
1.19261 +
1.19262 + continue stateloop;
1.19263 + case 0:
1.19264 + c = 65533;
1.19265 + case 60:
1.19266 + case 61:
1.19267 + $errLtOrEqualsInUnquotedAttributeOrNull(c);
1.19268 + default:this$static.longStrBuf[0] = c;
1.19269 + this$static.longStrBufLen = 1;
1.19270 + state = 13;
1.19271 + continue stateloop;
1.19272 + }
1.19273 + }
1.19274 +
1.19275 + case 11:
1.19276 + attributevaluedoublequotedloop: for (;;) {
1.19277 + if (reconsume) {
1.19278 + reconsume = false;
1.19279 + }
1.19280 + else {
1.19281 + if (++pos == endPos) {
1.19282 + break stateloop;
1.19283 + }
1.19284 + c = $checkChar(this$static, buf, pos);
1.19285 + }
1.19286 + switch (c) {
1.19287 + case 34:
1.19288 + $addAttributeWithValue(this$static);
1.19289 + state = 14;
1.19290 + break attributevaluedoublequotedloop;
1.19291 + case 38:
1.19292 + this$static.strBuf[0] = c;
1.19293 + this$static.strBufLen = 1;
1.19294 + this$static.additional = 34;
1.19295 + $LocatorImpl(new LocatorImpl(), this$static);
1.19296 + returnState = state;
1.19297 + state = 42;
1.19298 + continue stateloop;
1.19299 + case 13:
1.19300 + this$static.nextCharOnNewLine = true;
1.19301 + this$static.lastCR = true;
1.19302 + $appendLongStrBuf(this$static, 10);
1.19303 + break stateloop;
1.19304 + case 10:
1.19305 + this$static.nextCharOnNewLine = true;
1.19306 + $appendLongStrBuf(this$static, 10);
1.19307 + continue;
1.19308 + case 0:
1.19309 + c = 65533;
1.19310 + default:$appendLongStrBuf(this$static, c);
1.19311 + continue;
1.19312 + }
1.19313 + }
1.19314 +
1.19315 + case 14:
1.19316 + afterattributevaluequotedloop: for (;;) {
1.19317 + if (++pos == endPos) {
1.19318 + break stateloop;
1.19319 + }
1.19320 + c = $checkChar(this$static, buf, pos);
1.19321 + switch (c) {
1.19322 + case 13:
1.19323 + this$static.nextCharOnNewLine = true;
1.19324 + this$static.lastCR = true;
1.19325 + state = 7;
1.19326 + break stateloop;
1.19327 + case 10:
1.19328 + this$static.nextCharOnNewLine = true;
1.19329 + case 32:
1.19330 + case 9:
1.19331 + case 12:
1.19332 + state = 7;
1.19333 + continue stateloop;
1.19334 + case 47:
1.19335 + state = 48;
1.19336 + break afterattributevaluequotedloop;
1.19337 + case 62:
1.19338 + state = $emitCurrentTagToken(this$static, false, pos);
1.19339 + if (this$static.shouldSuspend) {
1.19340 + break stateloop;
1.19341 + }
1.19342 +
1.19343 + continue stateloop;
1.19344 + default:state = 7;
1.19345 + reconsume = true;
1.19346 + continue stateloop;
1.19347 + }
1.19348 + }
1.19349 +
1.19350 + case 48:
1.19351 + if (++pos == endPos) {
1.19352 + break stateloop;
1.19353 + }
1.19354 +
1.19355 + c = $checkChar(this$static, buf, pos);
1.19356 + switch (c) {
1.19357 + case 62:
1.19358 + state = $emitCurrentTagToken(this$static, true, pos);
1.19359 + if (this$static.shouldSuspend) {
1.19360 + break stateloop;
1.19361 + }
1.19362 +
1.19363 + continue stateloop;
1.19364 + default:state = 7;
1.19365 + reconsume = true;
1.19366 + continue stateloop;
1.19367 + }
1.19368 +
1.19369 + case 13:
1.19370 + for (;;) {
1.19371 + if (reconsume) {
1.19372 + reconsume = false;
1.19373 + }
1.19374 + else {
1.19375 + if (++pos == endPos) {
1.19376 + break stateloop;
1.19377 + }
1.19378 + c = $checkChar(this$static, buf, pos);
1.19379 + }
1.19380 + switch (c) {
1.19381 + case 13:
1.19382 + this$static.nextCharOnNewLine = true;
1.19383 + this$static.lastCR = true;
1.19384 + $addAttributeWithValue(this$static);
1.19385 + state = 7;
1.19386 + break stateloop;
1.19387 + case 10:
1.19388 + this$static.nextCharOnNewLine = true;
1.19389 + case 32:
1.19390 + case 9:
1.19391 + case 12:
1.19392 + $addAttributeWithValue(this$static);
1.19393 + state = 7;
1.19394 + continue stateloop;
1.19395 + case 38:
1.19396 + this$static.strBuf[0] = c;
1.19397 + this$static.strBufLen = 1;
1.19398 + this$static.additional = 62;
1.19399 + $LocatorImpl(new LocatorImpl(), this$static);
1.19400 + returnState = state;
1.19401 + state = 42;
1.19402 + continue stateloop;
1.19403 + case 62:
1.19404 + $addAttributeWithValue(this$static);
1.19405 + state = $emitCurrentTagToken(this$static, false, pos);
1.19406 + if (this$static.shouldSuspend) {
1.19407 + break stateloop;
1.19408 + }
1.19409 +
1.19410 + continue stateloop;
1.19411 + case 0:
1.19412 + c = 65533;
1.19413 + case 60:
1.19414 + case 34:
1.19415 + case 39:
1.19416 + case 61:
1.19417 + default:$appendLongStrBuf(this$static, c);
1.19418 + continue;
1.19419 + }
1.19420 + }
1.19421 +
1.19422 + case 9:
1.19423 + for (;;) {
1.19424 + if (++pos == endPos) {
1.19425 + break stateloop;
1.19426 + }
1.19427 + c = $checkChar(this$static, buf, pos);
1.19428 + switch (c) {
1.19429 + case 13:
1.19430 + this$static.nextCharOnNewLine = true;
1.19431 + this$static.lastCR = true;
1.19432 + break stateloop;
1.19433 + case 10:
1.19434 + this$static.nextCharOnNewLine = true;
1.19435 + case 32:
1.19436 + case 9:
1.19437 + case 12:
1.19438 + continue;
1.19439 + case 47:
1.19440 + $addAttributeWithoutValue(this$static);
1.19441 + state = 48;
1.19442 + continue stateloop;
1.19443 + case 61:
1.19444 + state = 10;
1.19445 + continue stateloop;
1.19446 + case 62:
1.19447 + $addAttributeWithoutValue(this$static);
1.19448 + state = $emitCurrentTagToken(this$static, false, pos);
1.19449 + if (this$static.shouldSuspend) {
1.19450 + break stateloop;
1.19451 + }
1.19452 +
1.19453 + continue stateloop;
1.19454 + case 0:
1.19455 + c = 65533;
1.19456 + case 34:
1.19457 + case 39:
1.19458 + case 60:
1.19459 + default:$addAttributeWithoutValue(this$static);
1.19460 + if (c >= 65 && c <= 90) {
1.19461 + c += 32;
1.19462 + }
1.19463 +
1.19464 + this$static.strBuf[0] = c;
1.19465 + this$static.strBufLen = 1;
1.19466 + state = 8;
1.19467 + continue stateloop;
1.19468 + }
1.19469 + }
1.19470 +
1.19471 + case 15:
1.19472 + boguscommentloop: for (;;) {
1.19473 + if (reconsume) {
1.19474 + reconsume = false;
1.19475 + }
1.19476 + else {
1.19477 + if (++pos == endPos) {
1.19478 + break stateloop;
1.19479 + }
1.19480 + c = $checkChar(this$static, buf, pos);
1.19481 + }
1.19482 + switch (c) {
1.19483 + case 62:
1.19484 + $emitComment(this$static, 0, pos);
1.19485 + state = 0;
1.19486 + continue stateloop;
1.19487 + case 45:
1.19488 + $appendLongStrBuf(this$static, c);
1.19489 + state = 59;
1.19490 + break boguscommentloop;
1.19491 + case 13:
1.19492 + this$static.nextCharOnNewLine = true;
1.19493 + this$static.lastCR = true;
1.19494 + $appendLongStrBuf(this$static, 10);
1.19495 + break stateloop;
1.19496 + case 10:
1.19497 + this$static.nextCharOnNewLine = true;
1.19498 + $appendLongStrBuf(this$static, 10);
1.19499 + continue;
1.19500 + case 0:
1.19501 + c = 65533;
1.19502 + default:$appendLongStrBuf(this$static, c);
1.19503 + continue;
1.19504 + }
1.19505 + }
1.19506 +
1.19507 + case 59:
1.19508 + boguscommenthyphenloop: for (;;) {
1.19509 + if (++pos == endPos) {
1.19510 + break stateloop;
1.19511 + }
1.19512 + c = $checkChar(this$static, buf, pos);
1.19513 + switch (c) {
1.19514 + case 62:
1.19515 + $maybeAppendSpaceToBogusComment(this$static);
1.19516 + $emitComment(this$static, 0, pos);
1.19517 + state = 0;
1.19518 + continue stateloop;
1.19519 + case 45:
1.19520 + $appendSecondHyphenToBogusComment(this$static);
1.19521 + continue boguscommenthyphenloop;
1.19522 + case 13:
1.19523 + this$static.nextCharOnNewLine = true;
1.19524 + this$static.lastCR = true;
1.19525 + $appendLongStrBuf(this$static, 10);
1.19526 + state = 15;
1.19527 + break stateloop;
1.19528 + case 10:
1.19529 + this$static.nextCharOnNewLine = true;
1.19530 + $appendLongStrBuf(this$static, 10);
1.19531 + state = 15;
1.19532 + continue stateloop;
1.19533 + case 0:
1.19534 + c = 65533;
1.19535 + default:$appendLongStrBuf(this$static, c);
1.19536 + state = 15;
1.19537 + continue stateloop;
1.19538 + }
1.19539 + }
1.19540 +
1.19541 + case 16:
1.19542 + markupdeclarationopenloop: for (;;) {
1.19543 + if (++pos == endPos) {
1.19544 + break stateloop;
1.19545 + }
1.19546 + c = $checkChar(this$static, buf, pos);
1.19547 + switch (c) {
1.19548 + case 45:
1.19549 + this$static.longStrBuf[0] = c;
1.19550 + this$static.longStrBufLen = 1;
1.19551 + state = 38;
1.19552 + break markupdeclarationopenloop;
1.19553 + case 100:
1.19554 + case 68:
1.19555 + this$static.longStrBuf[0] = c;
1.19556 + this$static.longStrBufLen = 1;
1.19557 + this$static.index = 0;
1.19558 + state = 39;
1.19559 + continue stateloop;
1.19560 + case 91:
1.19561 + if (this$static.tokenHandler.foreignFlag == 0) {
1.19562 + this$static.longStrBuf[0] = c;
1.19563 + this$static.longStrBufLen = 1;
1.19564 + this$static.index = 0;
1.19565 + state = 49;
1.19566 + continue stateloop;
1.19567 + }
1.19568 + else {
1.19569 + }
1.19570 +
1.19571 + default:this$static.longStrBufLen = 0;
1.19572 + state = 15;
1.19573 + reconsume = true;
1.19574 + continue stateloop;
1.19575 + }
1.19576 + }
1.19577 +
1.19578 + case 38:
1.19579 + markupdeclarationhyphenloop: for (;;) {
1.19580 + if (++pos == endPos) {
1.19581 + break stateloop;
1.19582 + }
1.19583 + c = $checkChar(this$static, buf, pos);
1.19584 + switch (c) {
1.19585 + case 0:
1.19586 + break stateloop;
1.19587 + case 45:
1.19588 + this$static.longStrBufLen = 0;
1.19589 + state = 30;
1.19590 + break markupdeclarationhyphenloop;
1.19591 + default:state = 15;
1.19592 + reconsume = true;
1.19593 + continue stateloop;
1.19594 + }
1.19595 + }
1.19596 +
1.19597 + case 30:
1.19598 + commentstartloop: for (;;) {
1.19599 + if (++pos == endPos) {
1.19600 + break stateloop;
1.19601 + }
1.19602 + c = $checkChar(this$static, buf, pos);
1.19603 + switch (c) {
1.19604 + case 45:
1.19605 + $appendLongStrBuf(this$static, c);
1.19606 + state = 31;
1.19607 + continue stateloop;
1.19608 + case 62:
1.19609 + $emitComment(this$static, 0, pos);
1.19610 + state = 0;
1.19611 + continue stateloop;
1.19612 + case 13:
1.19613 + this$static.nextCharOnNewLine = true;
1.19614 + this$static.lastCR = true;
1.19615 + $appendLongStrBuf(this$static, 10);
1.19616 + state = 32;
1.19617 + break stateloop;
1.19618 + case 10:
1.19619 + this$static.nextCharOnNewLine = true;
1.19620 + $appendLongStrBuf(this$static, 10);
1.19621 + state = 32;
1.19622 + break commentstartloop;
1.19623 + case 0:
1.19624 + c = 65533;
1.19625 + default:$appendLongStrBuf(this$static, c);
1.19626 + state = 32;
1.19627 + break commentstartloop;
1.19628 + }
1.19629 + }
1.19630 +
1.19631 + case 32:
1.19632 + commentloop: for (;;) {
1.19633 + if (++pos == endPos) {
1.19634 + break stateloop;
1.19635 + }
1.19636 + c = $checkChar(this$static, buf, pos);
1.19637 + switch (c) {
1.19638 + case 45:
1.19639 + $appendLongStrBuf(this$static, c);
1.19640 + state = 33;
1.19641 + break commentloop;
1.19642 + case 13:
1.19643 + this$static.nextCharOnNewLine = true;
1.19644 + this$static.lastCR = true;
1.19645 + $appendLongStrBuf(this$static, 10);
1.19646 + break stateloop;
1.19647 + case 10:
1.19648 + this$static.nextCharOnNewLine = true;
1.19649 + $appendLongStrBuf(this$static, 10);
1.19650 + continue;
1.19651 + case 0:
1.19652 + c = 65533;
1.19653 + default:$appendLongStrBuf(this$static, c);
1.19654 + continue;
1.19655 + }
1.19656 + }
1.19657 +
1.19658 + case 33:
1.19659 + commentenddashloop: for (;;) {
1.19660 + if (++pos == endPos) {
1.19661 + break stateloop;
1.19662 + }
1.19663 + c = $checkChar(this$static, buf, pos);
1.19664 + switch (c) {
1.19665 + case 45:
1.19666 + $appendLongStrBuf(this$static, c);
1.19667 + state = 34;
1.19668 + break commentenddashloop;
1.19669 + case 13:
1.19670 + this$static.nextCharOnNewLine = true;
1.19671 + this$static.lastCR = true;
1.19672 + $appendLongStrBuf(this$static, 10);
1.19673 + state = 32;
1.19674 + break stateloop;
1.19675 + case 10:
1.19676 + this$static.nextCharOnNewLine = true;
1.19677 + $appendLongStrBuf(this$static, 10);
1.19678 + state = 32;
1.19679 + continue stateloop;
1.19680 + case 0:
1.19681 + c = 65533;
1.19682 + default:$appendLongStrBuf(this$static, c);
1.19683 + state = 32;
1.19684 + continue stateloop;
1.19685 + }
1.19686 + }
1.19687 +
1.19688 + case 34:
1.19689 + commentendloop: for (;;) {
1.19690 + if (++pos == endPos) {
1.19691 + break stateloop;
1.19692 + }
1.19693 + c = $checkChar(this$static, buf, pos);
1.19694 + switch (c) {
1.19695 + case 62:
1.19696 + $emitComment(this$static, 2, pos);
1.19697 + state = 0;
1.19698 + continue stateloop;
1.19699 + case 45:
1.19700 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
1.19701 + continue;
1.19702 + case 32:
1.19703 + case 9:
1.19704 + case 12:
1.19705 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
1.19706 + state = 35;
1.19707 + break commentendloop;
1.19708 + case 13:
1.19709 + this$static.nextCharOnNewLine = true;
1.19710 + this$static.lastCR = true;
1.19711 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
1.19712 + state = 35;
1.19713 + break stateloop;
1.19714 + case 10:
1.19715 + this$static.nextCharOnNewLine = true;
1.19716 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
1.19717 + state = 35;
1.19718 + break commentendloop;
1.19719 + case 33:
1.19720 + $appendLongStrBuf(this$static, c);
1.19721 + state = 36;
1.19722 + continue stateloop;
1.19723 + case 0:
1.19724 + c = 65533;
1.19725 + default:$adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
1.19726 + state = 32;
1.19727 + continue stateloop;
1.19728 + }
1.19729 + }
1.19730 +
1.19731 + case 35:
1.19732 + for (;;) {
1.19733 + if (++pos == endPos) {
1.19734 + break stateloop;
1.19735 + }
1.19736 + c = $checkChar(this$static, buf, pos);
1.19737 + switch (c) {
1.19738 + case 62:
1.19739 + $emitComment(this$static, 0, pos);
1.19740 + state = 0;
1.19741 + continue stateloop;
1.19742 + case 45:
1.19743 + $appendLongStrBuf(this$static, c);
1.19744 + state = 33;
1.19745 + continue stateloop;
1.19746 + case 32:
1.19747 + case 9:
1.19748 + case 12:
1.19749 + $appendLongStrBuf(this$static, c);
1.19750 + continue;
1.19751 + case 13:
1.19752 + this$static.nextCharOnNewLine = true;
1.19753 + this$static.lastCR = true;
1.19754 + $appendLongStrBuf(this$static, 10);
1.19755 + break stateloop;
1.19756 + case 10:
1.19757 + this$static.nextCharOnNewLine = true;
1.19758 + $appendLongStrBuf(this$static, 10);
1.19759 + continue;
1.19760 + case 0:
1.19761 + c = 65533;
1.19762 + default:$appendLongStrBuf(this$static, c);
1.19763 + state = 32;
1.19764 + continue stateloop;
1.19765 + }
1.19766 + }
1.19767 +
1.19768 + case 36:
1.19769 + for (;;) {
1.19770 + if (++pos == endPos) {
1.19771 + break stateloop;
1.19772 + }
1.19773 + c = $checkChar(this$static, buf, pos);
1.19774 + switch (c) {
1.19775 + case 62:
1.19776 + $emitComment(this$static, 3, pos);
1.19777 + state = 0;
1.19778 + continue stateloop;
1.19779 + case 45:
1.19780 + $appendLongStrBuf(this$static, c);
1.19781 + state = 33;
1.19782 + continue stateloop;
1.19783 + case 13:
1.19784 + this$static.nextCharOnNewLine = true;
1.19785 + this$static.lastCR = true;
1.19786 + $appendLongStrBuf(this$static, 10);
1.19787 + break stateloop;
1.19788 + case 10:
1.19789 + this$static.nextCharOnNewLine = true;
1.19790 + $appendLongStrBuf(this$static, 10);
1.19791 + continue;
1.19792 + case 0:
1.19793 + c = 65533;
1.19794 + default:$appendLongStrBuf(this$static, c);
1.19795 + state = 32;
1.19796 + continue stateloop;
1.19797 + }
1.19798 + }
1.19799 +
1.19800 + case 31:
1.19801 + if (++pos == endPos) {
1.19802 + break stateloop;
1.19803 + }
1.19804 +
1.19805 + c = $checkChar(this$static, buf, pos);
1.19806 + switch (c) {
1.19807 + case 45:
1.19808 + $appendLongStrBuf(this$static, c);
1.19809 + state = 34;
1.19810 + continue stateloop;
1.19811 + case 62:
1.19812 + $emitComment(this$static, 1, pos);
1.19813 + state = 0;
1.19814 + continue stateloop;
1.19815 + case 13:
1.19816 + this$static.nextCharOnNewLine = true;
1.19817 + this$static.lastCR = true;
1.19818 + $appendLongStrBuf(this$static, 10);
1.19819 + state = 32;
1.19820 + break stateloop;
1.19821 + case 10:
1.19822 + this$static.nextCharOnNewLine = true;
1.19823 + $appendLongStrBuf(this$static, 10);
1.19824 + state = 32;
1.19825 + continue stateloop;
1.19826 + case 0:
1.19827 + c = 65533;
1.19828 + default:$appendLongStrBuf(this$static, c);
1.19829 + state = 32;
1.19830 + continue stateloop;
1.19831 + }
1.19832 +
1.19833 + case 39:
1.19834 + markupdeclarationdoctypeloop: for (;;) {
1.19835 + if (++pos == endPos) {
1.19836 + break stateloop;
1.19837 + }
1.19838 + c = $checkChar(this$static, buf, pos);
1.19839 + if (this$static.index < 6) {
1.19840 + folded = c;
1.19841 + if (c >= 65 && c <= 90) {
1.19842 + folded += 32;
1.19843 + }
1.19844 + if (folded == OCTYPE[this$static.index]) {
1.19845 + $appendLongStrBuf(this$static, c);
1.19846 + }
1.19847 + else {
1.19848 + state = 15;
1.19849 + reconsume = true;
1.19850 + continue stateloop;
1.19851 + }
1.19852 + ++this$static.index;
1.19853 + continue;
1.19854 + }
1.19855 + else {
1.19856 + state = 17;
1.19857 + reconsume = true;
1.19858 + break markupdeclarationdoctypeloop;
1.19859 + }
1.19860 + }
1.19861 +
1.19862 + case 17:
1.19863 + doctypeloop: for (;;) {
1.19864 + if (reconsume) {
1.19865 + reconsume = false;
1.19866 + }
1.19867 + else {
1.19868 + if (++pos == endPos) {
1.19869 + break stateloop;
1.19870 + }
1.19871 + c = $checkChar(this$static, buf, pos);
1.19872 + }
1.19873 + this$static.doctypeName = '';
1.19874 + this$static.systemIdentifier = null;
1.19875 + this$static.publicIdentifier = null;
1.19876 + this$static.forceQuirks = false;
1.19877 + switch (c) {
1.19878 + case 13:
1.19879 + this$static.nextCharOnNewLine = true;
1.19880 + this$static.lastCR = true;
1.19881 + state = 18;
1.19882 + break stateloop;
1.19883 + case 10:
1.19884 + this$static.nextCharOnNewLine = true;
1.19885 + case 32:
1.19886 + case 9:
1.19887 + case 12:
1.19888 + state = 18;
1.19889 + break doctypeloop;
1.19890 + default:state = 18;
1.19891 + reconsume = true;
1.19892 + break doctypeloop;
1.19893 + }
1.19894 + }
1.19895 +
1.19896 + case 18:
1.19897 + beforedoctypenameloop: for (;;) {
1.19898 + if (reconsume) {
1.19899 + reconsume = false;
1.19900 + }
1.19901 + else {
1.19902 + if (++pos == endPos) {
1.19903 + break stateloop;
1.19904 + }
1.19905 + c = $checkChar(this$static, buf, pos);
1.19906 + }
1.19907 + switch (c) {
1.19908 + case 13:
1.19909 + this$static.nextCharOnNewLine = true;
1.19910 + this$static.lastCR = true;
1.19911 + break stateloop;
1.19912 + case 10:
1.19913 + this$static.nextCharOnNewLine = true;
1.19914 + case 32:
1.19915 + case 9:
1.19916 + case 12:
1.19917 + continue;
1.19918 + case 62:
1.19919 + this$static.forceQuirks = true;
1.19920 + this$static.cstart = pos + 1;
1.19921 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.19922 + state = 0;
1.19923 + continue stateloop;
1.19924 + case 0:
1.19925 + c = 65533;
1.19926 + default:if (c >= 65 && c <= 90) {
1.19927 + c += 32;
1.19928 + }
1.19929 +
1.19930 + this$static.strBuf[0] = c;
1.19931 + this$static.strBufLen = 1;
1.19932 + state = 19;
1.19933 + break beforedoctypenameloop;
1.19934 + }
1.19935 + }
1.19936 +
1.19937 + case 19:
1.19938 + doctypenameloop: for (;;) {
1.19939 + if (++pos == endPos) {
1.19940 + break stateloop;
1.19941 + }
1.19942 + c = $checkChar(this$static, buf, pos);
1.19943 + switch (c) {
1.19944 + case 13:
1.19945 + this$static.nextCharOnNewLine = true;
1.19946 + this$static.lastCR = true;
1.19947 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
1.19948 + state = 20;
1.19949 + break stateloop;
1.19950 + case 10:
1.19951 + this$static.nextCharOnNewLine = true;
1.19952 + case 32:
1.19953 + case 9:
1.19954 + case 12:
1.19955 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
1.19956 + state = 20;
1.19957 + break doctypenameloop;
1.19958 + case 62:
1.19959 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
1.19960 + this$static.cstart = pos + 1;
1.19961 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.19962 + state = 0;
1.19963 + continue stateloop;
1.19964 + case 0:
1.19965 + c = 65533;
1.19966 + default:if (c >= 65 && c <= 90) {
1.19967 + c += 32;
1.19968 + }
1.19969 +
1.19970 + $appendStrBuf(this$static, c);
1.19971 + continue;
1.19972 + }
1.19973 + }
1.19974 +
1.19975 + case 20:
1.19976 + afterdoctypenameloop: for (;;) {
1.19977 + if (++pos == endPos) {
1.19978 + break stateloop;
1.19979 + }
1.19980 + c = $checkChar(this$static, buf, pos);
1.19981 + switch (c) {
1.19982 + case 13:
1.19983 + this$static.nextCharOnNewLine = true;
1.19984 + this$static.lastCR = true;
1.19985 + break stateloop;
1.19986 + case 10:
1.19987 + this$static.nextCharOnNewLine = true;
1.19988 + case 32:
1.19989 + case 9:
1.19990 + case 12:
1.19991 + continue;
1.19992 + case 62:
1.19993 + this$static.cstart = pos + 1;
1.19994 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.19995 + state = 0;
1.19996 + continue stateloop;
1.19997 + case 112:
1.19998 + case 80:
1.19999 + this$static.index = 0;
1.20000 + state = 40;
1.20001 + break afterdoctypenameloop;
1.20002 + case 115:
1.20003 + case 83:
1.20004 + this$static.index = 0;
1.20005 + state = 41;
1.20006 + continue stateloop;
1.20007 + default:this$static.forceQuirks = true;
1.20008 + state = 29;
1.20009 + continue stateloop;
1.20010 + }
1.20011 + }
1.20012 +
1.20013 + case 40:
1.20014 + doctypeublicloop: for (;;) {
1.20015 + if (++pos == endPos) {
1.20016 + break stateloop;
1.20017 + }
1.20018 + c = $checkChar(this$static, buf, pos);
1.20019 + if (this$static.index < 5) {
1.20020 + folded = c;
1.20021 + if (c >= 65 && c <= 90) {
1.20022 + folded += 32;
1.20023 + }
1.20024 + if (folded != UBLIC[this$static.index]) {
1.20025 + this$static.forceQuirks = true;
1.20026 + state = 29;
1.20027 + reconsume = true;
1.20028 + continue stateloop;
1.20029 + }
1.20030 + ++this$static.index;
1.20031 + continue;
1.20032 + }
1.20033 + else {
1.20034 + state = 21;
1.20035 + reconsume = true;
1.20036 + break doctypeublicloop;
1.20037 + }
1.20038 + }
1.20039 +
1.20040 + case 21:
1.20041 + beforedoctypepublicidentifierloop: for (;;) {
1.20042 + if (reconsume) {
1.20043 + reconsume = false;
1.20044 + }
1.20045 + else {
1.20046 + if (++pos == endPos) {
1.20047 + break stateloop;
1.20048 + }
1.20049 + c = $checkChar(this$static, buf, pos);
1.20050 + }
1.20051 + switch (c) {
1.20052 + case 13:
1.20053 + this$static.nextCharOnNewLine = true;
1.20054 + this$static.lastCR = true;
1.20055 + break stateloop;
1.20056 + case 10:
1.20057 + this$static.nextCharOnNewLine = true;
1.20058 + case 32:
1.20059 + case 9:
1.20060 + case 12:
1.20061 + continue;
1.20062 + case 34:
1.20063 + this$static.longStrBufLen = 0;
1.20064 + state = 22;
1.20065 + break beforedoctypepublicidentifierloop;
1.20066 + case 39:
1.20067 + this$static.longStrBufLen = 0;
1.20068 + state = 23;
1.20069 + continue stateloop;
1.20070 + case 62:
1.20071 + this$static.forceQuirks = true;
1.20072 + this$static.cstart = pos + 1;
1.20073 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20074 + state = 0;
1.20075 + continue stateloop;
1.20076 + default:this$static.forceQuirks = true;
1.20077 + state = 29;
1.20078 + continue stateloop;
1.20079 + }
1.20080 + }
1.20081 +
1.20082 + case 22:
1.20083 + doctypepublicidentifierdoublequotedloop: for (;;) {
1.20084 + if (++pos == endPos) {
1.20085 + break stateloop;
1.20086 + }
1.20087 + c = $checkChar(this$static, buf, pos);
1.20088 + switch (c) {
1.20089 + case 34:
1.20090 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20091 + state = 24;
1.20092 + break doctypepublicidentifierdoublequotedloop;
1.20093 + case 62:
1.20094 + this$static.forceQuirks = true;
1.20095 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20096 + this$static.cstart = pos + 1;
1.20097 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20098 + state = 0;
1.20099 + continue stateloop;
1.20100 + case 13:
1.20101 + this$static.nextCharOnNewLine = true;
1.20102 + this$static.lastCR = true;
1.20103 + $appendLongStrBuf(this$static, 10);
1.20104 + break stateloop;
1.20105 + case 10:
1.20106 + this$static.nextCharOnNewLine = true;
1.20107 + $appendLongStrBuf(this$static, 10);
1.20108 + continue;
1.20109 + case 0:
1.20110 + c = 65533;
1.20111 + default:$appendLongStrBuf(this$static, c);
1.20112 + continue;
1.20113 + }
1.20114 + }
1.20115 +
1.20116 + case 24:
1.20117 + afterdoctypepublicidentifierloop: for (;;) {
1.20118 + if (++pos == endPos) {
1.20119 + break stateloop;
1.20120 + }
1.20121 + c = $checkChar(this$static, buf, pos);
1.20122 + switch (c) {
1.20123 + case 13:
1.20124 + this$static.nextCharOnNewLine = true;
1.20125 + this$static.lastCR = true;
1.20126 + break stateloop;
1.20127 + case 10:
1.20128 + this$static.nextCharOnNewLine = true;
1.20129 + case 32:
1.20130 + case 9:
1.20131 + case 12:
1.20132 + continue;
1.20133 + case 34:
1.20134 + this$static.longStrBufLen = 0;
1.20135 + state = 26;
1.20136 + break afterdoctypepublicidentifierloop;
1.20137 + case 39:
1.20138 + this$static.longStrBufLen = 0;
1.20139 + state = 27;
1.20140 + continue stateloop;
1.20141 + case 62:
1.20142 + this$static.cstart = pos + 1;
1.20143 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20144 + state = 0;
1.20145 + continue stateloop;
1.20146 + default:this$static.forceQuirks = true;
1.20147 + state = 29;
1.20148 + continue stateloop;
1.20149 + }
1.20150 + }
1.20151 +
1.20152 + case 26:
1.20153 + doctypesystemidentifierdoublequotedloop: for (;;) {
1.20154 + if (++pos == endPos) {
1.20155 + break stateloop;
1.20156 + }
1.20157 + c = $checkChar(this$static, buf, pos);
1.20158 + switch (c) {
1.20159 + case 34:
1.20160 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20161 + state = 28;
1.20162 + continue stateloop;
1.20163 + case 62:
1.20164 + this$static.forceQuirks = true;
1.20165 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20166 + this$static.cstart = pos + 1;
1.20167 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20168 + state = 0;
1.20169 + continue stateloop;
1.20170 + case 13:
1.20171 + this$static.nextCharOnNewLine = true;
1.20172 + this$static.lastCR = true;
1.20173 + $appendLongStrBuf(this$static, 10);
1.20174 + break stateloop;
1.20175 + case 10:
1.20176 + this$static.nextCharOnNewLine = true;
1.20177 + $appendLongStrBuf(this$static, 10);
1.20178 + continue;
1.20179 + case 0:
1.20180 + c = 65533;
1.20181 + default:$appendLongStrBuf(this$static, c);
1.20182 + continue;
1.20183 + }
1.20184 + }
1.20185 +
1.20186 + case 28:
1.20187 + afterdoctypesystemidentifierloop: for (;;) {
1.20188 + if (++pos == endPos) {
1.20189 + break stateloop;
1.20190 + }
1.20191 + c = $checkChar(this$static, buf, pos);
1.20192 + switch (c) {
1.20193 + case 13:
1.20194 + this$static.nextCharOnNewLine = true;
1.20195 + this$static.lastCR = true;
1.20196 + break stateloop;
1.20197 + case 10:
1.20198 + this$static.nextCharOnNewLine = true;
1.20199 + case 32:
1.20200 + case 9:
1.20201 + case 12:
1.20202 + continue;
1.20203 + case 62:
1.20204 + this$static.cstart = pos + 1;
1.20205 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20206 + state = 0;
1.20207 + continue stateloop;
1.20208 + default:this$static.forceQuirks = false;
1.20209 + state = 29;
1.20210 + break afterdoctypesystemidentifierloop;
1.20211 + }
1.20212 + }
1.20213 +
1.20214 + case 29:
1.20215 + for (;;) {
1.20216 + if (reconsume) {
1.20217 + reconsume = false;
1.20218 + }
1.20219 + else {
1.20220 + if (++pos == endPos) {
1.20221 + break stateloop;
1.20222 + }
1.20223 + c = $checkChar(this$static, buf, pos);
1.20224 + }
1.20225 + switch (c) {
1.20226 + case 62:
1.20227 + this$static.cstart = pos + 1;
1.20228 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20229 + state = 0;
1.20230 + continue stateloop;
1.20231 + case 13:
1.20232 + this$static.nextCharOnNewLine = true;
1.20233 + this$static.lastCR = true;
1.20234 + break stateloop;
1.20235 + case 10:
1.20236 + this$static.nextCharOnNewLine = true;
1.20237 + default:continue;
1.20238 + }
1.20239 + }
1.20240 +
1.20241 + case 41:
1.20242 + doctypeystemloop: for (;;) {
1.20243 + if (++pos == endPos) {
1.20244 + break stateloop;
1.20245 + }
1.20246 + c = $checkChar(this$static, buf, pos);
1.20247 + if (this$static.index < 5) {
1.20248 + folded = c;
1.20249 + if (c >= 65 && c <= 90) {
1.20250 + folded += 32;
1.20251 + }
1.20252 + if (folded != YSTEM[this$static.index]) {
1.20253 + this$static.forceQuirks = true;
1.20254 + state = 29;
1.20255 + reconsume = true;
1.20256 + continue stateloop;
1.20257 + }
1.20258 + ++this$static.index;
1.20259 + continue stateloop;
1.20260 + }
1.20261 + else {
1.20262 + state = 25;
1.20263 + reconsume = true;
1.20264 + break doctypeystemloop;
1.20265 + }
1.20266 + }
1.20267 +
1.20268 + case 25:
1.20269 + beforedoctypesystemidentifierloop: for (;;) {
1.20270 + if (reconsume) {
1.20271 + reconsume = false;
1.20272 + }
1.20273 + else {
1.20274 + if (++pos == endPos) {
1.20275 + break stateloop;
1.20276 + }
1.20277 + c = $checkChar(this$static, buf, pos);
1.20278 + }
1.20279 + switch (c) {
1.20280 + case 13:
1.20281 + this$static.nextCharOnNewLine = true;
1.20282 + this$static.lastCR = true;
1.20283 + break stateloop;
1.20284 + case 10:
1.20285 + this$static.nextCharOnNewLine = true;
1.20286 + case 32:
1.20287 + case 9:
1.20288 + case 12:
1.20289 + continue;
1.20290 + case 34:
1.20291 + this$static.longStrBufLen = 0;
1.20292 + state = 26;
1.20293 + continue stateloop;
1.20294 + case 39:
1.20295 + this$static.longStrBufLen = 0;
1.20296 + state = 27;
1.20297 + break beforedoctypesystemidentifierloop;
1.20298 + case 62:
1.20299 + this$static.forceQuirks = true;
1.20300 + this$static.cstart = pos + 1;
1.20301 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20302 + state = 0;
1.20303 + continue stateloop;
1.20304 + default:this$static.forceQuirks = true;
1.20305 + state = 29;
1.20306 + continue stateloop;
1.20307 + }
1.20308 + }
1.20309 +
1.20310 + case 27:
1.20311 + for (;;) {
1.20312 + if (++pos == endPos) {
1.20313 + break stateloop;
1.20314 + }
1.20315 + c = $checkChar(this$static, buf, pos);
1.20316 + switch (c) {
1.20317 + case 39:
1.20318 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20319 + state = 28;
1.20320 + continue stateloop;
1.20321 + case 62:
1.20322 + this$static.forceQuirks = true;
1.20323 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20324 + this$static.cstart = pos + 1;
1.20325 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20326 + state = 0;
1.20327 + continue stateloop;
1.20328 + case 13:
1.20329 + this$static.nextCharOnNewLine = true;
1.20330 + this$static.lastCR = true;
1.20331 + $appendLongStrBuf(this$static, 10);
1.20332 + break stateloop;
1.20333 + case 10:
1.20334 + this$static.nextCharOnNewLine = true;
1.20335 + $appendLongStrBuf(this$static, 10);
1.20336 + continue;
1.20337 + case 0:
1.20338 + c = 65533;
1.20339 + default:$appendLongStrBuf(this$static, c);
1.20340 + continue;
1.20341 + }
1.20342 + }
1.20343 +
1.20344 + case 23:
1.20345 + for (;;) {
1.20346 + if (++pos == endPos) {
1.20347 + break stateloop;
1.20348 + }
1.20349 + c = $checkChar(this$static, buf, pos);
1.20350 + switch (c) {
1.20351 + case 39:
1.20352 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20353 + state = 24;
1.20354 + continue stateloop;
1.20355 + case 62:
1.20356 + this$static.forceQuirks = true;
1.20357 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
1.20358 + this$static.cstart = pos + 1;
1.20359 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
1.20360 + state = 0;
1.20361 + continue stateloop;
1.20362 + case 13:
1.20363 + this$static.nextCharOnNewLine = true;
1.20364 + this$static.lastCR = true;
1.20365 + $appendLongStrBuf(this$static, 10);
1.20366 + break stateloop;
1.20367 + case 10:
1.20368 + this$static.nextCharOnNewLine = true;
1.20369 + $appendLongStrBuf(this$static, 10);
1.20370 + continue;
1.20371 + case 0:
1.20372 + c = 65533;
1.20373 + default:$appendLongStrBuf(this$static, c);
1.20374 + continue;
1.20375 + }
1.20376 + }
1.20377 +
1.20378 + case 49:
1.20379 + for (;;) {
1.20380 + if (++pos == endPos) {
1.20381 + break stateloop;
1.20382 + }
1.20383 + c = $checkChar(this$static, buf, pos);
1.20384 + if (this$static.index < 6) {
1.20385 + if (c == CDATA_LSQB[this$static.index]) {
1.20386 + $appendLongStrBuf(this$static, c);
1.20387 + }
1.20388 + else {
1.20389 + state = 15;
1.20390 + reconsume = true;
1.20391 + continue stateloop;
1.20392 + }
1.20393 + ++this$static.index;
1.20394 + continue;
1.20395 + }
1.20396 + else {
1.20397 + this$static.cstart = pos;
1.20398 + state = 50;
1.20399 + reconsume = true;
1.20400 + break;
1.20401 + }
1.20402 + }
1.20403 +
1.20404 + case 50:
1.20405 + cdatasectionloop: for (;;) {
1.20406 + if (reconsume) {
1.20407 + reconsume = false;
1.20408 + }
1.20409 + else {
1.20410 + if (++pos == endPos) {
1.20411 + break stateloop;
1.20412 + }
1.20413 + c = $checkChar(this$static, buf, pos);
1.20414 + }
1.20415 + switch (c) {
1.20416 + case 93:
1.20417 + $flushChars(this$static, buf, pos);
1.20418 + state = 51;
1.20419 + break cdatasectionloop;
1.20420 + case 0:
1.20421 + $emitReplacementCharacter(this$static, buf, pos);
1.20422 + continue;
1.20423 + case 13:
1.20424 + $emitCarriageReturn(this$static, buf, pos);
1.20425 + break stateloop;
1.20426 + case 10:
1.20427 + this$static.nextCharOnNewLine = true;
1.20428 + default:continue;
1.20429 + }
1.20430 + }
1.20431 +
1.20432 + case 51:
1.20433 + cdatarsqb: for (;;) {
1.20434 + if (++pos == endPos) {
1.20435 + break stateloop;
1.20436 + }
1.20437 + c = $checkChar(this$static, buf, pos);
1.20438 + switch (c) {
1.20439 + case 93:
1.20440 + state = 52;
1.20441 + break cdatarsqb;
1.20442 + default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 1);
1.20443 + this$static.cstart = pos;
1.20444 + state = 50;
1.20445 + reconsume = true;
1.20446 + continue stateloop;
1.20447 + }
1.20448 + }
1.20449 +
1.20450 + case 52:
1.20451 + if (++pos == endPos) {
1.20452 + break stateloop;
1.20453 + }
1.20454 +
1.20455 + c = $checkChar(this$static, buf, pos);
1.20456 + switch (c) {
1.20457 + case 62:
1.20458 + this$static.cstart = pos + 1;
1.20459 + state = 0;
1.20460 + continue stateloop;
1.20461 + default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 2);
1.20462 + this$static.cstart = pos;
1.20463 + state = 50;
1.20464 + reconsume = true;
1.20465 + continue stateloop;
1.20466 + }
1.20467 +
1.20468 + case 12:
1.20469 + attributevaluesinglequotedloop: for (;;) {
1.20470 + if (reconsume) {
1.20471 + reconsume = false;
1.20472 + }
1.20473 + else {
1.20474 + if (++pos == endPos) {
1.20475 + break stateloop;
1.20476 + }
1.20477 + c = $checkChar(this$static, buf, pos);
1.20478 + }
1.20479 + switch (c) {
1.20480 + case 39:
1.20481 + $addAttributeWithValue(this$static);
1.20482 + state = 14;
1.20483 + continue stateloop;
1.20484 + case 38:
1.20485 + this$static.strBuf[0] = c;
1.20486 + this$static.strBufLen = 1;
1.20487 + this$static.additional = 39;
1.20488 + $LocatorImpl(new LocatorImpl(), this$static);
1.20489 + returnState = state;
1.20490 + state = 42;
1.20491 + break attributevaluesinglequotedloop;
1.20492 + case 13:
1.20493 + this$static.nextCharOnNewLine = true;
1.20494 + this$static.lastCR = true;
1.20495 + $appendLongStrBuf(this$static, 10);
1.20496 + break stateloop;
1.20497 + case 10:
1.20498 + this$static.nextCharOnNewLine = true;
1.20499 + $appendLongStrBuf(this$static, 10);
1.20500 + continue;
1.20501 + case 0:
1.20502 + c = 65533;
1.20503 + default:$appendLongStrBuf(this$static, c);
1.20504 + continue;
1.20505 + }
1.20506 + }
1.20507 +
1.20508 + case 42:
1.20509 + if (++pos == endPos) {
1.20510 + break stateloop;
1.20511 + }
1.20512 +
1.20513 + c = $checkChar(this$static, buf, pos);
1.20514 + if (c == 0) {
1.20515 + break stateloop;
1.20516 + }
1.20517 +
1.20518 + switch (c) {
1.20519 + case 32:
1.20520 + case 9:
1.20521 + case 10:
1.20522 + case 13:
1.20523 + case 12:
1.20524 + case 60:
1.20525 + case 38:
1.20526 + $emitOrAppendStrBuf(this$static, returnState);
1.20527 + if ((returnState & -2) == 0) {
1.20528 + this$static.cstart = pos;
1.20529 + }
1.20530 +
1.20531 + state = returnState;
1.20532 + reconsume = true;
1.20533 + continue stateloop;
1.20534 + case 35:
1.20535 + $appendStrBuf(this$static, 35);
1.20536 + state = 43;
1.20537 + continue stateloop;
1.20538 + default:if (c == this$static.additional) {
1.20539 + $emitOrAppendStrBuf(this$static, returnState);
1.20540 + state = returnState;
1.20541 + reconsume = true;
1.20542 + continue stateloop;
1.20543 + }
1.20544 +
1.20545 + this$static.entCol = -1;
1.20546 + this$static.lo = 0;
1.20547 + this$static.hi = ($clinit_94() , NAMES).length - 1;
1.20548 + this$static.candidate = -1;
1.20549 + this$static.strBufMark = 0;
1.20550 + state = 44;
1.20551 + reconsume = true;
1.20552 + }
1.20553 +
1.20554 + case 44:
1.20555 + outer: for (;;) {
1.20556 + if (reconsume) {
1.20557 + reconsume = false;
1.20558 + }
1.20559 + else {
1.20560 + if (++pos == endPos) {
1.20561 + break stateloop;
1.20562 + }
1.20563 + c = $checkChar(this$static, buf, pos);
1.20564 + }
1.20565 + if (c == 0) {
1.20566 + break stateloop;
1.20567 + }
1.20568 + ++this$static.entCol;
1.20569 + hiloop: for (;;) {
1.20570 + if (this$static.hi == -1) {
1.20571 + break hiloop;
1.20572 + }
1.20573 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
1.20574 + break hiloop;
1.20575 + }
1.20576 + if (this$static.entCol > NAMES[this$static.hi].length) {
1.20577 + break outer;
1.20578 + }
1.20579 + else if (c < NAMES[this$static.hi][this$static.entCol]) {
1.20580 + --this$static.hi;
1.20581 + }
1.20582 + else {
1.20583 + break hiloop;
1.20584 + }
1.20585 + }
1.20586 + loloop: for (;;) {
1.20587 + if (this$static.hi < this$static.lo) {
1.20588 + break outer;
1.20589 + }
1.20590 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
1.20591 + this$static.candidate = this$static.lo;
1.20592 + this$static.strBufMark = this$static.strBufLen;
1.20593 + ++this$static.lo;
1.20594 + }
1.20595 + else if (this$static.entCol > NAMES[this$static.lo].length) {
1.20596 + break outer;
1.20597 + }
1.20598 + else if (c > NAMES[this$static.lo][this$static.entCol]) {
1.20599 + ++this$static.lo;
1.20600 + }
1.20601 + else {
1.20602 + break loloop;
1.20603 + }
1.20604 + }
1.20605 + if (this$static.hi < this$static.lo) {
1.20606 + break outer;
1.20607 + }
1.20608 + $appendStrBuf(this$static, c);
1.20609 + continue;
1.20610 + }
1.20611 +
1.20612 + if (this$static.candidate == -1) {
1.20613 + $emitOrAppendStrBuf(this$static, returnState);
1.20614 + if ((returnState & -2) == 0) {
1.20615 + this$static.cstart = pos;
1.20616 + }
1.20617 + state = returnState;
1.20618 + reconsume = true;
1.20619 + continue stateloop;
1.20620 + }
1.20621 + else {
1.20622 + candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
1.20623 + if (candidateArr[candidateArr.length - 1] != 59) {
1.20624 + if ((returnState & -2) != 0) {
1.20625 + if (this$static.strBufMark == this$static.strBufLen) {
1.20626 + ch = c;
1.20627 + }
1.20628 + else {
1.20629 + ch = this$static.strBuf[this$static.strBufMark];
1.20630 + }
1.20631 + if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
1.20632 + $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
1.20633 + state = returnState;
1.20634 + reconsume = true;
1.20635 + continue stateloop;
1.20636 + }
1.20637 + }
1.20638 + }
1.20639 + val = VALUES_0[this$static.candidate];
1.20640 + $emitOrAppend(this$static, val, returnState);
1.20641 + if (this$static.strBufMark < this$static.strBufLen) {
1.20642 + if ((returnState & -2) != 0) {
1.20643 + for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
1.20644 + $appendLongStrBuf(this$static, this$static.strBuf[i]);
1.20645 + }
1.20646 + }
1.20647 + else {
1.20648 + $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
1.20649 + }
1.20650 + }
1.20651 + if ((returnState & -2) == 0) {
1.20652 + this$static.cstart = pos;
1.20653 + }
1.20654 + state = returnState;
1.20655 + reconsume = true;
1.20656 + continue stateloop;
1.20657 + }
1.20658 +
1.20659 + case 43:
1.20660 + if (++pos == endPos) {
1.20661 + break stateloop;
1.20662 + }
1.20663 +
1.20664 + c = $checkChar(this$static, buf, pos);
1.20665 + this$static.prevValue = -1;
1.20666 + this$static.value = 0;
1.20667 + this$static.seenDigits = false;
1.20668 + switch (c) {
1.20669 + case 120:
1.20670 + case 88:
1.20671 + $appendStrBuf(this$static, c);
1.20672 + state = 45;
1.20673 + continue stateloop;
1.20674 + default:state = 46;
1.20675 + reconsume = true;
1.20676 + }
1.20677 +
1.20678 + case 46:
1.20679 + decimalloop: for (;;) {
1.20680 + if (reconsume) {
1.20681 + reconsume = false;
1.20682 + }
1.20683 + else {
1.20684 + if (++pos == endPos) {
1.20685 + break stateloop;
1.20686 + }
1.20687 + c = $checkChar(this$static, buf, pos);
1.20688 + }
1.20689 + if (this$static.value < this$static.prevValue) {
1.20690 + this$static.value = 1114112;
1.20691 + }
1.20692 + this$static.prevValue = this$static.value;
1.20693 + if (c >= 48 && c <= 57) {
1.20694 + this$static.seenDigits = true;
1.20695 + this$static.value *= 10;
1.20696 + this$static.value += c - 48;
1.20697 + continue;
1.20698 + }
1.20699 + else if (c == 59) {
1.20700 + if (this$static.seenDigits) {
1.20701 + if ((returnState & -2) == 0) {
1.20702 + this$static.cstart = pos + 1;
1.20703 + }
1.20704 + state = 47;
1.20705 + break decimalloop;
1.20706 + }
1.20707 + else {
1.20708 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
1.20709 + $appendStrBuf(this$static, 59);
1.20710 + $emitOrAppendStrBuf(this$static, returnState);
1.20711 + if ((returnState & -2) == 0) {
1.20712 + this$static.cstart = pos + 1;
1.20713 + }
1.20714 + state = returnState;
1.20715 + continue stateloop;
1.20716 + }
1.20717 + }
1.20718 + else {
1.20719 + if (this$static.seenDigits) {
1.20720 + if ((returnState & -2) == 0) {
1.20721 + this$static.cstart = pos;
1.20722 + }
1.20723 + state = 47;
1.20724 + reconsume = true;
1.20725 + break decimalloop;
1.20726 + }
1.20727 + else {
1.20728 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
1.20729 + $emitOrAppendStrBuf(this$static, returnState);
1.20730 + if ((returnState & -2) == 0) {
1.20731 + this$static.cstart = pos;
1.20732 + }
1.20733 + state = returnState;
1.20734 + reconsume = true;
1.20735 + continue stateloop;
1.20736 + }
1.20737 + }
1.20738 + }
1.20739 +
1.20740 + case 47:
1.20741 + $handleNcrValue(this$static, returnState);
1.20742 + state = returnState;
1.20743 + continue stateloop;
1.20744 + case 45:
1.20745 + for (;;) {
1.20746 + if (++pos == endPos) {
1.20747 + break stateloop;
1.20748 + }
1.20749 + c = $checkChar(this$static, buf, pos);
1.20750 + if (this$static.value < this$static.prevValue) {
1.20751 + this$static.value = 1114112;
1.20752 + }
1.20753 + this$static.prevValue = this$static.value;
1.20754 + if (c >= 48 && c <= 57) {
1.20755 + this$static.seenDigits = true;
1.20756 + this$static.value *= 16;
1.20757 + this$static.value += c - 48;
1.20758 + continue;
1.20759 + }
1.20760 + else if (c >= 65 && c <= 70) {
1.20761 + this$static.seenDigits = true;
1.20762 + this$static.value *= 16;
1.20763 + this$static.value += c - 65 + 10;
1.20764 + continue;
1.20765 + }
1.20766 + else if (c >= 97 && c <= 102) {
1.20767 + this$static.seenDigits = true;
1.20768 + this$static.value *= 16;
1.20769 + this$static.value += c - 97 + 10;
1.20770 + continue;
1.20771 + }
1.20772 + else if (c == 59) {
1.20773 + if (this$static.seenDigits) {
1.20774 + if ((returnState & -2) == 0) {
1.20775 + this$static.cstart = pos + 1;
1.20776 + }
1.20777 + state = 47;
1.20778 + continue stateloop;
1.20779 + }
1.20780 + else {
1.20781 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
1.20782 + $appendStrBuf(this$static, 59);
1.20783 + $emitOrAppendStrBuf(this$static, returnState);
1.20784 + if ((returnState & -2) == 0) {
1.20785 + this$static.cstart = pos + 1;
1.20786 + }
1.20787 + state = returnState;
1.20788 + continue stateloop;
1.20789 + }
1.20790 + }
1.20791 + else {
1.20792 + if (this$static.seenDigits) {
1.20793 + if ((returnState & -2) == 0) {
1.20794 + this$static.cstart = pos;
1.20795 + }
1.20796 + state = 47;
1.20797 + reconsume = true;
1.20798 + continue stateloop;
1.20799 + }
1.20800 + else {
1.20801 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
1.20802 + $emitOrAppendStrBuf(this$static, returnState);
1.20803 + if ((returnState & -2) == 0) {
1.20804 + this$static.cstart = pos;
1.20805 + }
1.20806 + state = returnState;
1.20807 + reconsume = true;
1.20808 + continue stateloop;
1.20809 + }
1.20810 + }
1.20811 + }
1.20812 +
1.20813 + case 3:
1.20814 + plaintextloop: for (;;) {
1.20815 + if (reconsume) {
1.20816 + reconsume = false;
1.20817 + }
1.20818 + else {
1.20819 + if (++pos == endPos) {
1.20820 + break stateloop;
1.20821 + }
1.20822 + c = $checkChar(this$static, buf, pos);
1.20823 + }
1.20824 + switch (c) {
1.20825 + case 0:
1.20826 + $emitReplacementCharacter(this$static, buf, pos);
1.20827 + continue;
1.20828 + case 13:
1.20829 + $emitCarriageReturn(this$static, buf, pos);
1.20830 + break stateloop;
1.20831 + case 10:
1.20832 + this$static.nextCharOnNewLine = true;
1.20833 + default:continue;
1.20834 + }
1.20835 + }
1.20836 +
1.20837 + case 2:
1.20838 + cdataloop: for (;;) {
1.20839 + if (reconsume) {
1.20840 + reconsume = false;
1.20841 + }
1.20842 + else {
1.20843 + if (++pos == endPos) {
1.20844 + break stateloop;
1.20845 + }
1.20846 + c = $checkChar(this$static, buf, pos);
1.20847 + }
1.20848 + switch (c) {
1.20849 + case 60:
1.20850 + $flushChars(this$static, buf, pos);
1.20851 + returnState = state;
1.20852 + state = 53;
1.20853 + break cdataloop;
1.20854 + case 0:
1.20855 + $emitReplacementCharacter(this$static, buf, pos);
1.20856 + continue;
1.20857 + case 13:
1.20858 + $emitCarriageReturn(this$static, buf, pos);
1.20859 + break stateloop;
1.20860 + case 10:
1.20861 + this$static.nextCharOnNewLine = true;
1.20862 + default:continue;
1.20863 + }
1.20864 + }
1.20865 +
1.20866 + case 53:
1.20867 + tagopennonpcdataloop: for (;;) {
1.20868 + if (++pos == endPos) {
1.20869 + break stateloop;
1.20870 + }
1.20871 + c = $checkChar(this$static, buf, pos);
1.20872 + switch (c) {
1.20873 + case 33:
1.20874 + $characters(this$static.tokenHandler, LT_GT, 0, 1);
1.20875 + this$static.cstart = pos;
1.20876 + state = 54;
1.20877 + break tagopennonpcdataloop;
1.20878 + case 47:
1.20879 + if (this$static.contentModelElement) {
1.20880 + this$static.index = 0;
1.20881 + this$static.strBufLen = 0;
1.20882 + state = 37;
1.20883 + continue stateloop;
1.20884 + }
1.20885 +
1.20886 + default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
1.20887 + this$static.cstart = pos;
1.20888 + state = returnState;
1.20889 + reconsume = true;
1.20890 + continue stateloop;
1.20891 + }
1.20892 + }
1.20893 +
1.20894 + case 54:
1.20895 + escapeexclamationloop: for (;;) {
1.20896 + if (++pos == endPos) {
1.20897 + break stateloop;
1.20898 + }
1.20899 + c = $checkChar(this$static, buf, pos);
1.20900 + switch (c) {
1.20901 + case 45:
1.20902 + state = 55;
1.20903 + break escapeexclamationloop;
1.20904 + default:state = returnState;
1.20905 + reconsume = true;
1.20906 + continue stateloop;
1.20907 + }
1.20908 + }
1.20909 +
1.20910 + case 55:
1.20911 + escapeexclamationhyphenloop: for (;;) {
1.20912 + if (++pos == endPos) {
1.20913 + break stateloop;
1.20914 + }
1.20915 + c = $checkChar(this$static, buf, pos);
1.20916 + switch (c) {
1.20917 + case 45:
1.20918 + state = 58;
1.20919 + break escapeexclamationhyphenloop;
1.20920 + default:state = returnState;
1.20921 + reconsume = true;
1.20922 + continue stateloop;
1.20923 + }
1.20924 + }
1.20925 +
1.20926 + case 58:
1.20927 + escapehyphenhyphenloop: for (;;) {
1.20928 + if (++pos == endPos) {
1.20929 + break stateloop;
1.20930 + }
1.20931 + c = $checkChar(this$static, buf, pos);
1.20932 + switch (c) {
1.20933 + case 45:
1.20934 + continue;
1.20935 + case 62:
1.20936 + state = returnState;
1.20937 + continue stateloop;
1.20938 + case 0:
1.20939 + $emitReplacementCharacter(this$static, buf, pos);
1.20940 + state = 56;
1.20941 + break escapehyphenhyphenloop;
1.20942 + case 13:
1.20943 + $emitCarriageReturn(this$static, buf, pos);
1.20944 + state = 56;
1.20945 + break stateloop;
1.20946 + case 10:
1.20947 + this$static.nextCharOnNewLine = true;
1.20948 + default:state = 56;
1.20949 + break escapehyphenhyphenloop;
1.20950 + }
1.20951 + }
1.20952 +
1.20953 + case 56:
1.20954 + escapeloop: for (;;) {
1.20955 + if (++pos == endPos) {
1.20956 + break stateloop;
1.20957 + }
1.20958 + c = $checkChar(this$static, buf, pos);
1.20959 + switch (c) {
1.20960 + case 45:
1.20961 + state = 57;
1.20962 + break escapeloop;
1.20963 + case 0:
1.20964 + $emitReplacementCharacter(this$static, buf, pos);
1.20965 + continue;
1.20966 + case 13:
1.20967 + $emitCarriageReturn(this$static, buf, pos);
1.20968 + break stateloop;
1.20969 + case 10:
1.20970 + this$static.nextCharOnNewLine = true;
1.20971 + default:continue;
1.20972 + }
1.20973 + }
1.20974 +
1.20975 + case 57:
1.20976 + escapehyphenloop: for (;;) {
1.20977 + if (++pos == endPos) {
1.20978 + break stateloop;
1.20979 + }
1.20980 + c = $checkChar(this$static, buf, pos);
1.20981 + switch (c) {
1.20982 + case 45:
1.20983 + state = 58;
1.20984 + continue stateloop;
1.20985 + case 0:
1.20986 + $emitReplacementCharacter(this$static, buf, pos);
1.20987 + state = 56;
1.20988 + continue stateloop;
1.20989 + case 13:
1.20990 + $emitCarriageReturn(this$static, buf, pos);
1.20991 + state = 56;
1.20992 + continue stateloop;
1.20993 + case 10:
1.20994 + this$static.nextCharOnNewLine = true;
1.20995 + default:state = 56;
1.20996 + continue stateloop;
1.20997 + }
1.20998 + }
1.20999 +
1.21000 + case 37:
1.21001 + for (;;) {
1.21002 + if (++pos == endPos) {
1.21003 + break stateloop;
1.21004 + }
1.21005 + c = $checkChar(this$static, buf, pos);
1.21006 + if (this$static.index < this$static.contentModelElementNameAsArray.length) {
1.21007 + e = this$static.contentModelElementNameAsArray[this$static.index];
1.21008 + folded = c;
1.21009 + if (c >= 65 && c <= 90) {
1.21010 + folded += 32;
1.21011 + }
1.21012 + if (folded != e) {
1.21013 + this$static.html4 && (this$static.index > 0 || folded >= 97 && folded <= 122) && ($clinit_89() , IFRAME) != this$static.contentModelElement;
1.21014 + $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
1.21015 + $emitStrBuf(this$static);
1.21016 + this$static.cstart = pos;
1.21017 + state = returnState;
1.21018 + reconsume = true;
1.21019 + continue stateloop;
1.21020 + }
1.21021 + $appendStrBuf(this$static, c);
1.21022 + ++this$static.index;
1.21023 + continue;
1.21024 + }
1.21025 + else {
1.21026 + this$static.endTag = true;
1.21027 + this$static.tagName = this$static.contentModelElement;
1.21028 + switch (c) {
1.21029 + case 13:
1.21030 + this$static.nextCharOnNewLine = true;
1.21031 + this$static.lastCR = true;
1.21032 + state = 7;
1.21033 + break stateloop;
1.21034 + case 10:
1.21035 + this$static.nextCharOnNewLine = true;
1.21036 + case 32:
1.21037 + case 9:
1.21038 + case 12:
1.21039 + state = 7;
1.21040 + continue stateloop;
1.21041 + case 62:
1.21042 + state = $emitCurrentTagToken(this$static, false, pos);
1.21043 + if (this$static.shouldSuspend) {
1.21044 + break stateloop;
1.21045 + }
1.21046 +
1.21047 + continue stateloop;
1.21048 + case 47:
1.21049 + state = 48;
1.21050 + continue stateloop;
1.21051 + default:$characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
1.21052 + $emitStrBuf(this$static);
1.21053 + if (c == 0) {
1.21054 + $emitReplacementCharacter(this$static, buf, pos);
1.21055 + }
1.21056 + else {
1.21057 + this$static.cstart = pos;
1.21058 + }
1.21059 +
1.21060 + state = returnState;
1.21061 + continue stateloop;
1.21062 + }
1.21063 + }
1.21064 + }
1.21065 +
1.21066 + case 5:
1.21067 + if (++pos == endPos) {
1.21068 + break stateloop;
1.21069 + }
1.21070 +
1.21071 + c = $checkChar(this$static, buf, pos);
1.21072 + switch (c) {
1.21073 + case 62:
1.21074 + this$static.cstart = pos + 1;
1.21075 + state = 0;
1.21076 + continue stateloop;
1.21077 + case 13:
1.21078 + this$static.nextCharOnNewLine = true;
1.21079 + this$static.lastCR = true;
1.21080 + this$static.longStrBuf[0] = 10;
1.21081 + this$static.longStrBufLen = 1;
1.21082 + state = 15;
1.21083 + break stateloop;
1.21084 + case 10:
1.21085 + this$static.nextCharOnNewLine = true;
1.21086 + this$static.longStrBuf[0] = 10;
1.21087 + this$static.longStrBufLen = 1;
1.21088 + state = 15;
1.21089 + continue stateloop;
1.21090 + case 0:
1.21091 + c = 65533;
1.21092 + default:if (c >= 65 && c <= 90) {
1.21093 + c += 32;
1.21094 + }
1.21095 +
1.21096 + if (c >= 97 && c <= 122) {
1.21097 + this$static.endTag = true;
1.21098 + this$static.strBuf[0] = c;
1.21099 + this$static.strBufLen = 1;
1.21100 + state = 6;
1.21101 + continue stateloop;
1.21102 + }
1.21103 + else {
1.21104 + this$static.longStrBuf[0] = c;
1.21105 + this$static.longStrBufLen = 1;
1.21106 + state = 15;
1.21107 + continue stateloop;
1.21108 + }
1.21109 +
1.21110 + }
1.21111 +
1.21112 + case 1:
1.21113 + rcdataloop: for (;;) {
1.21114 + if (reconsume) {
1.21115 + reconsume = false;
1.21116 + }
1.21117 + else {
1.21118 + if (++pos == endPos) {
1.21119 + break stateloop;
1.21120 + }
1.21121 + c = $checkChar(this$static, buf, pos);
1.21122 + }
1.21123 + switch (c) {
1.21124 + case 38:
1.21125 + $flushChars(this$static, buf, pos);
1.21126 + this$static.strBuf[0] = c;
1.21127 + this$static.strBufLen = 1;
1.21128 + this$static.additional = 0;
1.21129 + returnState = state;
1.21130 + state = 42;
1.21131 + continue stateloop;
1.21132 + case 60:
1.21133 + $flushChars(this$static, buf, pos);
1.21134 + returnState = state;
1.21135 + state = 53;
1.21136 + continue stateloop;
1.21137 + case 0:
1.21138 + $emitReplacementCharacter(this$static, buf, pos);
1.21139 + continue;
1.21140 + case 13:
1.21141 + $emitCarriageReturn(this$static, buf, pos);
1.21142 + break stateloop;
1.21143 + case 10:
1.21144 + this$static.nextCharOnNewLine = true;
1.21145 + default:continue;
1.21146 + }
1.21147 + }
1.21148 +
1.21149 + }
1.21150 + }
1.21151 + $flushChars(this$static, buf, pos);
1.21152 + this$static.stateSave = state;
1.21153 + this$static.returnStateSave = returnState;
1.21154 + return pos;
1.21155 +}
1.21156 +
1.21157 +function $tokenizeBuffer(this$static, buffer){
1.21158 + var pos, returnState, start, state;
1.21159 + state = this$static.stateSave;
1.21160 + returnState = this$static.returnStateSave;
1.21161 + this$static.shouldSuspend = false;
1.21162 + this$static.lastCR = false;
1.21163 + start = buffer.start;
1.21164 + pos = start - 1;
1.21165 + switch (state) {
1.21166 + case 0:
1.21167 + case 1:
1.21168 + case 2:
1.21169 + case 3:
1.21170 + case 50:
1.21171 + case 56:
1.21172 + case 54:
1.21173 + case 55:
1.21174 + case 57:
1.21175 + case 58:
1.21176 + this$static.cstart = start;
1.21177 + break;
1.21178 + default:this$static.cstart = 2147483647;
1.21179 + }
1.21180 + pos = $stateLoop(this$static, state, 0, pos, buffer.buffer, false, returnState, buffer.end);
1.21181 + if (pos == buffer.end) {
1.21182 + buffer.start = pos;
1.21183 + }
1.21184 + else {
1.21185 + buffer.start = pos + 1;
1.21186 + }
1.21187 + return this$static.lastCR;
1.21188 +}
1.21189 +
1.21190 +function getClass_56(){
1.21191 + return Lnu_validator_htmlparser_impl_Tokenizer_2_classLit;
1.21192 +}
1.21193 +
1.21194 +function newAsciiLowerCaseStringFromString(str){
1.21195 + var buf, c, i;
1.21196 + if (str == null) {
1.21197 + return null;
1.21198 + }
1.21199 + buf = initDim(_3C_classLit, 42, -1, str.length, 1);
1.21200 + for (i = 0; i < str.length; ++i) {
1.21201 + c = str.charCodeAt(i);
1.21202 + if (c >= 65 && c <= 90) {
1.21203 + c += 32;
1.21204 + }
1.21205 + buf[i] = c;
1.21206 + }
1.21207 + return String.fromCharCode.apply(null, buf);
1.21208 +}
1.21209 +
1.21210 +function Tokenizer(){
1.21211 +}
1.21212 +
1.21213 +_ = Tokenizer.prototype = new Object_0();
1.21214 +_.getClass$ = getClass_56;
1.21215 +_.typeId$ = 0;
1.21216 +_.additional = 0;
1.21217 +_.astralChar = null;
1.21218 +_.attributeName = null;
1.21219 +_.attributes = null;
1.21220 +_.bmpChar = null;
1.21221 +_.candidate = 0;
1.21222 +_.confident = false;
1.21223 +_.contentModelElement = null;
1.21224 +_.contentModelElementNameAsArray = null;
1.21225 +_.cstart = 0;
1.21226 +_.doctypeName = null;
1.21227 +_.endTag = false;
1.21228 +_.entCol = 0;
1.21229 +_.forceQuirks = false;
1.21230 +_.hi = 0;
1.21231 +_.html4 = false;
1.21232 +_.html4ModeCompatibleWithXhtml1Schemata = false;
1.21233 +_.index = 0;
1.21234 +_.lastCR = false;
1.21235 +_.lo = 0;
1.21236 +_.longStrBuf = null;
1.21237 +_.longStrBufLen = 0;
1.21238 +_.mappingLangToXmlLang = 0;
1.21239 +_.metaBoundaryPassed = false;
1.21240 +_.newAttributesEachTime = false;
1.21241 +_.prevValue = 0;
1.21242 +_.publicIdentifier = null;
1.21243 +_.returnStateSave = 0;
1.21244 +_.seenDigits = false;
1.21245 +_.shouldSuspend = false;
1.21246 +_.stateSave = 0;
1.21247 +_.strBuf = null;
1.21248 +_.strBufLen = 0;
1.21249 +_.strBufMark = 0;
1.21250 +_.systemIdentifier = null;
1.21251 +_.tagName = null;
1.21252 +_.tokenHandler = null;
1.21253 +_.value = 0;
1.21254 +_.wantsComments = false;
1.21255 +var CDATA_LSQB, IFRAME_ARR, LF, LT_GT, LT_SOLIDUS, NOEMBED_ARR, NOFRAMES_ARR, NOSCRIPT_ARR, OCTYPE, PLAINTEXT_ARR, REPLACEMENT_CHARACTER, RSQB_RSQB, SCRIPT_ARR, SPACE, STYLE_ARR, TEXTAREA_ARR, TITLE_ARR, UBLIC, XMP_ARR, YSTEM;
1.21256 +function $clinit_90(){
1.21257 + $clinit_90 = nullMethod;
1.21258 + $clinit_97();
1.21259 +}
1.21260 +
1.21261 +function $ErrorReportingTokenizer(this$static, tokenHandler){
1.21262 + $clinit_90();
1.21263 + this$static.contentSpacePolicy = ($clinit_80() , ALTER_INFOSET);
1.21264 + this$static.commentPolicy = ALTER_INFOSET;
1.21265 + this$static.xmlnsPolicy = ALTER_INFOSET;
1.21266 + this$static.namePolicy = ALTER_INFOSET;
1.21267 + this$static.tokenHandler = tokenHandler;
1.21268 + this$static.newAttributesEachTime = false;
1.21269 + this$static.bmpChar = initDim(_3C_classLit, 42, -1, 1, 1);
1.21270 + this$static.astralChar = initDim(_3C_classLit, 42, -1, 2, 1);
1.21271 + this$static.contentNonXmlCharPolicy = ALTER_INFOSET;
1.21272 + return this$static;
1.21273 +}
1.21274 +
1.21275 +function $checkChar(this$static, buf, pos){
1.21276 + var c, intVal;
1.21277 + this$static.linePrev = this$static.line;
1.21278 + this$static.colPrev = this$static.col;
1.21279 + if (this$static.nextCharOnNewLine) {
1.21280 + ++this$static.line;
1.21281 + this$static.col = 1;
1.21282 + this$static.nextCharOnNewLine = false;
1.21283 + }
1.21284 + else {
1.21285 + ++this$static.col;
1.21286 + }
1.21287 + c = buf[pos];
1.21288 + if (!this$static.confident && !this$static.alreadyComplainedAboutNonAscii && c > 127) {
1.21289 + this$static.alreadyComplainedAboutNonAscii = true;
1.21290 + }
1.21291 + switch (c) {
1.21292 + case 0:
1.21293 + case 9:
1.21294 + case 13:
1.21295 + case 10:
1.21296 + break;
1.21297 + case 12:
1.21298 + if (this$static.contentNonXmlCharPolicy == ($clinit_80() , FATAL)) {
1.21299 + $fatal(this$static, 'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.');
1.21300 + }
1.21301 + else {
1.21302 + if (this$static.contentNonXmlCharPolicy == ALTER_INFOSET) {
1.21303 + c = buf[pos] = 32;
1.21304 + }
1.21305 + 'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.';
1.21306 + }
1.21307 +
1.21308 + break;
1.21309 + default:if ((c & 64512) == 56320) {
1.21310 + if ((this$static.prev & 64512) == 55296) {
1.21311 + intVal = (this$static.prev << 10) + c + -56613888;
1.21312 + if (intVal >= 983040 && intVal <= 1048573 || intVal >= 1048576 && intVal <= 1114109) {
1.21313 + $warnAboutPrivateUseChar(this$static);
1.21314 + }
1.21315 + }
1.21316 + }
1.21317 + else if (c < 32 || (c & 65534) == 65534) {
1.21318 + switch (this$static.contentNonXmlCharPolicy.ordinal) {
1.21319 + case 1:
1.21320 + $fatal(this$static, 'Forbidden code point ' + $toUPlusString(c) + '.');
1.21321 + break;
1.21322 + case 2:
1.21323 + c = buf[pos] = 65533;
1.21324 + case 0:
1.21325 + 'Forbidden code point ' + $toUPlusString(c) + '.';
1.21326 + }
1.21327 + }
1.21328 + else if (c >= 127 && c <= 159 || c >= 64976 && c <= 64991) {
1.21329 + 'Forbidden code point ' + $toUPlusString(c) + '.';
1.21330 + }
1.21331 + else if (c >= 57344 && c <= 63743) {
1.21332 + $warnAboutPrivateUseChar(this$static);
1.21333 + }
1.21334 +
1.21335 + }
1.21336 + this$static.prev = c;
1.21337 + return c;
1.21338 +}
1.21339 +
1.21340 +function $errLtOrEqualsInUnquotedAttributeOrNull(c){
1.21341 + switch (c) {
1.21342 + case 61:
1.21343 + return;
1.21344 + case 60:
1.21345 + return;
1.21346 + }
1.21347 +}
1.21348 +
1.21349 +function $flushChars(this$static, buf, pos){
1.21350 + var currCol, currLine;
1.21351 + if (pos > this$static.cstart) {
1.21352 + currLine = this$static.line;
1.21353 + currCol = this$static.col;
1.21354 + this$static.line = this$static.linePrev;
1.21355 + this$static.col = this$static.colPrev;
1.21356 + $characters(this$static.tokenHandler, buf, this$static.cstart, pos - this$static.cstart);
1.21357 + this$static.line = currLine;
1.21358 + this$static.col = currCol;
1.21359 + }
1.21360 + this$static.cstart = 2147483647;
1.21361 +}
1.21362 +
1.21363 +function $getColumnNumber(this$static){
1.21364 + if (this$static.col > 0) {
1.21365 + return this$static.col;
1.21366 + }
1.21367 + else {
1.21368 + return -1;
1.21369 + }
1.21370 +}
1.21371 +
1.21372 +function $getLineNumber(this$static){
1.21373 + if (this$static.line > 0) {
1.21374 + return this$static.line;
1.21375 + }
1.21376 + else {
1.21377 + return -1;
1.21378 + }
1.21379 +}
1.21380 +
1.21381 +function $toUPlusString(c){
1.21382 + var hexString;
1.21383 + hexString = toPowerOfTwoString(c, 4);
1.21384 + switch (hexString.length) {
1.21385 + case 1:
1.21386 + return 'U+000' + hexString;
1.21387 + case 2:
1.21388 + return 'U+00' + hexString;
1.21389 + case 3:
1.21390 + return 'U+0' + hexString;
1.21391 + case 4:
1.21392 + return 'U+' + hexString;
1.21393 + default:throw $RuntimeException(new RuntimeException(), 'Unreachable.');
1.21394 + }
1.21395 +}
1.21396 +
1.21397 +function $warnAboutPrivateUseChar(this$static){
1.21398 + if (!this$static.alreadyWarnedAboutPrivateUseCharacters) {
1.21399 + this$static.alreadyWarnedAboutPrivateUseCharacters = true;
1.21400 + }
1.21401 +}
1.21402 +
1.21403 +function getClass_52(){
1.21404 + return Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit;
1.21405 +}
1.21406 +
1.21407 +function ErrorReportingTokenizer(){
1.21408 +}
1.21409 +
1.21410 +_ = ErrorReportingTokenizer.prototype = new Tokenizer();
1.21411 +_.getClass$ = getClass_52;
1.21412 +_.typeId$ = 0;
1.21413 +_.alreadyComplainedAboutNonAscii = false;
1.21414 +_.alreadyWarnedAboutPrivateUseCharacters = false;
1.21415 +_.col = 0;
1.21416 +_.colPrev = 0;
1.21417 +_.line = 0;
1.21418 +_.linePrev = 0;
1.21419 +_.nextCharOnNewLine = false;
1.21420 +_.prev = 0;
1.21421 +function $clinit_91(){
1.21422 + $clinit_91 = nullMethod;
1.21423 + EMPTY_ATTRIBUTENAMES = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 0, 0);
1.21424 + EMPTY_STRINGS = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
1.21425 + EMPTY_ATTRIBUTES = $HtmlAttributes(new HtmlAttributes(), 0);
1.21426 +}
1.21427 +
1.21428 +function $HtmlAttributes(this$static, mode){
1.21429 + $clinit_91();
1.21430 + this$static.mode = mode;
1.21431 + this$static.length_0 = 0;
1.21432 + this$static.names = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 5, 0);
1.21433 + this$static.values = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 5, 0);
1.21434 + this$static.xmlnsLength = 0;
1.21435 + this$static.xmlnsNames = EMPTY_ATTRIBUTENAMES;
1.21436 + this$static.xmlnsValues = EMPTY_STRINGS;
1.21437 + return this$static;
1.21438 +}
1.21439 +
1.21440 +function $addAttribute(this$static, name, value, xmlnsPolicy){
1.21441 + var newLen, newNames, newValues;
1.21442 + name == ($clinit_87() , ID);
1.21443 + if (name.xmlns) {
1.21444 + if (this$static.xmlnsNames.length == this$static.xmlnsLength) {
1.21445 + newLen = this$static.xmlnsLength == 0?2:this$static.xmlnsLength << 1;
1.21446 + newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
1.21447 + arraycopy(this$static.xmlnsNames, 0, newNames, 0, this$static.xmlnsNames.length);
1.21448 + this$static.xmlnsNames = newNames;
1.21449 + newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
1.21450 + arraycopy(this$static.xmlnsValues, 0, newValues, 0, this$static.xmlnsValues.length);
1.21451 + this$static.xmlnsValues = newValues;
1.21452 + }
1.21453 + this$static.xmlnsNames[this$static.xmlnsLength] = name;
1.21454 + this$static.xmlnsValues[this$static.xmlnsLength] = value;
1.21455 + ++this$static.xmlnsLength;
1.21456 + switch (xmlnsPolicy.ordinal) {
1.21457 + case 1:
1.21458 + throw $SAXException(new SAXException(), 'Saw an xmlns attribute.');
1.21459 + case 2:
1.21460 + return;
1.21461 + }
1.21462 + }
1.21463 + if (this$static.names.length == this$static.length_0) {
1.21464 + newLen = this$static.length_0 << 1;
1.21465 + newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
1.21466 + arraycopy(this$static.names, 0, newNames, 0, this$static.names.length);
1.21467 + this$static.names = newNames;
1.21468 + newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
1.21469 + arraycopy(this$static.values, 0, newValues, 0, this$static.values.length);
1.21470 + this$static.values = newValues;
1.21471 + }
1.21472 + this$static.names[this$static.length_0] = name;
1.21473 + this$static.values[this$static.length_0] = value;
1.21474 + ++this$static.length_0;
1.21475 +}
1.21476 +
1.21477 +function $clear_0(this$static, m){
1.21478 + var i;
1.21479 + for (i = 0; i < this$static.length_0; ++i) {
1.21480 + setCheck(this$static.names, i, null);
1.21481 + setCheck(this$static.values, i, null);
1.21482 + }
1.21483 + this$static.length_0 = 0;
1.21484 + this$static.mode = m;
1.21485 + for (i = 0; i < this$static.xmlnsLength; ++i) {
1.21486 + setCheck(this$static.xmlnsNames, i, null);
1.21487 + setCheck(this$static.xmlnsValues, i, null);
1.21488 + }
1.21489 + this$static.xmlnsLength = 0;
1.21490 +}
1.21491 +
1.21492 +function $clearWithoutReleasingContents(this$static){
1.21493 + var i;
1.21494 + for (i = 0; i < this$static.length_0; ++i) {
1.21495 + setCheck(this$static.names, i, null);
1.21496 + setCheck(this$static.values, i, null);
1.21497 + }
1.21498 + this$static.length_0 = 0;
1.21499 +}
1.21500 +
1.21501 +function $cloneAttributes(this$static){
1.21502 + var clone, i;
1.21503 + clone = $HtmlAttributes(new HtmlAttributes(), 0);
1.21504 + for (i = 0; i < this$static.length_0; ++i) {
1.21505 + $addAttribute(clone, this$static.names[i], this$static.values[i], ($clinit_80() , ALLOW));
1.21506 + }
1.21507 + for (i = 0; i < this$static.xmlnsLength; ++i) {
1.21508 + $addAttribute(clone, this$static.xmlnsNames[i], this$static.xmlnsValues[i], ($clinit_80() , ALLOW));
1.21509 + }
1.21510 + return clone;
1.21511 +}
1.21512 +
1.21513 +function $contains(this$static, name){
1.21514 + var i;
1.21515 + for (i = 0; i < this$static.length_0; ++i) {
1.21516 + if (name.local[0] == this$static.names[i].local[0]) {
1.21517 + return true;
1.21518 + }
1.21519 + }
1.21520 + for (i = 0; i < this$static.xmlnsLength; ++i) {
1.21521 + if (name.local[0] == this$static.xmlnsNames[i].local[0]) {
1.21522 + return true;
1.21523 + }
1.21524 + }
1.21525 + return false;
1.21526 +}
1.21527 +
1.21528 +function $getAttributeName(this$static, index){
1.21529 + if (index < this$static.length_0 && index >= 0) {
1.21530 + return this$static.names[index];
1.21531 + }
1.21532 + else {
1.21533 + return null;
1.21534 + }
1.21535 +}
1.21536 +
1.21537 +function $getIndex(this$static, name){
1.21538 + var i;
1.21539 + for (i = 0; i < this$static.length_0; ++i) {
1.21540 + if (this$static.names[i] == name) {
1.21541 + return i;
1.21542 + }
1.21543 + }
1.21544 + return -1;
1.21545 +}
1.21546 +
1.21547 +function $getLocalName(this$static, index){
1.21548 + if (index < this$static.length_0 && index >= 0) {
1.21549 + return this$static.names[index].local[this$static.mode];
1.21550 + }
1.21551 + else {
1.21552 + return null;
1.21553 + }
1.21554 +}
1.21555 +
1.21556 +function $getURI(this$static, index){
1.21557 + if (index < this$static.length_0 && index >= 0) {
1.21558 + return this$static.names[index].uri[this$static.mode];
1.21559 + }
1.21560 + else {
1.21561 + return null;
1.21562 + }
1.21563 +}
1.21564 +
1.21565 +function $getValue(this$static, index){
1.21566 + if (index < this$static.length_0 && index >= 0) {
1.21567 + return this$static.values[index];
1.21568 + }
1.21569 + else {
1.21570 + return null;
1.21571 + }
1.21572 +}
1.21573 +
1.21574 +function $getValue_0(this$static, name){
1.21575 + var index;
1.21576 + index = $getIndex(this$static, name);
1.21577 + if (index == -1) {
1.21578 + return null;
1.21579 + }
1.21580 + else {
1.21581 + return $getValue(this$static, index);
1.21582 + }
1.21583 +}
1.21584 +
1.21585 +function $processNonNcNames(this$static, treeBuilder, namePolicy){
1.21586 + var attName, i, name;
1.21587 + for (i = 0; i < this$static.length_0; ++i) {
1.21588 + attName = this$static.names[i];
1.21589 + if (!attName.ncname[this$static.mode]) {
1.21590 + name = attName.local[this$static.mode];
1.21591 + switch (namePolicy.ordinal) {
1.21592 + case 2:
1.21593 + this$static.names[i] = ($clinit_87() , $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(escapeName(name)), ALL_NO_PREFIX, ALL_NCNAME, false));
1.21594 + case 0:
1.21595 + attName != ($clinit_87() , XML_LANG);
1.21596 + break;
1.21597 + case 1:
1.21598 + $fatal_1(treeBuilder, 'Attribute \u201C' + name + '\u201D is not serializable as XML 1.0.');
1.21599 + }
1.21600 + }
1.21601 + }
1.21602 +}
1.21603 +
1.21604 +function getClass_53(){
1.21605 + return Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit;
1.21606 +}
1.21607 +
1.21608 +function HtmlAttributes(){
1.21609 +}
1.21610 +
1.21611 +_ = HtmlAttributes.prototype = new Object_0();
1.21612 +_.getClass$ = getClass_53;
1.21613 +_.typeId$ = 0;
1.21614 +_.length_0 = 0;
1.21615 +_.mode = 0;
1.21616 +_.names = null;
1.21617 +_.values = null;
1.21618 +_.xmlnsLength = 0;
1.21619 +_.xmlnsNames = null;
1.21620 +_.xmlnsValues = null;
1.21621 +var EMPTY_ATTRIBUTENAMES, EMPTY_ATTRIBUTES, EMPTY_STRINGS;
1.21622 +function $LocatorImpl(this$static, locator){
1.21623 + $getColumnNumber(locator);
1.21624 + $getLineNumber(locator);
1.21625 + return this$static;
1.21626 +}
1.21627 +
1.21628 +function getClass_54(){
1.21629 + return Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit;
1.21630 +}
1.21631 +
1.21632 +function LocatorImpl(){
1.21633 +}
1.21634 +
1.21635 +_ = LocatorImpl.prototype = new Object_0();
1.21636 +_.getClass$ = getClass_54;
1.21637 +_.typeId$ = 0;
1.21638 +function $clinit_93(){
1.21639 + $clinit_93 = nullMethod;
1.21640 + HEX_TABLE = $toCharArray('0123456789ABCDEF');
1.21641 +}
1.21642 +
1.21643 +function appendUHexTo(sb, c){
1.21644 + var i;
1.21645 + $append_0(sb, 'U');
1.21646 + for (i = 0; i < 6; ++i) {
1.21647 + $append_0(sb, String.fromCharCode(HEX_TABLE[(c & 15728640) >> 20]));
1.21648 + c <<= 4;
1.21649 + }
1.21650 +}
1.21651 +
1.21652 +function escapeName(str){
1.21653 + $clinit_93();
1.21654 + var c, i, next, sb;
1.21655 + sb = $StringBuilder(new StringBuilder());
1.21656 + for (i = 0; i < str.length; ++i) {
1.21657 + c = str.charCodeAt(i);
1.21658 + if ((c & 64512) == 55296) {
1.21659 + next = str.charCodeAt(++i);
1.21660 + appendUHexTo(sb, (c << 10) + next + -56613888);
1.21661 + }
1.21662 + else if (i == 0 && !(c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95)) {
1.21663 + appendUHexTo(sb, c);
1.21664 + }
1.21665 + else if (i != 0 && !(c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542)) {
1.21666 + appendUHexTo(sb, c);
1.21667 + }
1.21668 + else {
1.21669 + $append_0(sb, String.fromCharCode(c));
1.21670 + }
1.21671 + }
1.21672 + return String($toString_0(sb));
1.21673 +}
1.21674 +
1.21675 +function isNCName(str){
1.21676 + $clinit_93();
1.21677 + var i, len;
1.21678 + if (str == null) {
1.21679 + return false;
1.21680 + }
1.21681 + else {
1.21682 + len = str.length;
1.21683 + switch (len) {
1.21684 + case 0:
1.21685 + return false;
1.21686 + case 1:
1.21687 + return isNCNameStart(str.charCodeAt(0));
1.21688 + default:if (!isNCNameStart(str.charCodeAt(0))) {
1.21689 + return false;
1.21690 + }
1.21691 +
1.21692 + for (i = 1; i < len; ++i) {
1.21693 + if (!isNCNameTrail(str.charCodeAt(i))) {
1.21694 + return false;
1.21695 + }
1.21696 + }
1.21697 +
1.21698 + }
1.21699 + return true;
1.21700 + }
1.21701 +}
1.21702 +
1.21703 +function isNCNameStart(c){
1.21704 + return c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95;
1.21705 +}
1.21706 +
1.21707 +function isNCNameTrail(c){
1.21708 + return c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542;
1.21709 +}
1.21710 +
1.21711 +var HEX_TABLE;
1.21712 +function $clinit_94(){
1.21713 + $clinit_94 = nullMethod;
1.21714 + NAMES = initValues(_3_3C_classLit, 52, 12, [$toCharArray('AElig'), $toCharArray('AElig;'), $toCharArray('AMP'), $toCharArray('AMP;'), $toCharArray('Aacute'), $toCharArray('Aacute;'), $toCharArray('Abreve;'), $toCharArray('Acirc'), $toCharArray('Acirc;'), $toCharArray('Acy;'), $toCharArray('Afr;'), $toCharArray('Agrave'), $toCharArray('Agrave;'), $toCharArray('Alpha;'), $toCharArray('Amacr;'), $toCharArray('And;'), $toCharArray('Aogon;'), $toCharArray('Aopf;'), $toCharArray('ApplyFunction;'), $toCharArray('Aring'), $toCharArray('Aring;'), $toCharArray('Ascr;'), $toCharArray('Assign;'), $toCharArray('Atilde'), $toCharArray('Atilde;'), $toCharArray('Auml'), $toCharArray('Auml;'), $toCharArray('Backslash;'), $toCharArray('Barv;'), $toCharArray('Barwed;'), $toCharArray('Bcy;'), $toCharArray('Because;'), $toCharArray('Bernoullis;'), $toCharArray('Beta;'), $toCharArray('Bfr;'), $toCharArray('Bopf;'), $toCharArray('Breve;'), $toCharArray('Bscr;'), $toCharArray('Bumpeq;'), $toCharArray('CHcy;'), $toCharArray('COPY'), $toCharArray('COPY;'), $toCharArray('Cacute;'), $toCharArray('Cap;'), $toCharArray('CapitalDifferentialD;'), $toCharArray('Cayleys;'), $toCharArray('Ccaron;'), $toCharArray('Ccedil'), $toCharArray('Ccedil;'), $toCharArray('Ccirc;'), $toCharArray('Cconint;'), $toCharArray('Cdot;'), $toCharArray('Cedilla;'), $toCharArray('CenterDot;'), $toCharArray('Cfr;'), $toCharArray('Chi;'), $toCharArray('CircleDot;'), $toCharArray('CircleMinus;'), $toCharArray('CirclePlus;'), $toCharArray('CircleTimes;'), $toCharArray('ClockwiseContourIntegral;'), $toCharArray('CloseCurlyDoubleQuote;'), $toCharArray('CloseCurlyQuote;'), $toCharArray('Colon;'), $toCharArray('Colone;'), $toCharArray('Congruent;'), $toCharArray('Conint;'), $toCharArray('ContourIntegral;'), $toCharArray('Copf;'), $toCharArray('Coproduct;'), $toCharArray('CounterClockwiseContourIntegral;'), $toCharArray('Cross;'), $toCharArray('Cscr;'), $toCharArray('Cup;'), $toCharArray('CupCap;'), $toCharArray('DD;'), $toCharArray('DDotrahd;'), $toCharArray('DJcy;'), $toCharArray('DScy;'), $toCharArray('DZcy;'), $toCharArray('Dagger;'), $toCharArray('Darr;'), $toCharArray('Dashv;'), $toCharArray('Dcaron;'), $toCharArray('Dcy;'), $toCharArray('Del;'), $toCharArray('Delta;'), $toCharArray('Dfr;'), $toCharArray('DiacriticalAcute;'), $toCharArray('DiacriticalDot;'), $toCharArray('DiacriticalDoubleAcute;'), $toCharArray('DiacriticalGrave;'), $toCharArray('DiacriticalTilde;'), $toCharArray('Diamond;'), $toCharArray('DifferentialD;'), $toCharArray('Dopf;'), $toCharArray('Dot;'), $toCharArray('DotDot;'), $toCharArray('DotEqual;'), $toCharArray('DoubleContourIntegral;'), $toCharArray('DoubleDot;'), $toCharArray('DoubleDownArrow;'), $toCharArray('DoubleLeftArrow;'), $toCharArray('DoubleLeftRightArrow;'), $toCharArray('DoubleLeftTee;'), $toCharArray('DoubleLongLeftArrow;'), $toCharArray('DoubleLongLeftRightArrow;'), $toCharArray('DoubleLongRightArrow;'), $toCharArray('DoubleRightArrow;'), $toCharArray('DoubleRightTee;'), $toCharArray('DoubleUpArrow;'), $toCharArray('DoubleUpDownArrow;'), $toCharArray('DoubleVerticalBar;'), $toCharArray('DownArrow;'), $toCharArray('DownArrowBar;'), $toCharArray('DownArrowUpArrow;'), $toCharArray('DownBreve;'), $toCharArray('DownLeftRightVector;'), $toCharArray('DownLeftTeeVector;'), $toCharArray('DownLeftVector;'), $toCharArray('DownLeftVectorBar;'), $toCharArray('DownRightTeeVector;'), $toCharArray('DownRightVector;'), $toCharArray('DownRightVectorBar;'), $toCharArray('DownTee;'), $toCharArray('DownTeeArrow;'), $toCharArray('Downarrow;'), $toCharArray('Dscr;'), $toCharArray('Dstrok;'), $toCharArray('ENG;'), $toCharArray('ETH'), $toCharArray('ETH;'), $toCharArray('Eacute'), $toCharArray('Eacute;'), $toCharArray('Ecaron;'), $toCharArray('Ecirc'), $toCharArray('Ecirc;'), $toCharArray('Ecy;'), $toCharArray('Edot;'), $toCharArray('Efr;'), $toCharArray('Egrave'), $toCharArray('Egrave;'), $toCharArray('Element;'), $toCharArray('Emacr;'), $toCharArray('EmptySmallSquare;'), $toCharArray('EmptyVerySmallSquare;'), $toCharArray('Eogon;'), $toCharArray('Eopf;'), $toCharArray('Epsilon;'), $toCharArray('Equal;'), $toCharArray('EqualTilde;'), $toCharArray('Equilibrium;'), $toCharArray('Escr;'), $toCharArray('Esim;'), $toCharArray('Eta;'), $toCharArray('Euml'), $toCharArray('Euml;'), $toCharArray('Exists;'), $toCharArray('ExponentialE;'), $toCharArray('Fcy;'), $toCharArray('Ffr;'), $toCharArray('FilledSmallSquare;'), $toCharArray('FilledVerySmallSquare;'), $toCharArray('Fopf;'), $toCharArray('ForAll;'), $toCharArray('Fouriertrf;'), $toCharArray('Fscr;'), $toCharArray('GJcy;'), $toCharArray('GT'), $toCharArray('GT;'), $toCharArray('Gamma;'), $toCharArray('Gammad;'), $toCharArray('Gbreve;'), $toCharArray('Gcedil;'), $toCharArray('Gcirc;'), $toCharArray('Gcy;'), $toCharArray('Gdot;'), $toCharArray('Gfr;'), $toCharArray('Gg;'), $toCharArray('Gopf;'), $toCharArray('GreaterEqual;'), $toCharArray('GreaterEqualLess;'), $toCharArray('GreaterFullEqual;'), $toCharArray('GreaterGreater;'), $toCharArray('GreaterLess;'), $toCharArray('GreaterSlantEqual;'), $toCharArray('GreaterTilde;'), $toCharArray('Gscr;'), $toCharArray('Gt;'), $toCharArray('HARDcy;'), $toCharArray('Hacek;'), $toCharArray('Hat;'), $toCharArray('Hcirc;'), $toCharArray('Hfr;'), $toCharArray('HilbertSpace;'), $toCharArray('Hopf;'), $toCharArray('HorizontalLine;'), $toCharArray('Hscr;'), $toCharArray('Hstrok;'), $toCharArray('HumpDownHump;'), $toCharArray('HumpEqual;'), $toCharArray('IEcy;'), $toCharArray('IJlig;'), $toCharArray('IOcy;'), $toCharArray('Iacute'), $toCharArray('Iacute;'), $toCharArray('Icirc'), $toCharArray('Icirc;'), $toCharArray('Icy;'), $toCharArray('Idot;'), $toCharArray('Ifr;'), $toCharArray('Igrave'), $toCharArray('Igrave;'), $toCharArray('Im;'), $toCharArray('Imacr;'), $toCharArray('ImaginaryI;'), $toCharArray('Implies;'), $toCharArray('Int;'), $toCharArray('Integral;'), $toCharArray('Intersection;'), $toCharArray('InvisibleComma;'), $toCharArray('InvisibleTimes;'), $toCharArray('Iogon;'), $toCharArray('Iopf;'), $toCharArray('Iota;'), $toCharArray('Iscr;'), $toCharArray('Itilde;'), $toCharArray('Iukcy;'), $toCharArray('Iuml'), $toCharArray('Iuml;'), $toCharArray('Jcirc;'), $toCharArray('Jcy;'), $toCharArray('Jfr;'), $toCharArray('Jopf;'), $toCharArray('Jscr;'), $toCharArray('Jsercy;'), $toCharArray('Jukcy;'), $toCharArray('KHcy;'), $toCharArray('KJcy;'), $toCharArray('Kappa;'), $toCharArray('Kcedil;'), $toCharArray('Kcy;'), $toCharArray('Kfr;'), $toCharArray('Kopf;'), $toCharArray('Kscr;'), $toCharArray('LJcy;'), $toCharArray('LT'), $toCharArray('LT;'), $toCharArray('Lacute;'), $toCharArray('Lambda;'), $toCharArray('Lang;'), $toCharArray('Laplacetrf;'), $toCharArray('Larr;'), $toCharArray('Lcaron;'), $toCharArray('Lcedil;'), $toCharArray('Lcy;'), $toCharArray('LeftAngleBracket;'), $toCharArray('LeftArrow;'), $toCharArray('LeftArrowBar;'), $toCharArray('LeftArrowRightArrow;'), $toCharArray('LeftCeiling;'), $toCharArray('LeftDoubleBracket;'), $toCharArray('LeftDownTeeVector;'), $toCharArray('LeftDownVector;'), $toCharArray('LeftDownVectorBar;'), $toCharArray('LeftFloor;'), $toCharArray('LeftRightArrow;'), $toCharArray('LeftRightVector;'), $toCharArray('LeftTee;'), $toCharArray('LeftTeeArrow;'), $toCharArray('LeftTeeVector;'), $toCharArray('LeftTriangle;'), $toCharArray('LeftTriangleBar;'), $toCharArray('LeftTriangleEqual;'), $toCharArray('LeftUpDownVector;'), $toCharArray('LeftUpTeeVector;'), $toCharArray('LeftUpVector;'), $toCharArray('LeftUpVectorBar;'), $toCharArray('LeftVector;'), $toCharArray('LeftVectorBar;'), $toCharArray('Leftarrow;'), $toCharArray('Leftrightarrow;'), $toCharArray('LessEqualGreater;'), $toCharArray('LessFullEqual;'), $toCharArray('LessGreater;'), $toCharArray('LessLess;'), $toCharArray('LessSlantEqual;'), $toCharArray('LessTilde;'), $toCharArray('Lfr;'), $toCharArray('Ll;'), $toCharArray('Lleftarrow;'), $toCharArray('Lmidot;'), $toCharArray('LongLeftArrow;'), $toCharArray('LongLeftRightArrow;'), $toCharArray('LongRightArrow;'), $toCharArray('Longleftarrow;'), $toCharArray('Longleftrightarrow;'), $toCharArray('Longrightarrow;'), $toCharArray('Lopf;'), $toCharArray('LowerLeftArrow;'), $toCharArray('LowerRightArrow;'), $toCharArray('Lscr;'), $toCharArray('Lsh;'), $toCharArray('Lstrok;'), $toCharArray('Lt;'), $toCharArray('Map;'), $toCharArray('Mcy;'), $toCharArray('MediumSpace;'), $toCharArray('Mellintrf;'), $toCharArray('Mfr;'), $toCharArray('MinusPlus;'), $toCharArray('Mopf;'), $toCharArray('Mscr;'), $toCharArray('Mu;'), $toCharArray('NJcy;'), $toCharArray('Nacute;'), $toCharArray('Ncaron;'), $toCharArray('Ncedil;'), $toCharArray('Ncy;'), $toCharArray('NegativeMediumSpace;'), $toCharArray('NegativeThickSpace;'), $toCharArray('NegativeThinSpace;'), $toCharArray('NegativeVeryThinSpace;'), $toCharArray('NestedGreaterGreater;'), $toCharArray('NestedLessLess;'), $toCharArray('NewLine;'), $toCharArray('Nfr;'), $toCharArray('NoBreak;'), $toCharArray('NonBreakingSpace;'), $toCharArray('Nopf;'), $toCharArray('Not;'), $toCharArray('NotCongruent;'), $toCharArray('NotCupCap;'), $toCharArray('NotDoubleVerticalBar;'), $toCharArray('NotElement;'), $toCharArray('NotEqual;'), $toCharArray('NotExists;'), $toCharArray('NotGreater;'), $toCharArray('NotGreaterEqual;'), $toCharArray('NotGreaterLess;'), $toCharArray('NotGreaterTilde;'), $toCharArray('NotLeftTriangle;'), $toCharArray('NotLeftTriangleEqual;'), $toCharArray('NotLess;'), $toCharArray('NotLessEqual;'), $toCharArray('NotLessGreater;'), $toCharArray('NotLessTilde;'), $toCharArray('NotPrecedes;'), $toCharArray('NotPrecedesSlantEqual;'), $toCharArray('NotReverseElement;'), $toCharArray('NotRightTriangle;'), $toCharArray('NotRightTriangleEqual;'), $toCharArray('NotSquareSubsetEqual;'), $toCharArray('NotSquareSupersetEqual;'), $toCharArray('NotSubsetEqual;'), $toCharArray('NotSucceeds;'), $toCharArray('NotSucceedsSlantEqual;'), $toCharArray('NotSupersetEqual;'), $toCharArray('NotTilde;'), $toCharArray('NotTildeEqual;'), $toCharArray('NotTildeFullEqual;'), $toCharArray('NotTildeTilde;'), $toCharArray('NotVerticalBar;'), $toCharArray('Nscr;'), $toCharArray('Ntilde'), $toCharArray('Ntilde;'), $toCharArray('Nu;'), $toCharArray('OElig;'), $toCharArray('Oacute'), $toCharArray('Oacute;'), $toCharArray('Ocirc'), $toCharArray('Ocirc;'), $toCharArray('Ocy;'), $toCharArray('Odblac;'), $toCharArray('Ofr;'), $toCharArray('Ograve'), $toCharArray('Ograve;'), $toCharArray('Omacr;'), $toCharArray('Omega;'), $toCharArray('Omicron;'), $toCharArray('Oopf;'), $toCharArray('OpenCurlyDoubleQuote;'), $toCharArray('OpenCurlyQuote;'), $toCharArray('Or;'), $toCharArray('Oscr;'), $toCharArray('Oslash'), $toCharArray('Oslash;'), $toCharArray('Otilde'), $toCharArray('Otilde;'), $toCharArray('Otimes;'), $toCharArray('Ouml'), $toCharArray('Ouml;'), $toCharArray('OverBar;'), $toCharArray('OverBrace;'), $toCharArray('OverBracket;'), $toCharArray('OverParenthesis;'), $toCharArray('PartialD;'), $toCharArray('Pcy;'), $toCharArray('Pfr;'), $toCharArray('Phi;'), $toCharArray('Pi;'), $toCharArray('PlusMinus;'), $toCharArray('Poincareplane;'), $toCharArray('Popf;'), $toCharArray('Pr;'), $toCharArray('Precedes;'), $toCharArray('PrecedesEqual;'), $toCharArray('PrecedesSlantEqual;'), $toCharArray('PrecedesTilde;'), $toCharArray('Prime;'), $toCharArray('Product;'), $toCharArray('Proportion;'), $toCharArray('Proportional;'), $toCharArray('Pscr;'), $toCharArray('Psi;'), $toCharArray('QUOT'), $toCharArray('QUOT;'), $toCharArray('Qfr;'), $toCharArray('Qopf;'), $toCharArray('Qscr;'), $toCharArray('RBarr;'), $toCharArray('REG'), $toCharArray('REG;'), $toCharArray('Racute;'), $toCharArray('Rang;'), $toCharArray('Rarr;'), $toCharArray('Rarrtl;'), $toCharArray('Rcaron;'), $toCharArray('Rcedil;'), $toCharArray('Rcy;'), $toCharArray('Re;'), $toCharArray('ReverseElement;'), $toCharArray('ReverseEquilibrium;'), $toCharArray('ReverseUpEquilibrium;'), $toCharArray('Rfr;'), $toCharArray('Rho;'), $toCharArray('RightAngleBracket;'), $toCharArray('RightArrow;'), $toCharArray('RightArrowBar;'), $toCharArray('RightArrowLeftArrow;'), $toCharArray('RightCeiling;'), $toCharArray('RightDoubleBracket;'), $toCharArray('RightDownTeeVector;'), $toCharArray('RightDownVector;'), $toCharArray('RightDownVectorBar;'), $toCharArray('RightFloor;'), $toCharArray('RightTee;'), $toCharArray('RightTeeArrow;'), $toCharArray('RightTeeVector;'), $toCharArray('RightTriangle;'), $toCharArray('RightTriangleBar;'), $toCharArray('RightTriangleEqual;'), $toCharArray('RightUpDownVector;'), $toCharArray('RightUpTeeVector;'), $toCharArray('RightUpVector;'), $toCharArray('RightUpVectorBar;'), $toCharArray('RightVector;'), $toCharArray('RightVectorBar;'), $toCharArray('Rightarrow;'), $toCharArray('Ropf;'), $toCharArray('RoundImplies;'), $toCharArray('Rrightarrow;'), $toCharArray('Rscr;'), $toCharArray('Rsh;'), $toCharArray('RuleDelayed;'), $toCharArray('SHCHcy;'), $toCharArray('SHcy;'), $toCharArray('SOFTcy;'), $toCharArray('Sacute;'), $toCharArray('Sc;'), $toCharArray('Scaron;'), $toCharArray('Scedil;'), $toCharArray('Scirc;'), $toCharArray('Scy;'), $toCharArray('Sfr;'), $toCharArray('ShortDownArrow;'), $toCharArray('ShortLeftArrow;'), $toCharArray('ShortRightArrow;'), $toCharArray('ShortUpArrow;'), $toCharArray('Sigma;'), $toCharArray('SmallCircle;'), $toCharArray('Sopf;'), $toCharArray('Sqrt;'), $toCharArray('Square;'), $toCharArray('SquareIntersection;'), $toCharArray('SquareSubset;'), $toCharArray('SquareSubsetEqual;'), $toCharArray('SquareSuperset;'), $toCharArray('SquareSupersetEqual;'), $toCharArray('SquareUnion;'), $toCharArray('Sscr;'), $toCharArray('Star;'), $toCharArray('Sub;'), $toCharArray('Subset;'), $toCharArray('SubsetEqual;'), $toCharArray('Succeeds;'), $toCharArray('SucceedsEqual;'), $toCharArray('SucceedsSlantEqual;'), $toCharArray('SucceedsTilde;'), $toCharArray('SuchThat;'), $toCharArray('Sum;'), $toCharArray('Sup;'), $toCharArray('Superset;'), $toCharArray('SupersetEqual;'), $toCharArray('Supset;'), $toCharArray('THORN'), $toCharArray('THORN;'), $toCharArray('TRADE;'), $toCharArray('TSHcy;'), $toCharArray('TScy;'), $toCharArray('Tab;'), $toCharArray('Tau;'), $toCharArray('Tcaron;'), $toCharArray('Tcedil;'), $toCharArray('Tcy;'), $toCharArray('Tfr;'), $toCharArray('Therefore;'), $toCharArray('Theta;'), $toCharArray('ThinSpace;'), $toCharArray('Tilde;'), $toCharArray('TildeEqual;'), $toCharArray('TildeFullEqual;'), $toCharArray('TildeTilde;'), $toCharArray('Topf;'), $toCharArray('TripleDot;'), $toCharArray('Tscr;'), $toCharArray('Tstrok;'), $toCharArray('Uacute'), $toCharArray('Uacute;'), $toCharArray('Uarr;'), $toCharArray('Uarrocir;'), $toCharArray('Ubrcy;'), $toCharArray('Ubreve;'), $toCharArray('Ucirc'), $toCharArray('Ucirc;'), $toCharArray('Ucy;'), $toCharArray('Udblac;'), $toCharArray('Ufr;'), $toCharArray('Ugrave'), $toCharArray('Ugrave;'), $toCharArray('Umacr;'), $toCharArray('UnderBar;'), $toCharArray('UnderBrace;'), $toCharArray('UnderBracket;'), $toCharArray('UnderParenthesis;'), $toCharArray('Union;'), $toCharArray('UnionPlus;'), $toCharArray('Uogon;'), $toCharArray('Uopf;'), $toCharArray('UpArrow;'), $toCharArray('UpArrowBar;'), $toCharArray('UpArrowDownArrow;'), $toCharArray('UpDownArrow;'), $toCharArray('UpEquilibrium;'), $toCharArray('UpTee;'), $toCharArray('UpTeeArrow;'), $toCharArray('Uparrow;'), $toCharArray('Updownarrow;'), $toCharArray('UpperLeftArrow;'), $toCharArray('UpperRightArrow;'), $toCharArray('Upsi;'), $toCharArray('Upsilon;'), $toCharArray('Uring;'), $toCharArray('Uscr;'), $toCharArray('Utilde;'), $toCharArray('Uuml'), $toCharArray('Uuml;'), $toCharArray('VDash;'), $toCharArray('Vbar;'), $toCharArray('Vcy;'), $toCharArray('Vdash;'), $toCharArray('Vdashl;'), $toCharArray('Vee;'), $toCharArray('Verbar;'), $toCharArray('Vert;'), $toCharArray('VerticalBar;'), $toCharArray('VerticalLine;'), $toCharArray('VerticalSeparator;'), $toCharArray('VerticalTilde;'), $toCharArray('VeryThinSpace;'), $toCharArray('Vfr;'), $toCharArray('Vopf;'), $toCharArray('Vscr;'), $toCharArray('Vvdash;'), $toCharArray('Wcirc;'), $toCharArray('Wedge;'), $toCharArray('Wfr;'), $toCharArray('Wopf;'), $toCharArray('Wscr;'), $toCharArray('Xfr;'), $toCharArray('Xi;'), $toCharArray('Xopf;'), $toCharArray('Xscr;'), $toCharArray('YAcy;'), $toCharArray('YIcy;'), $toCharArray('YUcy;'), $toCharArray('Yacute'), $toCharArray('Yacute;'), $toCharArray('Ycirc;'), $toCharArray('Ycy;'), $toCharArray('Yfr;'), $toCharArray('Yopf;'), $toCharArray('Yscr;'), $toCharArray('Yuml;'), $toCharArray('ZHcy;'), $toCharArray('Zacute;'), $toCharArray('Zcaron;'), $toCharArray('Zcy;'), $toCharArray('Zdot;'), $toCharArray('ZeroWidthSpace;'), $toCharArray('Zeta;'), $toCharArray('Zfr;'), $toCharArray('Zopf;'), $toCharArray('Zscr;'), $toCharArray('aacute'), $toCharArray('aacute;'), $toCharArray('abreve;'), $toCharArray('ac;'), $toCharArray('acd;'), $toCharArray('acirc'), $toCharArray('acirc;'), $toCharArray('acute'), $toCharArray('acute;'), $toCharArray('acy;'), $toCharArray('aelig'), $toCharArray('aelig;'), $toCharArray('af;'), $toCharArray('afr;'), $toCharArray('agrave'), $toCharArray('agrave;'), $toCharArray('alefsym;'), $toCharArray('aleph;'), $toCharArray('alpha;'), $toCharArray('amacr;'), $toCharArray('amalg;'), $toCharArray('amp'), $toCharArray('amp;'), $toCharArray('and;'), $toCharArray('andand;'), $toCharArray('andd;'), $toCharArray('andslope;'), $toCharArray('andv;'), $toCharArray('ang;'), $toCharArray('ange;'), $toCharArray('angle;'), $toCharArray('angmsd;'), $toCharArray('angmsdaa;'), $toCharArray('angmsdab;'), $toCharArray('angmsdac;'), $toCharArray('angmsdad;'), $toCharArray('angmsdae;'), $toCharArray('angmsdaf;'), $toCharArray('angmsdag;'), $toCharArray('angmsdah;'), $toCharArray('angrt;'), $toCharArray('angrtvb;'), $toCharArray('angrtvbd;'), $toCharArray('angsph;'), $toCharArray('angst;'), $toCharArray('angzarr;'), $toCharArray('aogon;'), $toCharArray('aopf;'), $toCharArray('ap;'), $toCharArray('apE;'), $toCharArray('apacir;'), $toCharArray('ape;'), $toCharArray('apid;'), $toCharArray('apos;'), $toCharArray('approx;'), $toCharArray('approxeq;'), $toCharArray('aring'), $toCharArray('aring;'), $toCharArray('ascr;'), $toCharArray('ast;'), $toCharArray('asymp;'), $toCharArray('asympeq;'), $toCharArray('atilde'), $toCharArray('atilde;'), $toCharArray('auml'), $toCharArray('auml;'), $toCharArray('awconint;'), $toCharArray('awint;'), $toCharArray('bNot;'), $toCharArray('backcong;'), $toCharArray('backepsilon;'), $toCharArray('backprime;'), $toCharArray('backsim;'), $toCharArray('backsimeq;'), $toCharArray('barvee;'), $toCharArray('barwed;'), $toCharArray('barwedge;'), $toCharArray('bbrk;'), $toCharArray('bbrktbrk;'), $toCharArray('bcong;'), $toCharArray('bcy;'), $toCharArray('bdquo;'), $toCharArray('becaus;'), $toCharArray('because;'), $toCharArray('bemptyv;'), $toCharArray('bepsi;'), $toCharArray('bernou;'), $toCharArray('beta;'), $toCharArray('beth;'), $toCharArray('between;'), $toCharArray('bfr;'), $toCharArray('bigcap;'), $toCharArray('bigcirc;'), $toCharArray('bigcup;'), $toCharArray('bigodot;'), $toCharArray('bigoplus;'), $toCharArray('bigotimes;'), $toCharArray('bigsqcup;'), $toCharArray('bigstar;'), $toCharArray('bigtriangledown;'), $toCharArray('bigtriangleup;'), $toCharArray('biguplus;'), $toCharArray('bigvee;'), $toCharArray('bigwedge;'), $toCharArray('bkarow;'), $toCharArray('blacklozenge;'), $toCharArray('blacksquare;'), $toCharArray('blacktriangle;'), $toCharArray('blacktriangledown;'), $toCharArray('blacktriangleleft;'), $toCharArray('blacktriangleright;'), $toCharArray('blank;'), $toCharArray('blk12;'), $toCharArray('blk14;'), $toCharArray('blk34;'), $toCharArray('block;'), $toCharArray('bnot;'), $toCharArray('bopf;'), $toCharArray('bot;'), $toCharArray('bottom;'), $toCharArray('bowtie;'), $toCharArray('boxDL;'), $toCharArray('boxDR;'), $toCharArray('boxDl;'), $toCharArray('boxDr;'), $toCharArray('boxH;'), $toCharArray('boxHD;'), $toCharArray('boxHU;'), $toCharArray('boxHd;'), $toCharArray('boxHu;'), $toCharArray('boxUL;'), $toCharArray('boxUR;'), $toCharArray('boxUl;'), $toCharArray('boxUr;'), $toCharArray('boxV;'), $toCharArray('boxVH;'), $toCharArray('boxVL;'), $toCharArray('boxVR;'), $toCharArray('boxVh;'), $toCharArray('boxVl;'), $toCharArray('boxVr;'), $toCharArray('boxbox;'), $toCharArray('boxdL;'), $toCharArray('boxdR;'), $toCharArray('boxdl;'), $toCharArray('boxdr;'), $toCharArray('boxh;'), $toCharArray('boxhD;'), $toCharArray('boxhU;'), $toCharArray('boxhd;'), $toCharArray('boxhu;'), $toCharArray('boxminus;'), $toCharArray('boxplus;'), $toCharArray('boxtimes;'), $toCharArray('boxuL;'), $toCharArray('boxuR;'), $toCharArray('boxul;'), $toCharArray('boxur;'), $toCharArray('boxv;'), $toCharArray('boxvH;'), $toCharArray('boxvL;'), $toCharArray('boxvR;'), $toCharArray('boxvh;'), $toCharArray('boxvl;'), $toCharArray('boxvr;'), $toCharArray('bprime;'), $toCharArray('breve;'), $toCharArray('brvbar'), $toCharArray('brvbar;'), $toCharArray('bscr;'), $toCharArray('bsemi;'), $toCharArray('bsim;'), $toCharArray('bsime;'), $toCharArray('bsol;'), $toCharArray('bsolb;'), $toCharArray('bull;'), $toCharArray('bullet;'), $toCharArray('bump;'), $toCharArray('bumpE;'), $toCharArray('bumpe;'), $toCharArray('bumpeq;'), $toCharArray('cacute;'), $toCharArray('cap;'), $toCharArray('capand;'), $toCharArray('capbrcup;'), $toCharArray('capcap;'), $toCharArray('capcup;'), $toCharArray('capdot;'), $toCharArray('caret;'), $toCharArray('caron;'), $toCharArray('ccaps;'), $toCharArray('ccaron;'), $toCharArray('ccedil'), $toCharArray('ccedil;'), $toCharArray('ccirc;'), $toCharArray('ccups;'), $toCharArray('ccupssm;'), $toCharArray('cdot;'), $toCharArray('cedil'), $toCharArray('cedil;'), $toCharArray('cemptyv;'), $toCharArray('cent'), $toCharArray('cent;'), $toCharArray('centerdot;'), $toCharArray('cfr;'), $toCharArray('chcy;'), $toCharArray('check;'), $toCharArray('checkmark;'), $toCharArray('chi;'), $toCharArray('cir;'), $toCharArray('cirE;'), $toCharArray('circ;'), $toCharArray('circeq;'), $toCharArray('circlearrowleft;'), $toCharArray('circlearrowright;'), $toCharArray('circledR;'), $toCharArray('circledS;'), $toCharArray('circledast;'), $toCharArray('circledcirc;'), $toCharArray('circleddash;'), $toCharArray('cire;'), $toCharArray('cirfnint;'), $toCharArray('cirmid;'), $toCharArray('cirscir;'), $toCharArray('clubs;'), $toCharArray('clubsuit;'), $toCharArray('colon;'), $toCharArray('colone;'), $toCharArray('coloneq;'), $toCharArray('comma;'), $toCharArray('commat;'), $toCharArray('comp;'), $toCharArray('compfn;'), $toCharArray('complement;'), $toCharArray('complexes;'), $toCharArray('cong;'), $toCharArray('congdot;'), $toCharArray('conint;'), $toCharArray('copf;'), $toCharArray('coprod;'), $toCharArray('copy'), $toCharArray('copy;'), $toCharArray('copysr;'), $toCharArray('crarr;'), $toCharArray('cross;'), $toCharArray('cscr;'), $toCharArray('csub;'), $toCharArray('csube;'), $toCharArray('csup;'), $toCharArray('csupe;'), $toCharArray('ctdot;'), $toCharArray('cudarrl;'), $toCharArray('cudarrr;'), $toCharArray('cuepr;'), $toCharArray('cuesc;'), $toCharArray('cularr;'), $toCharArray('cularrp;'), $toCharArray('cup;'), $toCharArray('cupbrcap;'), $toCharArray('cupcap;'), $toCharArray('cupcup;'), $toCharArray('cupdot;'), $toCharArray('cupor;'), $toCharArray('curarr;'), $toCharArray('curarrm;'), $toCharArray('curlyeqprec;'), $toCharArray('curlyeqsucc;'), $toCharArray('curlyvee;'), $toCharArray('curlywedge;'), $toCharArray('curren'), $toCharArray('curren;'), $toCharArray('curvearrowleft;'), $toCharArray('curvearrowright;'), $toCharArray('cuvee;'), $toCharArray('cuwed;'), $toCharArray('cwconint;'), $toCharArray('cwint;'), $toCharArray('cylcty;'), $toCharArray('dArr;'), $toCharArray('dHar;'), $toCharArray('dagger;'), $toCharArray('daleth;'), $toCharArray('darr;'), $toCharArray('dash;'), $toCharArray('dashv;'), $toCharArray('dbkarow;'), $toCharArray('dblac;'), $toCharArray('dcaron;'), $toCharArray('dcy;'), $toCharArray('dd;'), $toCharArray('ddagger;'), $toCharArray('ddarr;'), $toCharArray('ddotseq;'), $toCharArray('deg'), $toCharArray('deg;'), $toCharArray('delta;'), $toCharArray('demptyv;'), $toCharArray('dfisht;'), $toCharArray('dfr;'), $toCharArray('dharl;'), $toCharArray('dharr;'), $toCharArray('diam;'), $toCharArray('diamond;'), $toCharArray('diamondsuit;'), $toCharArray('diams;'), $toCharArray('die;'), $toCharArray('digamma;'), $toCharArray('disin;'), $toCharArray('div;'), $toCharArray('divide'), $toCharArray('divide;'), $toCharArray('divideontimes;'), $toCharArray('divonx;'), $toCharArray('djcy;'), $toCharArray('dlcorn;'), $toCharArray('dlcrop;'), $toCharArray('dollar;'), $toCharArray('dopf;'), $toCharArray('dot;'), $toCharArray('doteq;'), $toCharArray('doteqdot;'), $toCharArray('dotminus;'), $toCharArray('dotplus;'), $toCharArray('dotsquare;'), $toCharArray('doublebarwedge;'), $toCharArray('downarrow;'), $toCharArray('downdownarrows;'), $toCharArray('downharpoonleft;'), $toCharArray('downharpoonright;'), $toCharArray('drbkarow;'), $toCharArray('drcorn;'), $toCharArray('drcrop;'), $toCharArray('dscr;'), $toCharArray('dscy;'), $toCharArray('dsol;'), $toCharArray('dstrok;'), $toCharArray('dtdot;'), $toCharArray('dtri;'), $toCharArray('dtrif;'), $toCharArray('duarr;'), $toCharArray('duhar;'), $toCharArray('dwangle;'), $toCharArray('dzcy;'), $toCharArray('dzigrarr;'), $toCharArray('eDDot;'), $toCharArray('eDot;'), $toCharArray('eacute'), $toCharArray('eacute;'), $toCharArray('easter;'), $toCharArray('ecaron;'), $toCharArray('ecir;'), $toCharArray('ecirc'), $toCharArray('ecirc;'), $toCharArray('ecolon;'), $toCharArray('ecy;'), $toCharArray('edot;'), $toCharArray('ee;'), $toCharArray('efDot;'), $toCharArray('efr;'), $toCharArray('eg;'), $toCharArray('egrave'), $toCharArray('egrave;'), $toCharArray('egs;'), $toCharArray('egsdot;'), $toCharArray('el;'), $toCharArray('elinters;'), $toCharArray('ell;'), $toCharArray('els;'), $toCharArray('elsdot;'), $toCharArray('emacr;'), $toCharArray('empty;'), $toCharArray('emptyset;'), $toCharArray('emptyv;'), $toCharArray('emsp13;'), $toCharArray('emsp14;'), $toCharArray('emsp;'), $toCharArray('eng;'), $toCharArray('ensp;'), $toCharArray('eogon;'), $toCharArray('eopf;'), $toCharArray('epar;'), $toCharArray('eparsl;'), $toCharArray('eplus;'), $toCharArray('epsi;'), $toCharArray('epsilon;'), $toCharArray('epsiv;'), $toCharArray('eqcirc;'), $toCharArray('eqcolon;'), $toCharArray('eqsim;'), $toCharArray('eqslantgtr;'), $toCharArray('eqslantless;'), $toCharArray('equals;'), $toCharArray('equest;'), $toCharArray('equiv;'), $toCharArray('equivDD;'), $toCharArray('eqvparsl;'), $toCharArray('erDot;'), $toCharArray('erarr;'), $toCharArray('escr;'), $toCharArray('esdot;'), $toCharArray('esim;'), $toCharArray('eta;'), $toCharArray('eth'), $toCharArray('eth;'), $toCharArray('euml'), $toCharArray('euml;'), $toCharArray('euro;'), $toCharArray('excl;'), $toCharArray('exist;'), $toCharArray('expectation;'), $toCharArray('exponentiale;'), $toCharArray('fallingdotseq;'), $toCharArray('fcy;'), $toCharArray('female;'), $toCharArray('ffilig;'), $toCharArray('fflig;'), $toCharArray('ffllig;'), $toCharArray('ffr;'), $toCharArray('filig;'), $toCharArray('flat;'), $toCharArray('fllig;'), $toCharArray('fltns;'), $toCharArray('fnof;'), $toCharArray('fopf;'), $toCharArray('forall;'), $toCharArray('fork;'), $toCharArray('forkv;'), $toCharArray('fpartint;'), $toCharArray('frac12'), $toCharArray('frac12;'), $toCharArray('frac13;'), $toCharArray('frac14'), $toCharArray('frac14;'), $toCharArray('frac15;'), $toCharArray('frac16;'), $toCharArray('frac18;'), $toCharArray('frac23;'), $toCharArray('frac25;'), $toCharArray('frac34'), $toCharArray('frac34;'), $toCharArray('frac35;'), $toCharArray('frac38;'), $toCharArray('frac45;'), $toCharArray('frac56;'), $toCharArray('frac58;'), $toCharArray('frac78;'), $toCharArray('frasl;'), $toCharArray('frown;'), $toCharArray('fscr;'), $toCharArray('gE;'), $toCharArray('gEl;'), $toCharArray('gacute;'), $toCharArray('gamma;'), $toCharArray('gammad;'), $toCharArray('gap;'), $toCharArray('gbreve;'), $toCharArray('gcirc;'), $toCharArray('gcy;'), $toCharArray('gdot;'), $toCharArray('ge;'), $toCharArray('gel;'), $toCharArray('geq;'), $toCharArray('geqq;'), $toCharArray('geqslant;'), $toCharArray('ges;'), $toCharArray('gescc;'), $toCharArray('gesdot;'), $toCharArray('gesdoto;'), $toCharArray('gesdotol;'), $toCharArray('gesles;'), $toCharArray('gfr;'), $toCharArray('gg;'), $toCharArray('ggg;'), $toCharArray('gimel;'), $toCharArray('gjcy;'), $toCharArray('gl;'), $toCharArray('glE;'), $toCharArray('gla;'), $toCharArray('glj;'), $toCharArray('gnE;'), $toCharArray('gnap;'), $toCharArray('gnapprox;'), $toCharArray('gne;'), $toCharArray('gneq;'), $toCharArray('gneqq;'), $toCharArray('gnsim;'), $toCharArray('gopf;'), $toCharArray('grave;'), $toCharArray('gscr;'), $toCharArray('gsim;'), $toCharArray('gsime;'), $toCharArray('gsiml;'), $toCharArray('gt'), $toCharArray('gt;'), $toCharArray('gtcc;'), $toCharArray('gtcir;'), $toCharArray('gtdot;'), $toCharArray('gtlPar;'), $toCharArray('gtquest;'), $toCharArray('gtrapprox;'), $toCharArray('gtrarr;'), $toCharArray('gtrdot;'), $toCharArray('gtreqless;'), $toCharArray('gtreqqless;'), $toCharArray('gtrless;'), $toCharArray('gtrsim;'), $toCharArray('hArr;'), $toCharArray('hairsp;'), $toCharArray('half;'), $toCharArray('hamilt;'), $toCharArray('hardcy;'), $toCharArray('harr;'), $toCharArray('harrcir;'), $toCharArray('harrw;'), $toCharArray('hbar;'), $toCharArray('hcirc;'), $toCharArray('hearts;'), $toCharArray('heartsuit;'), $toCharArray('hellip;'), $toCharArray('hercon;'), $toCharArray('hfr;'), $toCharArray('hksearow;'), $toCharArray('hkswarow;'), $toCharArray('hoarr;'), $toCharArray('homtht;'), $toCharArray('hookleftarrow;'), $toCharArray('hookrightarrow;'), $toCharArray('hopf;'), $toCharArray('horbar;'), $toCharArray('hscr;'), $toCharArray('hslash;'), $toCharArray('hstrok;'), $toCharArray('hybull;'), $toCharArray('hyphen;'), $toCharArray('iacute'), $toCharArray('iacute;'), $toCharArray('ic;'), $toCharArray('icirc'), $toCharArray('icirc;'), $toCharArray('icy;'), $toCharArray('iecy;'), $toCharArray('iexcl'), $toCharArray('iexcl;'), $toCharArray('iff;'), $toCharArray('ifr;'), $toCharArray('igrave'), $toCharArray('igrave;'), $toCharArray('ii;'), $toCharArray('iiiint;'), $toCharArray('iiint;'), $toCharArray('iinfin;'), $toCharArray('iiota;'), $toCharArray('ijlig;'), $toCharArray('imacr;'), $toCharArray('image;'), $toCharArray('imagline;'), $toCharArray('imagpart;'), $toCharArray('imath;'), $toCharArray('imof;'), $toCharArray('imped;'), $toCharArray('in;'), $toCharArray('incare;'), $toCharArray('infin;'), $toCharArray('infintie;'), $toCharArray('inodot;'), $toCharArray('int;'), $toCharArray('intcal;'), $toCharArray('integers;'), $toCharArray('intercal;'), $toCharArray('intlarhk;'), $toCharArray('intprod;'), $toCharArray('iocy;'), $toCharArray('iogon;'), $toCharArray('iopf;'), $toCharArray('iota;'), $toCharArray('iprod;'), $toCharArray('iquest'), $toCharArray('iquest;'), $toCharArray('iscr;'), $toCharArray('isin;'), $toCharArray('isinE;'), $toCharArray('isindot;'), $toCharArray('isins;'), $toCharArray('isinsv;'), $toCharArray('isinv;'), $toCharArray('it;'), $toCharArray('itilde;'), $toCharArray('iukcy;'), $toCharArray('iuml'), $toCharArray('iuml;'), $toCharArray('jcirc;'), $toCharArray('jcy;'), $toCharArray('jfr;'), $toCharArray('jmath;'), $toCharArray('jopf;'), $toCharArray('jscr;'), $toCharArray('jsercy;'), $toCharArray('jukcy;'), $toCharArray('kappa;'), $toCharArray('kappav;'), $toCharArray('kcedil;'), $toCharArray('kcy;'), $toCharArray('kfr;'), $toCharArray('kgreen;'), $toCharArray('khcy;'), $toCharArray('kjcy;'), $toCharArray('kopf;'), $toCharArray('kscr;'), $toCharArray('lAarr;'), $toCharArray('lArr;'), $toCharArray('lAtail;'), $toCharArray('lBarr;'), $toCharArray('lE;'), $toCharArray('lEg;'), $toCharArray('lHar;'), $toCharArray('lacute;'), $toCharArray('laemptyv;'), $toCharArray('lagran;'), $toCharArray('lambda;'), $toCharArray('lang;'), $toCharArray('langd;'), $toCharArray('langle;'), $toCharArray('lap;'), $toCharArray('laquo'), $toCharArray('laquo;'), $toCharArray('larr;'), $toCharArray('larrb;'), $toCharArray('larrbfs;'), $toCharArray('larrfs;'), $toCharArray('larrhk;'), $toCharArray('larrlp;'), $toCharArray('larrpl;'), $toCharArray('larrsim;'), $toCharArray('larrtl;'), $toCharArray('lat;'), $toCharArray('latail;'), $toCharArray('late;'), $toCharArray('lbarr;'), $toCharArray('lbbrk;'), $toCharArray('lbrace;'), $toCharArray('lbrack;'), $toCharArray('lbrke;'), $toCharArray('lbrksld;'), $toCharArray('lbrkslu;'), $toCharArray('lcaron;'), $toCharArray('lcedil;'), $toCharArray('lceil;'), $toCharArray('lcub;'), $toCharArray('lcy;'), $toCharArray('ldca;'), $toCharArray('ldquo;'), $toCharArray('ldquor;'), $toCharArray('ldrdhar;'), $toCharArray('ldrushar;'), $toCharArray('ldsh;'), $toCharArray('le;'), $toCharArray('leftarrow;'), $toCharArray('leftarrowtail;'), $toCharArray('leftharpoondown;'), $toCharArray('leftharpoonup;'), $toCharArray('leftleftarrows;'), $toCharArray('leftrightarrow;'), $toCharArray('leftrightarrows;'), $toCharArray('leftrightharpoons;'), $toCharArray('leftrightsquigarrow;'), $toCharArray('leftthreetimes;'), $toCharArray('leg;'), $toCharArray('leq;'), $toCharArray('leqq;'), $toCharArray('leqslant;'), $toCharArray('les;'), $toCharArray('lescc;'), $toCharArray('lesdot;'), $toCharArray('lesdoto;'), $toCharArray('lesdotor;'), $toCharArray('lesges;'), $toCharArray('lessapprox;'), $toCharArray('lessdot;'), $toCharArray('lesseqgtr;'), $toCharArray('lesseqqgtr;'), $toCharArray('lessgtr;'), $toCharArray('lesssim;'), $toCharArray('lfisht;'), $toCharArray('lfloor;'), $toCharArray('lfr;'), $toCharArray('lg;'), $toCharArray('lgE;'), $toCharArray('lhard;'), $toCharArray('lharu;'), $toCharArray('lharul;'), $toCharArray('lhblk;'), $toCharArray('ljcy;'), $toCharArray('ll;'), $toCharArray('llarr;'), $toCharArray('llcorner;'), $toCharArray('llhard;'), $toCharArray('lltri;'), $toCharArray('lmidot;'), $toCharArray('lmoust;'), $toCharArray('lmoustache;'), $toCharArray('lnE;'), $toCharArray('lnap;'), $toCharArray('lnapprox;'), $toCharArray('lne;'), $toCharArray('lneq;'), $toCharArray('lneqq;'), $toCharArray('lnsim;'), $toCharArray('loang;'), $toCharArray('loarr;'), $toCharArray('lobrk;'), $toCharArray('longleftarrow;'), $toCharArray('longleftrightarrow;'), $toCharArray('longmapsto;'), $toCharArray('longrightarrow;'), $toCharArray('looparrowleft;'), $toCharArray('looparrowright;'), $toCharArray('lopar;'), $toCharArray('lopf;'), $toCharArray('loplus;'), $toCharArray('lotimes;'), $toCharArray('lowast;'), $toCharArray('lowbar;'), $toCharArray('loz;'), $toCharArray('lozenge;'), $toCharArray('lozf;'), $toCharArray('lpar;'), $toCharArray('lparlt;'), $toCharArray('lrarr;'), $toCharArray('lrcorner;'), $toCharArray('lrhar;'), $toCharArray('lrhard;'), $toCharArray('lrm;'), $toCharArray('lrtri;'), $toCharArray('lsaquo;'), $toCharArray('lscr;'), $toCharArray('lsh;'), $toCharArray('lsim;'), $toCharArray('lsime;'), $toCharArray('lsimg;'), $toCharArray('lsqb;'), $toCharArray('lsquo;'), $toCharArray('lsquor;'), $toCharArray('lstrok;'), $toCharArray('lt'), $toCharArray('lt;'), $toCharArray('ltcc;'), $toCharArray('ltcir;'), $toCharArray('ltdot;'), $toCharArray('lthree;'), $toCharArray('ltimes;'), $toCharArray('ltlarr;'), $toCharArray('ltquest;'), $toCharArray('ltrPar;'), $toCharArray('ltri;'), $toCharArray('ltrie;'), $toCharArray('ltrif;'), $toCharArray('lurdshar;'), $toCharArray('luruhar;'), $toCharArray('mDDot;'), $toCharArray('macr'), $toCharArray('macr;'), $toCharArray('male;'), $toCharArray('malt;'), $toCharArray('maltese;'), $toCharArray('map;'), $toCharArray('mapsto;'), $toCharArray('mapstodown;'), $toCharArray('mapstoleft;'), $toCharArray('mapstoup;'), $toCharArray('marker;'), $toCharArray('mcomma;'), $toCharArray('mcy;'), $toCharArray('mdash;'), $toCharArray('measuredangle;'), $toCharArray('mfr;'), $toCharArray('mho;'), $toCharArray('micro'), $toCharArray('micro;'), $toCharArray('mid;'), $toCharArray('midast;'), $toCharArray('midcir;'), $toCharArray('middot'), $toCharArray('middot;'), $toCharArray('minus;'), $toCharArray('minusb;'), $toCharArray('minusd;'), $toCharArray('minusdu;'), $toCharArray('mlcp;'), $toCharArray('mldr;'), $toCharArray('mnplus;'), $toCharArray('models;'), $toCharArray('mopf;'), $toCharArray('mp;'), $toCharArray('mscr;'), $toCharArray('mstpos;'), $toCharArray('mu;'), $toCharArray('multimap;'), $toCharArray('mumap;'), $toCharArray('nLeftarrow;'), $toCharArray('nLeftrightarrow;'), $toCharArray('nRightarrow;'), $toCharArray('nVDash;'), $toCharArray('nVdash;'), $toCharArray('nabla;'), $toCharArray('nacute;'), $toCharArray('nap;'), $toCharArray('napos;'), $toCharArray('napprox;'), $toCharArray('natur;'), $toCharArray('natural;'), $toCharArray('naturals;'), $toCharArray('nbsp'), $toCharArray('nbsp;'), $toCharArray('ncap;'), $toCharArray('ncaron;'), $toCharArray('ncedil;'), $toCharArray('ncong;'), $toCharArray('ncup;'), $toCharArray('ncy;'), $toCharArray('ndash;'), $toCharArray('ne;'), $toCharArray('neArr;'), $toCharArray('nearhk;'), $toCharArray('nearr;'), $toCharArray('nearrow;'), $toCharArray('nequiv;'), $toCharArray('nesear;'), $toCharArray('nexist;'), $toCharArray('nexists;'), $toCharArray('nfr;'), $toCharArray('nge;'), $toCharArray('ngeq;'), $toCharArray('ngsim;'), $toCharArray('ngt;'), $toCharArray('ngtr;'), $toCharArray('nhArr;'), $toCharArray('nharr;'), $toCharArray('nhpar;'), $toCharArray('ni;'), $toCharArray('nis;'), $toCharArray('nisd;'), $toCharArray('niv;'), $toCharArray('njcy;'), $toCharArray('nlArr;'), $toCharArray('nlarr;'), $toCharArray('nldr;'), $toCharArray('nle;'), $toCharArray('nleftarrow;'), $toCharArray('nleftrightarrow;'), $toCharArray('nleq;'), $toCharArray('nless;'), $toCharArray('nlsim;'), $toCharArray('nlt;'), $toCharArray('nltri;'), $toCharArray('nltrie;'), $toCharArray('nmid;'), $toCharArray('nopf;'), $toCharArray('not'), $toCharArray('not;'), $toCharArray('notin;'), $toCharArray('notinva;'), $toCharArray('notinvb;'), $toCharArray('notinvc;'), $toCharArray('notni;'), $toCharArray('notniva;'), $toCharArray('notnivb;'), $toCharArray('notnivc;'), $toCharArray('npar;'), $toCharArray('nparallel;'), $toCharArray('npolint;'), $toCharArray('npr;'), $toCharArray('nprcue;'), $toCharArray('nprec;'), $toCharArray('nrArr;'), $toCharArray('nrarr;'), $toCharArray('nrightarrow;'), $toCharArray('nrtri;'), $toCharArray('nrtrie;'), $toCharArray('nsc;'), $toCharArray('nsccue;'), $toCharArray('nscr;'), $toCharArray('nshortmid;'), $toCharArray('nshortparallel;'), $toCharArray('nsim;'), $toCharArray('nsime;'), $toCharArray('nsimeq;'), $toCharArray('nsmid;'), $toCharArray('nspar;'), $toCharArray('nsqsube;'), $toCharArray('nsqsupe;'), $toCharArray('nsub;'), $toCharArray('nsube;'), $toCharArray('nsubseteq;'), $toCharArray('nsucc;'), $toCharArray('nsup;'), $toCharArray('nsupe;'), $toCharArray('nsupseteq;'), $toCharArray('ntgl;'), $toCharArray('ntilde'), $toCharArray('ntilde;'), $toCharArray('ntlg;'), $toCharArray('ntriangleleft;'), $toCharArray('ntrianglelefteq;'), $toCharArray('ntriangleright;'), $toCharArray('ntrianglerighteq;'), $toCharArray('nu;'), $toCharArray('num;'), $toCharArray('numero;'), $toCharArray('numsp;'), $toCharArray('nvDash;'), $toCharArray('nvHarr;'), $toCharArray('nvdash;'), $toCharArray('nvinfin;'), $toCharArray('nvlArr;'), $toCharArray('nvrArr;'), $toCharArray('nwArr;'), $toCharArray('nwarhk;'), $toCharArray('nwarr;'), $toCharArray('nwarrow;'), $toCharArray('nwnear;'), $toCharArray('oS;'), $toCharArray('oacute'), $toCharArray('oacute;'), $toCharArray('oast;'), $toCharArray('ocir;'), $toCharArray('ocirc'), $toCharArray('ocirc;'), $toCharArray('ocy;'), $toCharArray('odash;'), $toCharArray('odblac;'), $toCharArray('odiv;'), $toCharArray('odot;'), $toCharArray('odsold;'), $toCharArray('oelig;'), $toCharArray('ofcir;'), $toCharArray('ofr;'), $toCharArray('ogon;'), $toCharArray('ograve'), $toCharArray('ograve;'), $toCharArray('ogt;'), $toCharArray('ohbar;'), $toCharArray('ohm;'), $toCharArray('oint;'), $toCharArray('olarr;'), $toCharArray('olcir;'), $toCharArray('olcross;'), $toCharArray('oline;'), $toCharArray('olt;'), $toCharArray('omacr;'), $toCharArray('omega;'), $toCharArray('omicron;'), $toCharArray('omid;'), $toCharArray('ominus;'), $toCharArray('oopf;'), $toCharArray('opar;'), $toCharArray('operp;'), $toCharArray('oplus;'), $toCharArray('or;'), $toCharArray('orarr;'), $toCharArray('ord;'), $toCharArray('order;'), $toCharArray('orderof;'), $toCharArray('ordf'), $toCharArray('ordf;'), $toCharArray('ordm'), $toCharArray('ordm;'), $toCharArray('origof;'), $toCharArray('oror;'), $toCharArray('orslope;'), $toCharArray('orv;'), $toCharArray('oscr;'), $toCharArray('oslash'), $toCharArray('oslash;'), $toCharArray('osol;'), $toCharArray('otilde'), $toCharArray('otilde;'), $toCharArray('otimes;'), $toCharArray('otimesas;'), $toCharArray('ouml'), $toCharArray('ouml;'), $toCharArray('ovbar;'), $toCharArray('par;'), $toCharArray('para'), $toCharArray('para;'), $toCharArray('parallel;'), $toCharArray('parsim;'), $toCharArray('parsl;'), $toCharArray('part;'), $toCharArray('pcy;'), $toCharArray('percnt;'), $toCharArray('period;'), $toCharArray('permil;'), $toCharArray('perp;'), $toCharArray('pertenk;'), $toCharArray('pfr;'), $toCharArray('phi;'), $toCharArray('phiv;'), $toCharArray('phmmat;'), $toCharArray('phone;'), $toCharArray('pi;'), $toCharArray('pitchfork;'), $toCharArray('piv;'), $toCharArray('planck;'), $toCharArray('planckh;'), $toCharArray('plankv;'), $toCharArray('plus;'), $toCharArray('plusacir;'), $toCharArray('plusb;'), $toCharArray('pluscir;'), $toCharArray('plusdo;'), $toCharArray('plusdu;'), $toCharArray('pluse;'), $toCharArray('plusmn'), $toCharArray('plusmn;'), $toCharArray('plussim;'), $toCharArray('plustwo;'), $toCharArray('pm;'), $toCharArray('pointint;'), $toCharArray('popf;'), $toCharArray('pound'), $toCharArray('pound;'), $toCharArray('pr;'), $toCharArray('prE;'), $toCharArray('prap;'), $toCharArray('prcue;'), $toCharArray('pre;'), $toCharArray('prec;'), $toCharArray('precapprox;'), $toCharArray('preccurlyeq;'), $toCharArray('preceq;'), $toCharArray('precnapprox;'), $toCharArray('precneqq;'), $toCharArray('precnsim;'), $toCharArray('precsim;'), $toCharArray('prime;'), $toCharArray('primes;'), $toCharArray('prnE;'), $toCharArray('prnap;'), $toCharArray('prnsim;'), $toCharArray('prod;'), $toCharArray('profalar;'), $toCharArray('profline;'), $toCharArray('profsurf;'), $toCharArray('prop;'), $toCharArray('propto;'), $toCharArray('prsim;'), $toCharArray('prurel;'), $toCharArray('pscr;'), $toCharArray('psi;'), $toCharArray('puncsp;'), $toCharArray('qfr;'), $toCharArray('qint;'), $toCharArray('qopf;'), $toCharArray('qprime;'), $toCharArray('qscr;'), $toCharArray('quaternions;'), $toCharArray('quatint;'), $toCharArray('quest;'), $toCharArray('questeq;'), $toCharArray('quot'), $toCharArray('quot;'), $toCharArray('rAarr;'), $toCharArray('rArr;'), $toCharArray('rAtail;'), $toCharArray('rBarr;'), $toCharArray('rHar;'), $toCharArray('race;'), $toCharArray('racute;'), $toCharArray('radic;'), $toCharArray('raemptyv;'), $toCharArray('rang;'), $toCharArray('rangd;'), $toCharArray('range;'), $toCharArray('rangle;'), $toCharArray('raquo'), $toCharArray('raquo;'), $toCharArray('rarr;'), $toCharArray('rarrap;'), $toCharArray('rarrb;'), $toCharArray('rarrbfs;'), $toCharArray('rarrc;'), $toCharArray('rarrfs;'), $toCharArray('rarrhk;'), $toCharArray('rarrlp;'), $toCharArray('rarrpl;'), $toCharArray('rarrsim;'), $toCharArray('rarrtl;'), $toCharArray('rarrw;'), $toCharArray('ratail;'), $toCharArray('ratio;'), $toCharArray('rationals;'), $toCharArray('rbarr;'), $toCharArray('rbbrk;'), $toCharArray('rbrace;'), $toCharArray('rbrack;'), $toCharArray('rbrke;'), $toCharArray('rbrksld;'), $toCharArray('rbrkslu;'), $toCharArray('rcaron;'), $toCharArray('rcedil;'), $toCharArray('rceil;'), $toCharArray('rcub;'), $toCharArray('rcy;'), $toCharArray('rdca;'), $toCharArray('rdldhar;'), $toCharArray('rdquo;'), $toCharArray('rdquor;'), $toCharArray('rdsh;'), $toCharArray('real;'), $toCharArray('realine;'), $toCharArray('realpart;'), $toCharArray('reals;'), $toCharArray('rect;'), $toCharArray('reg'), $toCharArray('reg;'), $toCharArray('rfisht;'), $toCharArray('rfloor;'), $toCharArray('rfr;'), $toCharArray('rhard;'), $toCharArray('rharu;'), $toCharArray('rharul;'), $toCharArray('rho;'), $toCharArray('rhov;'), $toCharArray('rightarrow;'), $toCharArray('rightarrowtail;'), $toCharArray('rightharpoondown;'), $toCharArray('rightharpoonup;'), $toCharArray('rightleftarrows;'), $toCharArray('rightleftharpoons;'), $toCharArray('rightrightarrows;'), $toCharArray('rightsquigarrow;'), $toCharArray('rightthreetimes;'), $toCharArray('ring;'), $toCharArray('risingdotseq;'), $toCharArray('rlarr;'), $toCharArray('rlhar;'), $toCharArray('rlm;'), $toCharArray('rmoust;'), $toCharArray('rmoustache;'), $toCharArray('rnmid;'), $toCharArray('roang;'), $toCharArray('roarr;'), $toCharArray('robrk;'), $toCharArray('ropar;'), $toCharArray('ropf;'), $toCharArray('roplus;'), $toCharArray('rotimes;'), $toCharArray('rpar;'), $toCharArray('rpargt;'), $toCharArray('rppolint;'), $toCharArray('rrarr;'), $toCharArray('rsaquo;'), $toCharArray('rscr;'), $toCharArray('rsh;'), $toCharArray('rsqb;'), $toCharArray('rsquo;'), $toCharArray('rsquor;'), $toCharArray('rthree;'), $toCharArray('rtimes;'), $toCharArray('rtri;'), $toCharArray('rtrie;'), $toCharArray('rtrif;'), $toCharArray('rtriltri;'), $toCharArray('ruluhar;'), $toCharArray('rx;'), $toCharArray('sacute;'), $toCharArray('sbquo;'), $toCharArray('sc;'), $toCharArray('scE;'), $toCharArray('scap;'), $toCharArray('scaron;'), $toCharArray('sccue;'), $toCharArray('sce;'), $toCharArray('scedil;'), $toCharArray('scirc;'), $toCharArray('scnE;'), $toCharArray('scnap;'), $toCharArray('scnsim;'), $toCharArray('scpolint;'), $toCharArray('scsim;'), $toCharArray('scy;'), $toCharArray('sdot;'), $toCharArray('sdotb;'), $toCharArray('sdote;'), $toCharArray('seArr;'), $toCharArray('searhk;'), $toCharArray('searr;'), $toCharArray('searrow;'), $toCharArray('sect'), $toCharArray('sect;'), $toCharArray('semi;'), $toCharArray('seswar;'), $toCharArray('setminus;'), $toCharArray('setmn;'), $toCharArray('sext;'), $toCharArray('sfr;'), $toCharArray('sfrown;'), $toCharArray('sharp;'), $toCharArray('shchcy;'), $toCharArray('shcy;'), $toCharArray('shortmid;'), $toCharArray('shortparallel;'), $toCharArray('shy'), $toCharArray('shy;'), $toCharArray('sigma;'), $toCharArray('sigmaf;'), $toCharArray('sigmav;'), $toCharArray('sim;'), $toCharArray('simdot;'), $toCharArray('sime;'), $toCharArray('simeq;'), $toCharArray('simg;'), $toCharArray('simgE;'), $toCharArray('siml;'), $toCharArray('simlE;'), $toCharArray('simne;'), $toCharArray('simplus;'), $toCharArray('simrarr;'), $toCharArray('slarr;'), $toCharArray('smallsetminus;'), $toCharArray('smashp;'), $toCharArray('smeparsl;'), $toCharArray('smid;'), $toCharArray('smile;'), $toCharArray('smt;'), $toCharArray('smte;'), $toCharArray('softcy;'), $toCharArray('sol;'), $toCharArray('solb;'), $toCharArray('solbar;'), $toCharArray('sopf;'), $toCharArray('spades;'), $toCharArray('spadesuit;'), $toCharArray('spar;'), $toCharArray('sqcap;'), $toCharArray('sqcup;'), $toCharArray('sqsub;'), $toCharArray('sqsube;'), $toCharArray('sqsubset;'), $toCharArray('sqsubseteq;'), $toCharArray('sqsup;'), $toCharArray('sqsupe;'), $toCharArray('sqsupset;'), $toCharArray('sqsupseteq;'), $toCharArray('squ;'), $toCharArray('square;'), $toCharArray('squarf;'), $toCharArray('squf;'), $toCharArray('srarr;'), $toCharArray('sscr;'), $toCharArray('ssetmn;'), $toCharArray('ssmile;'), $toCharArray('sstarf;'), $toCharArray('star;'), $toCharArray('starf;'), $toCharArray('straightepsilon;'), $toCharArray('straightphi;'), $toCharArray('strns;'), $toCharArray('sub;'), $toCharArray('subE;'), $toCharArray('subdot;'), $toCharArray('sube;'), $toCharArray('subedot;'), $toCharArray('submult;'), $toCharArray('subnE;'), $toCharArray('subne;'), $toCharArray('subplus;'), $toCharArray('subrarr;'), $toCharArray('subset;'), $toCharArray('subseteq;'), $toCharArray('subseteqq;'), $toCharArray('subsetneq;'), $toCharArray('subsetneqq;'), $toCharArray('subsim;'), $toCharArray('subsub;'), $toCharArray('subsup;'), $toCharArray('succ;'), $toCharArray('succapprox;'), $toCharArray('succcurlyeq;'), $toCharArray('succeq;'), $toCharArray('succnapprox;'), $toCharArray('succneqq;'), $toCharArray('succnsim;'), $toCharArray('succsim;'), $toCharArray('sum;'), $toCharArray('sung;'), $toCharArray('sup1'), $toCharArray('sup1;'), $toCharArray('sup2'), $toCharArray('sup2;'), $toCharArray('sup3'), $toCharArray('sup3;'), $toCharArray('sup;'), $toCharArray('supE;'), $toCharArray('supdot;'), $toCharArray('supdsub;'), $toCharArray('supe;'), $toCharArray('supedot;'), $toCharArray('suphsub;'), $toCharArray('suplarr;'), $toCharArray('supmult;'), $toCharArray('supnE;'), $toCharArray('supne;'), $toCharArray('supplus;'), $toCharArray('supset;'), $toCharArray('supseteq;'), $toCharArray('supseteqq;'), $toCharArray('supsetneq;'), $toCharArray('supsetneqq;'), $toCharArray('supsim;'), $toCharArray('supsub;'), $toCharArray('supsup;'), $toCharArray('swArr;'), $toCharArray('swarhk;'), $toCharArray('swarr;'), $toCharArray('swarrow;'), $toCharArray('swnwar;'), $toCharArray('szlig'), $toCharArray('szlig;'), $toCharArray('target;'), $toCharArray('tau;'), $toCharArray('tbrk;'), $toCharArray('tcaron;'), $toCharArray('tcedil;'), $toCharArray('tcy;'), $toCharArray('tdot;'), $toCharArray('telrec;'), $toCharArray('tfr;'), $toCharArray('there4;'), $toCharArray('therefore;'), $toCharArray('theta;'), $toCharArray('thetasym;'), $toCharArray('thetav;'), $toCharArray('thickapprox;'), $toCharArray('thicksim;'), $toCharArray('thinsp;'), $toCharArray('thkap;'), $toCharArray('thksim;'), $toCharArray('thorn'), $toCharArray('thorn;'), $toCharArray('tilde;'), $toCharArray('times'), $toCharArray('times;'), $toCharArray('timesb;'), $toCharArray('timesbar;'), $toCharArray('timesd;'), $toCharArray('tint;'), $toCharArray('toea;'), $toCharArray('top;'), $toCharArray('topbot;'), $toCharArray('topcir;'), $toCharArray('topf;'), $toCharArray('topfork;'), $toCharArray('tosa;'), $toCharArray('tprime;'), $toCharArray('trade;'), $toCharArray('triangle;'), $toCharArray('triangledown;'), $toCharArray('triangleleft;'), $toCharArray('trianglelefteq;'), $toCharArray('triangleq;'), $toCharArray('triangleright;'), $toCharArray('trianglerighteq;'), $toCharArray('tridot;'), $toCharArray('trie;'), $toCharArray('triminus;'), $toCharArray('triplus;'), $toCharArray('trisb;'), $toCharArray('tritime;'), $toCharArray('trpezium;'), $toCharArray('tscr;'), $toCharArray('tscy;'), $toCharArray('tshcy;'), $toCharArray('tstrok;'), $toCharArray('twixt;'), $toCharArray('twoheadleftarrow;'), $toCharArray('twoheadrightarrow;'), $toCharArray('uArr;'), $toCharArray('uHar;'), $toCharArray('uacute'), $toCharArray('uacute;'), $toCharArray('uarr;'), $toCharArray('ubrcy;'), $toCharArray('ubreve;'), $toCharArray('ucirc'), $toCharArray('ucirc;'), $toCharArray('ucy;'), $toCharArray('udarr;'), $toCharArray('udblac;'), $toCharArray('udhar;'), $toCharArray('ufisht;'), $toCharArray('ufr;'), $toCharArray('ugrave'), $toCharArray('ugrave;'), $toCharArray('uharl;'), $toCharArray('uharr;'), $toCharArray('uhblk;'), $toCharArray('ulcorn;'), $toCharArray('ulcorner;'), $toCharArray('ulcrop;'), $toCharArray('ultri;'), $toCharArray('umacr;'), $toCharArray('uml'), $toCharArray('uml;'), $toCharArray('uogon;'), $toCharArray('uopf;'), $toCharArray('uparrow;'), $toCharArray('updownarrow;'), $toCharArray('upharpoonleft;'), $toCharArray('upharpoonright;'), $toCharArray('uplus;'), $toCharArray('upsi;'), $toCharArray('upsih;'), $toCharArray('upsilon;'), $toCharArray('upuparrows;'), $toCharArray('urcorn;'), $toCharArray('urcorner;'), $toCharArray('urcrop;'), $toCharArray('uring;'), $toCharArray('urtri;'), $toCharArray('uscr;'), $toCharArray('utdot;'), $toCharArray('utilde;'), $toCharArray('utri;'), $toCharArray('utrif;'), $toCharArray('uuarr;'), $toCharArray('uuml'), $toCharArray('uuml;'), $toCharArray('uwangle;'), $toCharArray('vArr;'), $toCharArray('vBar;'), $toCharArray('vBarv;'), $toCharArray('vDash;'), $toCharArray('vangrt;'), $toCharArray('varepsilon;'), $toCharArray('varkappa;'), $toCharArray('varnothing;'), $toCharArray('varphi;'), $toCharArray('varpi;'), $toCharArray('varpropto;'), $toCharArray('varr;'), $toCharArray('varrho;'), $toCharArray('varsigma;'), $toCharArray('vartheta;'), $toCharArray('vartriangleleft;'), $toCharArray('vartriangleright;'), $toCharArray('vcy;'), $toCharArray('vdash;'), $toCharArray('vee;'), $toCharArray('veebar;'), $toCharArray('veeeq;'), $toCharArray('vellip;'), $toCharArray('verbar;'), $toCharArray('vert;'), $toCharArray('vfr;'), $toCharArray('vltri;'), $toCharArray('vopf;'), $toCharArray('vprop;'), $toCharArray('vrtri;'), $toCharArray('vscr;'), $toCharArray('vzigzag;'), $toCharArray('wcirc;'), $toCharArray('wedbar;'), $toCharArray('wedge;'), $toCharArray('wedgeq;'), $toCharArray('weierp;'), $toCharArray('wfr;'), $toCharArray('wopf;'), $toCharArray('wp;'), $toCharArray('wr;'), $toCharArray('wreath;'), $toCharArray('wscr;'), $toCharArray('xcap;'), $toCharArray('xcirc;'), $toCharArray('xcup;'), $toCharArray('xdtri;'), $toCharArray('xfr;'), $toCharArray('xhArr;'), $toCharArray('xharr;'), $toCharArray('xi;'), $toCharArray('xlArr;'), $toCharArray('xlarr;'), $toCharArray('xmap;'), $toCharArray('xnis;'), $toCharArray('xodot;'), $toCharArray('xopf;'), $toCharArray('xoplus;'), $toCharArray('xotime;'), $toCharArray('xrArr;'), $toCharArray('xrarr;'), $toCharArray('xscr;'), $toCharArray('xsqcup;'), $toCharArray('xuplus;'), $toCharArray('xutri;'), $toCharArray('xvee;'), $toCharArray('xwedge;'), $toCharArray('yacute'), $toCharArray('yacute;'), $toCharArray('yacy;'), $toCharArray('ycirc;'), $toCharArray('ycy;'), $toCharArray('yen'), $toCharArray('yen;'), $toCharArray('yfr;'), $toCharArray('yicy;'), $toCharArray('yopf;'), $toCharArray('yscr;'), $toCharArray('yucy;'), $toCharArray('yuml'), $toCharArray('yuml;'), $toCharArray('zacute;'), $toCharArray('zcaron;'), $toCharArray('zcy;'), $toCharArray('zdot;'), $toCharArray('zeetrf;'), $toCharArray('zeta;'), $toCharArray('zfr;'), $toCharArray('zhcy;'), $toCharArray('zigrarr;'), $toCharArray('zopf;'), $toCharArray('zscr;'), $toCharArray('zwj;'), $toCharArray('zwnj;')]);
1.21715 + VALUES_0 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [258]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [1040]), initValues(_3C_classLit, 42, -1, [55349, 56580]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [913]), initValues(_3C_classLit, 42, -1, [256]), initValues(_3C_classLit, 42, -1, [10835]), initValues(_3C_classLit, 42, -1, [260]), initValues(_3C_classLit, 42, -1, [55349, 56632]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [55349, 56476]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10983]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [1041]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [914]), initValues(_3C_classLit, 42, -1, [55349, 56581]), initValues(_3C_classLit, 42, -1, [55349, 56633]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [1063]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [262]), initValues(_3C_classLit, 42, -1, [8914]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [268]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [264]), initValues(_3C_classLit, 42, -1, [8752]), initValues(_3C_classLit, 42, -1, [266]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [935]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [10868]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10799]), initValues(_3C_classLit, 42, -1, [55349, 56478]), initValues(_3C_classLit, 42, -1, [8915]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [10513]), initValues(_3C_classLit, 42, -1, [1026]), initValues(_3C_classLit, 42, -1, [1029]), initValues(_3C_classLit, 42, -1, [1039]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8609]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [270]), initValues(_3C_classLit, 42, -1, [1044]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [916]), initValues(_3C_classLit, 42, -1, [55349, 56583]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [55349, 56635]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8412]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [10515]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [785]), initValues(_3C_classLit, 42, -1, [10576]), initValues(_3C_classLit, 42, -1, [10590]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [10582]), initValues(_3C_classLit, 42, -1, [10591]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [10583]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [55349, 56479]), initValues(_3C_classLit, 42, -1, [272]), initValues(_3C_classLit, 42, -1, [330]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [282]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [1069]), initValues(_3C_classLit, 42, -1, [278]), initValues(_3C_classLit, 42, -1, [55349, 56584]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [274]), initValues(_3C_classLit, 42, -1, [9723]), initValues(_3C_classLit, 42, -1, [9643]), initValues(_3C_classLit, 42, -1, [280]), initValues(_3C_classLit, 42, -1, [55349, 56636]), initValues(_3C_classLit, 42, -1, [917]), initValues(_3C_classLit, 42, -1, [10869]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [10867]), initValues(_3C_classLit, 42, -1, [919]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [1060]), initValues(_3C_classLit, 42, -1, [55349, 56585]), initValues(_3C_classLit, 42, -1, [9724]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [55349, 56637]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [1027]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [915]), initValues(_3C_classLit, 42, -1, [988]), initValues(_3C_classLit, 42, -1, [286]), initValues(_3C_classLit, 42, -1, [290]), initValues(_3C_classLit, 42, -1, [284]), initValues(_3C_classLit, 42, -1, [1043]), initValues(_3C_classLit, 42, -1, [288]), initValues(_3C_classLit, 42, -1, [55349, 56586]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [55349, 56638]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10914]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [55349, 56482]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [1066]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [94]), initValues(_3C_classLit, 42, -1, [292]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [294]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [1045]), initValues(_3C_classLit, 42, -1, [306]), initValues(_3C_classLit, 42, -1, [1025]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [1048]), initValues(_3C_classLit, 42, -1, [304]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [298]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8748]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [302]), initValues(_3C_classLit, 42, -1, [55349, 56640]), initValues(_3C_classLit, 42, -1, [921]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [296]), initValues(_3C_classLit, 42, -1, [1030]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [308]), initValues(_3C_classLit, 42, -1, [1049]), initValues(_3C_classLit, 42, -1, [55349, 56589]), initValues(_3C_classLit, 42, -1, [55349, 56641]), initValues(_3C_classLit, 42, -1, [55349, 56485]), initValues(_3C_classLit, 42, -1, [1032]), initValues(_3C_classLit, 42, -1, [1028]), initValues(_3C_classLit, 42, -1, [1061]), initValues(_3C_classLit, 42, -1, [1036]), initValues(_3C_classLit, 42, -1, [922]), initValues(_3C_classLit, 42, -1, [310]), initValues(_3C_classLit, 42, -1, [1050]), initValues(_3C_classLit, 42, -1, [55349, 56590]), initValues(_3C_classLit, 42, -1, [55349, 56642]), initValues(_3C_classLit, 42, -1, [55349, 56486]), initValues(_3C_classLit, 42, -1, [1033]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [313]), initValues(_3C_classLit, 42, -1, [923]), initValues(_3C_classLit, 42, -1, [10218]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [317]), initValues(_3C_classLit, 42, -1, [315]), initValues(_3C_classLit, 42, -1, [1051]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10593]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [10585]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10574]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [10586]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [10703]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [10577]), initValues(_3C_classLit, 42, -1, [10592]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [10584]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10578]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10913]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [55349, 56591]), initValues(_3C_classLit, 42, -1, [8920]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [319]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [55349, 56643]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [321]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10501]), initValues(_3C_classLit, 42, -1, [1052]), initValues(_3C_classLit, 42, -1, [8287]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [55349, 56592]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56644]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [924]), initValues(_3C_classLit, 42, -1, [1034]), initValues(_3C_classLit, 42, -1, [323]), initValues(_3C_classLit, 42, -1, [327]), initValues(_3C_classLit, 42, -1, [325]), initValues(_3C_classLit, 42, -1, [1053]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10]), initValues(_3C_classLit, 42, -1, [55349, 56593]), initValues(_3C_classLit, 42, -1, [8288]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [10988]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [8813]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56489]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [925]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [1054]), initValues(_3C_classLit, 42, -1, [336]), initValues(_3C_classLit, 42, -1, [55349, 56594]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [332]), initValues(_3C_classLit, 42, -1, [937]), initValues(_3C_classLit, 42, -1, [927]), initValues(_3C_classLit, 42, -1, [55349, 56646]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [10836]), initValues(_3C_classLit, 42, -1, [55349, 56490]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [10807]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9182]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [9180]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1055]), initValues(_3C_classLit, 42, -1, [55349, 56595]), initValues(_3C_classLit, 42, -1, [934]), initValues(_3C_classLit, 42, -1, [928]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10939]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8243]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [55349, 56491]), initValues(_3C_classLit, 42, -1, [936]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [55349, 56596]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [55349, 56492]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [340]), initValues(_3C_classLit, 42, -1, [10219]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [10518]), initValues(_3C_classLit, 42, -1, [344]), initValues(_3C_classLit, 42, -1, [342]), initValues(_3C_classLit, 42, -1, [1056]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [929]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10589]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10581]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [10587]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [10704]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [10575]), initValues(_3C_classLit, 42, -1, [10588]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [10580]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10579]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [10608]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [10740]), initValues(_3C_classLit, 42, -1, [1065]), initValues(_3C_classLit, 42, -1, [1064]), initValues(_3C_classLit, 42, -1, [1068]), initValues(_3C_classLit, 42, -1, [346]), initValues(_3C_classLit, 42, -1, [10940]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [350]), initValues(_3C_classLit, 42, -1, [348]), initValues(_3C_classLit, 42, -1, [1057]), initValues(_3C_classLit, 42, -1, [55349, 56598]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [931]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [55349, 56650]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [55349, 56494]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [1035]), initValues(_3C_classLit, 42, -1, [1062]), initValues(_3C_classLit, 42, -1, [9]), initValues(_3C_classLit, 42, -1, [932]), initValues(_3C_classLit, 42, -1, [356]), initValues(_3C_classLit, 42, -1, [354]), initValues(_3C_classLit, 42, -1, [1058]), initValues(_3C_classLit, 42, -1, [55349, 56599]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [920]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [55349, 56651]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [55349, 56495]), initValues(_3C_classLit, 42, -1, [358]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [8607]), initValues(_3C_classLit, 42, -1, [10569]), initValues(_3C_classLit, 42, -1, [1038]), initValues(_3C_classLit, 42, -1, [364]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [1059]), initValues(_3C_classLit, 42, -1, [368]), initValues(_3C_classLit, 42, -1, [55349, 56600]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [362]), initValues(_3C_classLit, 42, -1, [818]), initValues(_3C_classLit, 42, -1, [9183]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9181]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [370]), initValues(_3C_classLit, 42, -1, [55349, 56652]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [10514]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [933]), initValues(_3C_classLit, 42, -1, [366]), initValues(_3C_classLit, 42, -1, [55349, 56496]), initValues(_3C_classLit, 42, -1, [360]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [8875]), initValues(_3C_classLit, 42, -1, [10987]), initValues(_3C_classLit, 42, -1, [1042]), initValues(_3C_classLit, 42, -1, [8873]), initValues(_3C_classLit, 42, -1, [10982]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [10072]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [55349, 56601]), initValues(_3C_classLit, 42, -1, [55349, 56653]), initValues(_3C_classLit, 42, -1, [55349, 56497]), initValues(_3C_classLit, 42, -1, [8874]), initValues(_3C_classLit, 42, -1, [372]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [55349, 56602]), initValues(_3C_classLit, 42, -1, [55349, 56654]), initValues(_3C_classLit, 42, -1, [55349, 56498]), initValues(_3C_classLit, 42, -1, [55349, 56603]), initValues(_3C_classLit, 42, -1, [926]), initValues(_3C_classLit, 42, -1, [55349, 56655]), initValues(_3C_classLit, 42, -1, [55349, 56499]), initValues(_3C_classLit, 42, -1, [1071]), initValues(_3C_classLit, 42, -1, [1031]), initValues(_3C_classLit, 42, -1, [1070]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [374]), initValues(_3C_classLit, 42, -1, [1067]), initValues(_3C_classLit, 42, -1, [55349, 56604]), initValues(_3C_classLit, 42, -1, [55349, 56656]), initValues(_3C_classLit, 42, -1, [55349, 56500]), initValues(_3C_classLit, 42, -1, [376]), initValues(_3C_classLit, 42, -1, [1046]), initValues(_3C_classLit, 42, -1, [377]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [1047]), initValues(_3C_classLit, 42, -1, [379]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [918]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [55349, 56501]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [259]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [8767]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [1072]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [55349, 56606]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [945]), initValues(_3C_classLit, 42, -1, [257]), initValues(_3C_classLit, 42, -1, [10815]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [10837]), initValues(_3C_classLit, 42, -1, [10844]), initValues(_3C_classLit, 42, -1, [10840]), initValues(_3C_classLit, 42, -1, [10842]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [10660]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [10664]), initValues(_3C_classLit, 42, -1, [10665]), initValues(_3C_classLit, 42, -1, [10666]), initValues(_3C_classLit, 42, -1, [10667]), initValues(_3C_classLit, 42, -1, [10668]), initValues(_3C_classLit, 42, -1, [10669]), initValues(_3C_classLit, 42, -1, [10670]), initValues(_3C_classLit, 42, -1, [10671]), initValues(_3C_classLit, 42, -1, [8735]), initValues(_3C_classLit, 42, -1, [8894]), initValues(_3C_classLit, 42, -1, [10653]), initValues(_3C_classLit, 42, -1, [8738]), initValues(_3C_classLit, 42, -1, [8491]), initValues(_3C_classLit, 42, -1, [9084]), initValues(_3C_classLit, 42, -1, [261]), initValues(_3C_classLit, 42, -1, [55349, 56658]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [10864]), initValues(_3C_classLit, 42, -1, [10863]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [8779]), initValues(_3C_classLit, 42, -1, [39]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [55349, 56502]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10769]), initValues(_3C_classLit, 42, -1, [10989]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [8893]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9142]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1073]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [10672]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [946]), initValues(_3C_classLit, 42, -1, [8502]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [55349, 56607]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [9251]), initValues(_3C_classLit, 42, -1, [9618]), initValues(_3C_classLit, 42, -1, [9617]), initValues(_3C_classLit, 42, -1, [9619]), initValues(_3C_classLit, 42, -1, [9608]), initValues(_3C_classLit, 42, -1, [8976]), initValues(_3C_classLit, 42, -1, [55349, 56659]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8904]), initValues(_3C_classLit, 42, -1, [9559]), initValues(_3C_classLit, 42, -1, [9556]), initValues(_3C_classLit, 42, -1, [9558]), initValues(_3C_classLit, 42, -1, [9555]), initValues(_3C_classLit, 42, -1, [9552]), initValues(_3C_classLit, 42, -1, [9574]), initValues(_3C_classLit, 42, -1, [9577]), initValues(_3C_classLit, 42, -1, [9572]), initValues(_3C_classLit, 42, -1, [9575]), initValues(_3C_classLit, 42, -1, [9565]), initValues(_3C_classLit, 42, -1, [9562]), initValues(_3C_classLit, 42, -1, [9564]), initValues(_3C_classLit, 42, -1, [9561]), initValues(_3C_classLit, 42, -1, [9553]), initValues(_3C_classLit, 42, -1, [9580]), initValues(_3C_classLit, 42, -1, [9571]), initValues(_3C_classLit, 42, -1, [9568]), initValues(_3C_classLit, 42, -1, [9579]), initValues(_3C_classLit, 42, -1, [9570]), initValues(_3C_classLit, 42, -1, [9567]), initValues(_3C_classLit, 42, -1, [10697]), initValues(_3C_classLit, 42, -1, [9557]), initValues(_3C_classLit, 42, -1, [9554]), initValues(_3C_classLit, 42, -1, [9488]), initValues(_3C_classLit, 42, -1, [9484]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [9573]), initValues(_3C_classLit, 42, -1, [9576]), initValues(_3C_classLit, 42, -1, [9516]), initValues(_3C_classLit, 42, -1, [9524]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [9563]), initValues(_3C_classLit, 42, -1, [9560]), initValues(_3C_classLit, 42, -1, [9496]), initValues(_3C_classLit, 42, -1, [9492]), initValues(_3C_classLit, 42, -1, [9474]), initValues(_3C_classLit, 42, -1, [9578]), initValues(_3C_classLit, 42, -1, [9569]), initValues(_3C_classLit, 42, -1, [9566]), initValues(_3C_classLit, 42, -1, [9532]), initValues(_3C_classLit, 42, -1, [9508]), initValues(_3C_classLit, 42, -1, [9500]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [55349, 56503]), initValues(_3C_classLit, 42, -1, [8271]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [92]), initValues(_3C_classLit, 42, -1, [10693]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [10926]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [263]), initValues(_3C_classLit, 42, -1, [8745]), initValues(_3C_classLit, 42, -1, [10820]), initValues(_3C_classLit, 42, -1, [10825]), initValues(_3C_classLit, 42, -1, [10827]), initValues(_3C_classLit, 42, -1, [10823]), initValues(_3C_classLit, 42, -1, [10816]), initValues(_3C_classLit, 42, -1, [8257]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [10829]), initValues(_3C_classLit, 42, -1, [269]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [265]), initValues(_3C_classLit, 42, -1, [10828]), initValues(_3C_classLit, 42, -1, [10832]), initValues(_3C_classLit, 42, -1, [267]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [10674]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [55349, 56608]), initValues(_3C_classLit, 42, -1, [1095]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [967]), initValues(_3C_classLit, 42, -1, [9675]), initValues(_3C_classLit, 42, -1, [10691]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [10768]), initValues(_3C_classLit, 42, -1, [10991]), initValues(_3C_classLit, 42, -1, [10690]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [58]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [44]), initValues(_3C_classLit, 42, -1, [64]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [10861]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [55349, 56660]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [8471]), initValues(_3C_classLit, 42, -1, [8629]), initValues(_3C_classLit, 42, -1, [10007]), initValues(_3C_classLit, 42, -1, [55349, 56504]), initValues(_3C_classLit, 42, -1, [10959]), initValues(_3C_classLit, 42, -1, [10961]), initValues(_3C_classLit, 42, -1, [10960]), initValues(_3C_classLit, 42, -1, [10962]), initValues(_3C_classLit, 42, -1, [8943]), initValues(_3C_classLit, 42, -1, [10552]), initValues(_3C_classLit, 42, -1, [10549]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [10557]), initValues(_3C_classLit, 42, -1, [8746]), initValues(_3C_classLit, 42, -1, [10824]), initValues(_3C_classLit, 42, -1, [10822]), initValues(_3C_classLit, 42, -1, [10826]), initValues(_3C_classLit, 42, -1, [8845]), initValues(_3C_classLit, 42, -1, [10821]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [10556]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8753]), initValues(_3C_classLit, 42, -1, [9005]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [10597]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8504]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [271]), initValues(_3C_classLit, 42, -1, [1076]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [948]), initValues(_3C_classLit, 42, -1, [10673]), initValues(_3C_classLit, 42, -1, [10623]), initValues(_3C_classLit, 42, -1, [55349, 56609]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [8946]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [1106]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [8973]), initValues(_3C_classLit, 42, -1, [36]), initValues(_3C_classLit, 42, -1, [55349, 56661]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8972]), initValues(_3C_classLit, 42, -1, [55349, 56505]), initValues(_3C_classLit, 42, -1, [1109]), initValues(_3C_classLit, 42, -1, [10742]), initValues(_3C_classLit, 42, -1, [273]), initValues(_3C_classLit, 42, -1, [8945]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [10662]), initValues(_3C_classLit, 42, -1, [1119]), initValues(_3C_classLit, 42, -1, [10239]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [10862]), initValues(_3C_classLit, 42, -1, [283]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [1101]), initValues(_3C_classLit, 42, -1, [279]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [55349, 56610]), initValues(_3C_classLit, 42, -1, [10906]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10904]), initValues(_3C_classLit, 42, -1, [10905]), initValues(_3C_classLit, 42, -1, [9191]), initValues(_3C_classLit, 42, -1, [8467]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [10903]), initValues(_3C_classLit, 42, -1, [275]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8196]), initValues(_3C_classLit, 42, -1, [8197]), initValues(_3C_classLit, 42, -1, [8195]), initValues(_3C_classLit, 42, -1, [331]), initValues(_3C_classLit, 42, -1, [8194]), initValues(_3C_classLit, 42, -1, [281]), initValues(_3C_classLit, 42, -1, [55349, 56662]), initValues(_3C_classLit, 42, -1, [8917]), initValues(_3C_classLit, 42, -1, [10723]), initValues(_3C_classLit, 42, -1, [10865]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [61]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [10872]), initValues(_3C_classLit, 42, -1, [10725]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [10609]), initValues(_3C_classLit, 42, -1, [8495]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [951]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [33]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [1092]), initValues(_3C_classLit, 42, -1, [9792]), initValues(_3C_classLit, 42, -1, [64259]), initValues(_3C_classLit, 42, -1, [64256]), initValues(_3C_classLit, 42, -1, [64260]), initValues(_3C_classLit, 42, -1, [55349, 56611]), initValues(_3C_classLit, 42, -1, [64257]), initValues(_3C_classLit, 42, -1, [9837]), initValues(_3C_classLit, 42, -1, [64258]), initValues(_3C_classLit, 42, -1, [9649]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [55349, 56663]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [10969]), initValues(_3C_classLit, 42, -1, [10765]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8531]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [8533]), initValues(_3C_classLit, 42, -1, [8537]), initValues(_3C_classLit, 42, -1, [8539]), initValues(_3C_classLit, 42, -1, [8532]), initValues(_3C_classLit, 42, -1, [8534]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [8535]), initValues(_3C_classLit, 42, -1, [8540]), initValues(_3C_classLit, 42, -1, [8536]), initValues(_3C_classLit, 42, -1, [8538]), initValues(_3C_classLit, 42, -1, [8541]), initValues(_3C_classLit, 42, -1, [8542]), initValues(_3C_classLit, 42, -1, [8260]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [55349, 56507]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [501]), initValues(_3C_classLit, 42, -1, [947]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [287]), initValues(_3C_classLit, 42, -1, [285]), initValues(_3C_classLit, 42, -1, [1075]), initValues(_3C_classLit, 42, -1, [289]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10921]), initValues(_3C_classLit, 42, -1, [10880]), initValues(_3C_classLit, 42, -1, [10882]), initValues(_3C_classLit, 42, -1, [10884]), initValues(_3C_classLit, 42, -1, [10900]), initValues(_3C_classLit, 42, -1, [55349, 56612]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [8503]), initValues(_3C_classLit, 42, -1, [1107]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10898]), initValues(_3C_classLit, 42, -1, [10917]), initValues(_3C_classLit, 42, -1, [10916]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [8935]), initValues(_3C_classLit, 42, -1, [55349, 56664]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [8458]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [10894]), initValues(_3C_classLit, 42, -1, [10896]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [10919]), initValues(_3C_classLit, 42, -1, [10874]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [10645]), initValues(_3C_classLit, 42, -1, [10876]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [10616]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [1098]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10568]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [293]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8889]), initValues(_3C_classLit, 42, -1, [55349, 56613]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8703]), initValues(_3C_classLit, 42, -1, [8763]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [55349, 56665]), initValues(_3C_classLit, 42, -1, [8213]), initValues(_3C_classLit, 42, -1, [55349, 56509]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [295]), initValues(_3C_classLit, 42, -1, [8259]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [1080]), initValues(_3C_classLit, 42, -1, [1077]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [55349, 56614]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10716]), initValues(_3C_classLit, 42, -1, [8489]), initValues(_3C_classLit, 42, -1, [307]), initValues(_3C_classLit, 42, -1, [299]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8887]), initValues(_3C_classLit, 42, -1, [437]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8453]), initValues(_3C_classLit, 42, -1, [8734]), initValues(_3C_classLit, 42, -1, [10717]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [10775]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [1105]), initValues(_3C_classLit, 42, -1, [303]), initValues(_3C_classLit, 42, -1, [55349, 56666]), initValues(_3C_classLit, 42, -1, [953]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [55349, 56510]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8953]), initValues(_3C_classLit, 42, -1, [8949]), initValues(_3C_classLit, 42, -1, [8948]), initValues(_3C_classLit, 42, -1, [8947]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [297]), initValues(_3C_classLit, 42, -1, [1110]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [309]), initValues(_3C_classLit, 42, -1, [1081]), initValues(_3C_classLit, 42, -1, [55349, 56615]), initValues(_3C_classLit, 42, -1, [567]), initValues(_3C_classLit, 42, -1, [55349, 56667]), initValues(_3C_classLit, 42, -1, [55349, 56511]), initValues(_3C_classLit, 42, -1, [1112]), initValues(_3C_classLit, 42, -1, [1108]), initValues(_3C_classLit, 42, -1, [954]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [311]), initValues(_3C_classLit, 42, -1, [1082]), initValues(_3C_classLit, 42, -1, [55349, 56616]), initValues(_3C_classLit, 42, -1, [312]), initValues(_3C_classLit, 42, -1, [1093]), initValues(_3C_classLit, 42, -1, [1116]), initValues(_3C_classLit, 42, -1, [55349, 56668]), initValues(_3C_classLit, 42, -1, [55349, 56512]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [10523]), initValues(_3C_classLit, 42, -1, [10510]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [10594]), initValues(_3C_classLit, 42, -1, [314]), initValues(_3C_classLit, 42, -1, [10676]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [955]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10641]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [10527]), initValues(_3C_classLit, 42, -1, [10525]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [10553]), initValues(_3C_classLit, 42, -1, [10611]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [10923]), initValues(_3C_classLit, 42, -1, [10521]), initValues(_3C_classLit, 42, -1, [10925]), initValues(_3C_classLit, 42, -1, [10508]), initValues(_3C_classLit, 42, -1, [10098]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [10635]), initValues(_3C_classLit, 42, -1, [10639]), initValues(_3C_classLit, 42, -1, [10637]), initValues(_3C_classLit, 42, -1, [318]), initValues(_3C_classLit, 42, -1, [316]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [1083]), initValues(_3C_classLit, 42, -1, [10550]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [10599]), initValues(_3C_classLit, 42, -1, [10571]), initValues(_3C_classLit, 42, -1, [8626]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10920]), initValues(_3C_classLit, 42, -1, [10879]), initValues(_3C_classLit, 42, -1, [10881]), initValues(_3C_classLit, 42, -1, [10883]), initValues(_3C_classLit, 42, -1, [10899]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10620]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [55349, 56617]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10897]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10602]), initValues(_3C_classLit, 42, -1, [9604]), initValues(_3C_classLit, 42, -1, [1113]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [10603]), initValues(_3C_classLit, 42, -1, [9722]), initValues(_3C_classLit, 42, -1, [320]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [8934]), initValues(_3C_classLit, 42, -1, [10220]), initValues(_3C_classLit, 42, -1, [8701]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10629]), initValues(_3C_classLit, 42, -1, [55349, 56669]), initValues(_3C_classLit, 42, -1, [10797]), initValues(_3C_classLit, 42, -1, [10804]), initValues(_3C_classLit, 42, -1, [8727]), initValues(_3C_classLit, 42, -1, [95]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [40]), initValues(_3C_classLit, 42, -1, [10643]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10605]), initValues(_3C_classLit, 42, -1, [8206]), initValues(_3C_classLit, 42, -1, [8895]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [55349, 56513]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10893]), initValues(_3C_classLit, 42, -1, [10895]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [322]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [10918]), initValues(_3C_classLit, 42, -1, [10873]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8905]), initValues(_3C_classLit, 42, -1, [10614]), initValues(_3C_classLit, 42, -1, [10875]), initValues(_3C_classLit, 42, -1, [10646]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [10570]), initValues(_3C_classLit, 42, -1, [10598]), initValues(_3C_classLit, 42, -1, [8762]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9794]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [9646]), initValues(_3C_classLit, 42, -1, [10793]), initValues(_3C_classLit, 42, -1, [1084]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [55349, 56618]), initValues(_3C_classLit, 42, -1, [8487]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [10992]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8722]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [10794]), initValues(_3C_classLit, 42, -1, [10971]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [8871]), initValues(_3C_classLit, 42, -1, [55349, 56670]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56514]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [956]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8879]), initValues(_3C_classLit, 42, -1, [8878]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [324]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [329]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [10819]), initValues(_3C_classLit, 42, -1, [328]), initValues(_3C_classLit, 42, -1, [326]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [10818]), initValues(_3C_classLit, 42, -1, [1085]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8663]), initValues(_3C_classLit, 42, -1, [10532]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [55349, 56619]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [10994]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8956]), initValues(_3C_classLit, 42, -1, [8954]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [1114]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8229]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56671]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8951]), initValues(_3C_classLit, 42, -1, [8950]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8958]), initValues(_3C_classLit, 42, -1, [8957]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [10772]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [55349, 56515]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8836]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8837]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [957]), initValues(_3C_classLit, 42, -1, [35]), initValues(_3C_classLit, 42, -1, [8470]), initValues(_3C_classLit, 42, -1, [8199]), initValues(_3C_classLit, 42, -1, [8877]), initValues(_3C_classLit, 42, -1, [10500]), initValues(_3C_classLit, 42, -1, [8876]), initValues(_3C_classLit, 42, -1, [10718]), initValues(_3C_classLit, 42, -1, [10498]), initValues(_3C_classLit, 42, -1, [10499]), initValues(_3C_classLit, 42, -1, [8662]), initValues(_3C_classLit, 42, -1, [10531]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [10535]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [1086]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [337]), initValues(_3C_classLit, 42, -1, [10808]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [10684]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [10687]), initValues(_3C_classLit, 42, -1, [55349, 56620]), initValues(_3C_classLit, 42, -1, [731]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [10689]), initValues(_3C_classLit, 42, -1, [10677]), initValues(_3C_classLit, 42, -1, [8486]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [10686]), initValues(_3C_classLit, 42, -1, [10683]), initValues(_3C_classLit, 42, -1, [8254]), initValues(_3C_classLit, 42, -1, [10688]), initValues(_3C_classLit, 42, -1, [333]), initValues(_3C_classLit, 42, -1, [969]), initValues(_3C_classLit, 42, -1, [959]), initValues(_3C_classLit, 42, -1, [10678]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [55349, 56672]), initValues(_3C_classLit, 42, -1, [10679]), initValues(_3C_classLit, 42, -1, [10681]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [10845]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [8886]), initValues(_3C_classLit, 42, -1, [10838]), initValues(_3C_classLit, 42, -1, [10839]), initValues(_3C_classLit, 42, -1, [10843]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [8856]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [10806]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [9021]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [10995]), initValues(_3C_classLit, 42, -1, [11005]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1087]), initValues(_3C_classLit, 42, -1, [37]), initValues(_3C_classLit, 42, -1, [46]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8241]), initValues(_3C_classLit, 42, -1, [55349, 56621]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [9742]), initValues(_3C_classLit, 42, -1, [960]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [8462]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [43]), initValues(_3C_classLit, 42, -1, [10787]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [10786]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [10789]), initValues(_3C_classLit, 42, -1, [10866]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10790]), initValues(_3C_classLit, 42, -1, [10791]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10773]), initValues(_3C_classLit, 42, -1, [55349, 56673]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10931]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8242]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [9006]), initValues(_3C_classLit, 42, -1, [8978]), initValues(_3C_classLit, 42, -1, [8979]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8880]), initValues(_3C_classLit, 42, -1, [55349, 56517]), initValues(_3C_classLit, 42, -1, [968]), initValues(_3C_classLit, 42, -1, [8200]), initValues(_3C_classLit, 42, -1, [55349, 56622]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [55349, 56674]), initValues(_3C_classLit, 42, -1, [8279]), initValues(_3C_classLit, 42, -1, [55349, 56518]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [10774]), initValues(_3C_classLit, 42, -1, [63]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [10524]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [10596]), initValues(_3C_classLit, 42, -1, [10714]), initValues(_3C_classLit, 42, -1, [341]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [10675]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [10642]), initValues(_3C_classLit, 42, -1, [10661]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [10613]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [10528]), initValues(_3C_classLit, 42, -1, [10547]), initValues(_3C_classLit, 42, -1, [10526]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10565]), initValues(_3C_classLit, 42, -1, [10612]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [10522]), initValues(_3C_classLit, 42, -1, [8758]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10099]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [10636]), initValues(_3C_classLit, 42, -1, [10638]), initValues(_3C_classLit, 42, -1, [10640]), initValues(_3C_classLit, 42, -1, [345]), initValues(_3C_classLit, 42, -1, [343]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [1088]), initValues(_3C_classLit, 42, -1, [10551]), initValues(_3C_classLit, 42, -1, [10601]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8627]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [9645]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [10621]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [55349, 56623]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10604]), initValues(_3C_classLit, 42, -1, [961]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [730]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8207]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [10990]), initValues(_3C_classLit, 42, -1, [10221]), initValues(_3C_classLit, 42, -1, [8702]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10630]), initValues(_3C_classLit, 42, -1, [55349, 56675]), initValues(_3C_classLit, 42, -1, [10798]), initValues(_3C_classLit, 42, -1, [10805]), initValues(_3C_classLit, 42, -1, [41]), initValues(_3C_classLit, 42, -1, [10644]), initValues(_3C_classLit, 42, -1, [10770]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [55349, 56519]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [8906]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [10702]), initValues(_3C_classLit, 42, -1, [10600]), initValues(_3C_classLit, 42, -1, [8478]), initValues(_3C_classLit, 42, -1, [347]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10932]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [351]), initValues(_3C_classLit, 42, -1, [349]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [10771]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [1089]), initValues(_3C_classLit, 42, -1, [8901]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [10854]), initValues(_3C_classLit, 42, -1, [8664]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [59]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10038]), initValues(_3C_classLit, 42, -1, [55349, 56624]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [9839]), initValues(_3C_classLit, 42, -1, [1097]), initValues(_3C_classLit, 42, -1, [1096]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [963]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [10858]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [10910]), initValues(_3C_classLit, 42, -1, [10912]), initValues(_3C_classLit, 42, -1, [10909]), initValues(_3C_classLit, 42, -1, [10911]), initValues(_3C_classLit, 42, -1, [8774]), initValues(_3C_classLit, 42, -1, [10788]), initValues(_3C_classLit, 42, -1, [10610]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10803]), initValues(_3C_classLit, 42, -1, [10724]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [10922]), initValues(_3C_classLit, 42, -1, [10924]), initValues(_3C_classLit, 42, -1, [1100]), initValues(_3C_classLit, 42, -1, [47]), initValues(_3C_classLit, 42, -1, [10692]), initValues(_3C_classLit, 42, -1, [9023]), initValues(_3C_classLit, 42, -1, [55349, 56676]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [55349, 56520]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [9734]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [981]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [10941]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10947]), initValues(_3C_classLit, 42, -1, [10945]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10943]), initValues(_3C_classLit, 42, -1, [10617]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [10951]), initValues(_3C_classLit, 42, -1, [10965]), initValues(_3C_classLit, 42, -1, [10963]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [9834]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [10942]), initValues(_3C_classLit, 42, -1, [10968]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10948]), initValues(_3C_classLit, 42, -1, [10967]), initValues(_3C_classLit, 42, -1, [10619]), initValues(_3C_classLit, 42, -1, [10946]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10944]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [10952]), initValues(_3C_classLit, 42, -1, [10964]), initValues(_3C_classLit, 42, -1, [10966]), initValues(_3C_classLit, 42, -1, [8665]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [10538]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [8982]), initValues(_3C_classLit, 42, -1, [964]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [357]), initValues(_3C_classLit, 42, -1, [355]), initValues(_3C_classLit, 42, -1, [1090]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [8981]), initValues(_3C_classLit, 42, -1, [55349, 56625]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [952]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [10801]), initValues(_3C_classLit, 42, -1, [10800]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [9014]), initValues(_3C_classLit, 42, -1, [10993]), initValues(_3C_classLit, 42, -1, [55349, 56677]), initValues(_3C_classLit, 42, -1, [10970]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8244]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9708]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [10810]), initValues(_3C_classLit, 42, -1, [10809]), initValues(_3C_classLit, 42, -1, [10701]), initValues(_3C_classLit, 42, -1, [10811]), initValues(_3C_classLit, 42, -1, [9186]), initValues(_3C_classLit, 42, -1, [55349, 56521]), initValues(_3C_classLit, 42, -1, [1094]), initValues(_3C_classLit, 42, -1, [1115]), initValues(_3C_classLit, 42, -1, [359]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [10595]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [1118]), initValues(_3C_classLit, 42, -1, [365]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [1091]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [369]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [10622]), initValues(_3C_classLit, 42, -1, [55349, 56626]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [9600]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8975]), initValues(_3C_classLit, 42, -1, [9720]), initValues(_3C_classLit, 42, -1, [363]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [371]), initValues(_3C_classLit, 42, -1, [55349, 56678]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8974]), initValues(_3C_classLit, 42, -1, [367]), initValues(_3C_classLit, 42, -1, [9721]), initValues(_3C_classLit, 42, -1, [55349, 56522]), initValues(_3C_classLit, 42, -1, [8944]), initValues(_3C_classLit, 42, -1, [361]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [10663]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [10984]), initValues(_3C_classLit, 42, -1, [10985]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [10652]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [1074]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8891]), initValues(_3C_classLit, 42, -1, [8794]), initValues(_3C_classLit, 42, -1, [8942]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [55349, 56627]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [55349, 56679]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [55349, 56523]), initValues(_3C_classLit, 42, -1, [10650]), initValues(_3C_classLit, 42, -1, [373]), initValues(_3C_classLit, 42, -1, [10847]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [8793]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [55349, 56628]), initValues(_3C_classLit, 42, -1, [55349, 56680]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [55349, 56524]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [55349, 56629]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [958]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [8955]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [55349, 56681]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [55349, 56525]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [1103]), initValues(_3C_classLit, 42, -1, [375]), initValues(_3C_classLit, 42, -1, [1099]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [55349, 56630]), initValues(_3C_classLit, 42, -1, [1111]), initValues(_3C_classLit, 42, -1, [55349, 56682]), initValues(_3C_classLit, 42, -1, [55349, 56526]), initValues(_3C_classLit, 42, -1, [1102]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [378]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [1079]), initValues(_3C_classLit, 42, -1, [380]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [950]), initValues(_3C_classLit, 42, -1, [55349, 56631]), initValues(_3C_classLit, 42, -1, [1078]), initValues(_3C_classLit, 42, -1, [8669]), initValues(_3C_classLit, 42, -1, [55349, 56683]), initValues(_3C_classLit, 42, -1, [55349, 56527]), initValues(_3C_classLit, 42, -1, [8205]), initValues(_3C_classLit, 42, -1, [8204])]);
1.21716 + WINDOWS_1252 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [376])]);
1.21717 +}
1.21718 +
1.21719 +var NAMES, VALUES_0, WINDOWS_1252;
1.21720 +function localEqualsBuffer(local, buf, offset, length){
1.21721 + var i;
1.21722 + if (local.length != length) {
1.21723 + return false;
1.21724 + }
1.21725 + for (i = 0; i < length; ++i) {
1.21726 + if (local.charCodeAt(i) != buf[offset + i]) {
1.21727 + return false;
1.21728 + }
1.21729 + }
1.21730 + return true;
1.21731 +}
1.21732 +
1.21733 +function lowerCaseLiteralEqualsIgnoreAsciiCaseString(lowerCaseLiteral, string){
1.21734 + var c0, c1, i;
1.21735 + if (string == null) {
1.21736 + return false;
1.21737 + }
1.21738 + if (lowerCaseLiteral.length != string.length) {
1.21739 + return false;
1.21740 + }
1.21741 + for (i = 0; i < lowerCaseLiteral.length; ++i) {
1.21742 + c0 = lowerCaseLiteral.charCodeAt(i);
1.21743 + c1 = string.charCodeAt(i);
1.21744 + if (c1 >= 65 && c1 <= 90) {
1.21745 + c1 += 32;
1.21746 + }
1.21747 + if (c0 != c1) {
1.21748 + return false;
1.21749 + }
1.21750 + }
1.21751 + return true;
1.21752 +}
1.21753 +
1.21754 +function lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(lowerCaseLiteral, string){
1.21755 + var c0, c1, i;
1.21756 + if (string == null) {
1.21757 + return false;
1.21758 + }
1.21759 + if (lowerCaseLiteral.length > string.length) {
1.21760 + return false;
1.21761 + }
1.21762 + for (i = 0; i < lowerCaseLiteral.length; ++i) {
1.21763 + c0 = lowerCaseLiteral.charCodeAt(i);
1.21764 + c1 = string.charCodeAt(i);
1.21765 + if (c1 >= 65 && c1 <= 90) {
1.21766 + c1 += 32;
1.21767 + }
1.21768 + if (c0 != c1) {
1.21769 + return false;
1.21770 + }
1.21771 + }
1.21772 + return true;
1.21773 +}
1.21774 +
1.21775 +function $StackNode(this$static, group, ns, name, node, scoping, special, fosterParenting, popName, attributes){
1.21776 + this$static.group = group;
1.21777 + this$static.name_0 = name;
1.21778 + this$static.popName = popName;
1.21779 + this$static.ns = ns;
1.21780 + this$static.node = node;
1.21781 + this$static.scoping = scoping;
1.21782 + this$static.special = special;
1.21783 + this$static.fosterParenting = fosterParenting;
1.21784 + this$static.attributes = attributes;
1.21785 + this$static.refcount = 1;
1.21786 + return this$static;
1.21787 +}
1.21788 +
1.21789 +function $StackNode_0(this$static, ns, elementName, node){
1.21790 + this$static.group = elementName.group;
1.21791 + this$static.name_0 = elementName.name_0;
1.21792 + this$static.popName = elementName.name_0;
1.21793 + this$static.ns = ns;
1.21794 + this$static.node = node;
1.21795 + this$static.scoping = elementName.scoping;
1.21796 + this$static.special = elementName.special;
1.21797 + this$static.fosterParenting = elementName.fosterParenting;
1.21798 + this$static.attributes = null;
1.21799 + this$static.refcount = 1;
1.21800 + return this$static;
1.21801 +}
1.21802 +
1.21803 +function $StackNode_3(this$static, ns, elementName, node, attributes){
1.21804 + this$static.group = elementName.group;
1.21805 + this$static.name_0 = elementName.name_0;
1.21806 + this$static.popName = elementName.name_0;
1.21807 + this$static.ns = ns;
1.21808 + this$static.node = node;
1.21809 + this$static.scoping = elementName.scoping;
1.21810 + this$static.special = elementName.special;
1.21811 + this$static.fosterParenting = elementName.fosterParenting;
1.21812 + this$static.attributes = attributes;
1.21813 + this$static.refcount = 1;
1.21814 + return this$static;
1.21815 +}
1.21816 +
1.21817 +function $StackNode_1(this$static, ns, elementName, node, popName){
1.21818 + this$static.group = elementName.group;
1.21819 + this$static.name_0 = elementName.name_0;
1.21820 + this$static.popName = popName;
1.21821 + this$static.ns = ns;
1.21822 + this$static.node = node;
1.21823 + this$static.scoping = elementName.scoping;
1.21824 + this$static.special = elementName.special;
1.21825 + this$static.fosterParenting = elementName.fosterParenting;
1.21826 + this$static.attributes = null;
1.21827 + this$static.refcount = 1;
1.21828 + return this$static;
1.21829 +}
1.21830 +
1.21831 +function $StackNode_2(this$static, ns, elementName, node, popName, scoping){
1.21832 + this$static.group = elementName.group;
1.21833 + this$static.name_0 = elementName.name_0;
1.21834 + this$static.popName = popName;
1.21835 + this$static.ns = ns;
1.21836 + this$static.node = node;
1.21837 + this$static.scoping = scoping;
1.21838 + this$static.special = false;
1.21839 + this$static.fosterParenting = false;
1.21840 + this$static.attributes = null;
1.21841 + this$static.refcount = 1;
1.21842 + return this$static;
1.21843 +}
1.21844 +
1.21845 +function getClass_55(){
1.21846 + return Lnu_validator_htmlparser_impl_StackNode_2_classLit;
1.21847 +}
1.21848 +
1.21849 +function toString_11(){
1.21850 + return this.name_0;
1.21851 +}
1.21852 +
1.21853 +function StackNode(){
1.21854 +}
1.21855 +
1.21856 +_ = StackNode.prototype = new Object_0();
1.21857 +_.getClass$ = getClass_55;
1.21858 +_.toString$ = toString_11;
1.21859 +_.typeId$ = 38;
1.21860 +_.attributes = null;
1.21861 +_.fosterParenting = false;
1.21862 +_.group = 0;
1.21863 +_.name_0 = null;
1.21864 +_.node = null;
1.21865 +_.ns = null;
1.21866 +_.popName = null;
1.21867 +_.refcount = 1;
1.21868 +_.scoping = false;
1.21869 +_.special = false;
1.21870 +function $UTF16Buffer(this$static, buffer, start, end){
1.21871 + this$static.buffer = buffer;
1.21872 + this$static.start = start;
1.21873 + this$static.end = end;
1.21874 + return this$static;
1.21875 +}
1.21876 +
1.21877 +function $adjust(this$static, lastWasCR){
1.21878 + if (lastWasCR && this$static.buffer[this$static.start] == 10) {
1.21879 + ++this$static.start;
1.21880 + }
1.21881 +}
1.21882 +
1.21883 +function getClass_58(){
1.21884 + return Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit;
1.21885 +}
1.21886 +
1.21887 +function UTF16Buffer(){
1.21888 +}
1.21889 +
1.21890 +_ = UTF16Buffer.prototype = new Object_0();
1.21891 +_.getClass$ = getClass_58;
1.21892 +_.typeId$ = 39;
1.21893 +_.buffer = null;
1.21894 +_.end = 0;
1.21895 +_.start = 0;
1.21896 +function $SAXException(this$static, message){
1.21897 + this$static.detailMessage = message;
1.21898 + this$static.exception = null;
1.21899 + return this$static;
1.21900 +}
1.21901 +
1.21902 +function $getMessage(this$static){
1.21903 + var message;
1.21904 + message = this$static.detailMessage;
1.21905 + if (message == null && !!this$static.exception) {
1.21906 + return this$static.exception.detailMessage;
1.21907 + }
1.21908 + else {
1.21909 + return message;
1.21910 + }
1.21911 +}
1.21912 +
1.21913 +function getClass_59(){
1.21914 + return Lorg_xml_sax_SAXException_2_classLit;
1.21915 +}
1.21916 +
1.21917 +function getMessage_0(){
1.21918 + return $getMessage(this);
1.21919 +}
1.21920 +
1.21921 +function toString_12(){
1.21922 + if (this.exception) {
1.21923 + return $toString_1(this.exception);
1.21924 + }
1.21925 + else {
1.21926 + return $toString_1(this);
1.21927 + }
1.21928 +}
1.21929 +
1.21930 +function SAXException(){
1.21931 +}
1.21932 +
1.21933 +_ = SAXException.prototype = new Exception();
1.21934 +_.getClass$ = getClass_59;
1.21935 +_.getMessage = getMessage_0;
1.21936 +_.toString$ = toString_12;
1.21937 +_.typeId$ = 40;
1.21938 +_.exception = null;
1.21939 +function $SAXParseException(this$static, message, locator){
1.21940 + this$static.detailMessage = message;
1.21941 + this$static.exception = null;
1.21942 + if (locator) {
1.21943 + $getLineNumber(locator);
1.21944 + $getColumnNumber(locator);
1.21945 + }
1.21946 + else {
1.21947 + }
1.21948 + return this$static;
1.21949 +}
1.21950 +
1.21951 +function $SAXParseException_0(this$static, message, locator, e){
1.21952 + this$static.detailMessage = message;
1.21953 + this$static.exception = e;
1.21954 + if (locator) {
1.21955 + $getLineNumber(locator);
1.21956 + $getColumnNumber(locator);
1.21957 + }
1.21958 + else {
1.21959 + }
1.21960 + return this$static;
1.21961 +}
1.21962 +
1.21963 +function getClass_60(){
1.21964 + return Lorg_xml_sax_SAXParseException_2_classLit;
1.21965 +}
1.21966 +
1.21967 +function SAXParseException(){
1.21968 +}
1.21969 +
1.21970 +_ = SAXParseException.prototype = new SAXException();
1.21971 +_.getClass$ = getClass_60;
1.21972 +_.typeId$ = 41;
1.21973 +function init_0(){
1.21974 + !!$stats && $stats({moduleName:$moduleName, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:'nu.validator.htmlparser.gwt.HtmlParserModule'});
1.21975 + Envjs.parseHtmlDocument = parseHtmlDocument;
1.21976 +}
1.21977 +
1.21978 +__defineParser__ = function gwtOnLoad(errFn, modName, modBase){
1.21979 + $moduleName = modName;
1.21980 + $moduleBase = modBase;
1.21981 + if (errFn)
1.21982 + try {
1.21983 + init_0();
1.21984 + }
1.21985 + catch (e) {
1.21986 + errFn(modName);
1.21987 + }
1.21988 + else {
1.21989 + init_0();
1.21990 + }
1.21991 +}
1.21992 +
1.21993 +function nullMethod(){
1.21994 +}
1.21995 +
1.21996 +var Ljava_lang_Object_2_classLit = createForClass('java.lang.', 'Object'), Lcom_google_gwt_user_client_Timer_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer'), Ljava_lang_Throwable_2_classLit = createForClass('java.lang.', 'Throwable'), Ljava_lang_Exception_2_classLit = createForClass('java.lang.', 'Exception'), Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang.', 'RuntimeException'), Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptException'), Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptObject$'), _3Ljava_lang_String_2_classLit = createForArray('[Ljava.lang.', 'String;'), Ljava_lang_Enum_2_classLit = createForClass('java.lang.', 'Enum'), _3_3D_classLit = createForArray('', '[[D'), Ljava_util_AbstractCollection_2_classLit = createForClass('java.util.', 'AbstractCollection'), Ljava_util_AbstractList_2_classLit = createForClass('java.util.', 'AbstractList'), Ljava_util_ArrayList_2_classLit = createForClass('java.util.', 'ArrayList'), Lcom_google_gwt_user_client_Timer$1_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer$1'), Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'IndexOutOfBoundsException'), Ljava_lang_ArrayStoreException_2_classLit = createForClass('java.lang.', 'ArrayStoreException'), _3C_classLit = createForArray('', '[C'), Ljava_lang_Class_2_classLit = createForClass('java.lang.', 'Class'), Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang.', 'ClassCastException'), Ljava_lang_IllegalArgumentException_2_classLit = createForClass('java.lang.', 'IllegalArgumentException'), _3I_classLit = createForArray('', '[I'), Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang.', 'NullPointerException'), Ljava_lang_String_2_classLit = createForClass('java.lang.', 'String'), Ljava_lang_StringBuffer_2_classLit = createForClass('java.lang.', 'StringBuffer'), Ljava_lang_StringBuilder_2_classLit = createForClass('java.lang.', 'StringBuilder'), Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'StringIndexOutOfBoundsException'), Ljava_lang_UnsupportedOperationException_2_classLit = createForClass('java.lang.', 'UnsupportedOperationException'), _3Ljava_lang_Object_2_classLit = createForArray('[Ljava.lang.', 'Object;'), Ljava_util_AbstractMap_2_classLit = createForClass('java.util.', 'AbstractMap'), Ljava_util_AbstractHashMap_2_classLit = createForClass('java.util.', 'AbstractHashMap'), Ljava_util_AbstractSet_2_classLit = createForClass('java.util.', 'AbstractSet'), Ljava_util_AbstractHashMap$EntrySet_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySet'), Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySetIterator'), Ljava_util_AbstractMapEntry_2_classLit = createForClass('java.util.', 'AbstractMapEntry'), Ljava_util_AbstractHashMap$MapEntryNull_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryNull'), Ljava_util_AbstractHashMap$MapEntryString_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryString'), Ljava_util_AbstractList$IteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$IteratorImpl'), Ljava_util_AbstractList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$ListIteratorImpl'), Ljava_util_AbstractSequentialList_2_classLit = createForClass('java.util.', 'AbstractSequentialList'), Ljava_util_Comparators$1_2_classLit = createForClass('java.util.', 'Comparators$1'), Ljava_util_HashMap_2_classLit = createForClass('java.util.', 'HashMap'), Ljava_util_LinkedList_2_classLit = createForClass('java.util.', 'LinkedList'), Ljava_util_LinkedList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'LinkedList$ListIteratorImpl'), Ljava_util_LinkedList$Node_2_classLit = createForClass('java.util.', 'LinkedList$Node'), Ljava_util_NoSuchElementException_2_classLit = createForClass('java.util.', 'NoSuchElementException'), Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DoctypeExpectation'), Lnu_validator_htmlparser_common_DocumentMode_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DocumentMode'), Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'XmlViolationPolicy'), Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'TreeBuilder'), Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'CoalescingTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder$ScriptHolder'), Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser'), Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser$1'), Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'ParseEndListener'), _3Z_classLit = createForArray('', '[Z'), _3Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'AttributeName;'), Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'AttributeName'), _3Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'ElementName;'), Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ElementName'), Lnu_validator_htmlparser_impl_Tokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'Tokenizer'), Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ErrorReportingTokenizer'), Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'HtmlAttributes'), Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'LocatorImpl'), _3_3C_classLit = createForArray('', '[[C'), Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'StackNode'), _3Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'StackNode;'), Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'UTF16Buffer'), Lorg_xml_sax_SAXException_2_classLit = createForClass('org.xml.sax.', 'SAXException'), Lorg_xml_sax_SAXParseException_2_classLit = createForClass('org.xml.sax.', 'SAXParseException');
1.21997 +if (false) { var __gwt_initHandlers = nu_validator_htmlparser_HtmlParser.__gwt_initHandlers; nu_validator_htmlparser_HtmlParser.onScriptLoad(gwtOnLoad);}})();
1.21998 +
1.21999 +/**
1.22000 +* DOMParser
1.22001 +*/
1.22002 +
1.22003 +__defineParser__(function(e){
1.22004 + console.log('Error loading html 5 parser implementation');
1.22005 +}, 'nu_validator_htmlparser_HtmlParser', '');
1.22006 +
1.22007 +/*DOMParser = function(principle, documentURI, baseURI){};
1.22008 +__extend__(DOMParser.prototype,{
1.22009 + parseFromString: function(xmlstring, mimetype){
1.22010 + //console.log('DOMParser.parseFromString %s', mimetype);
1.22011 + var xmldoc = new Document(new DOMImplementation());
1.22012 + return XMLParser.parseDocument(xmlstring, xmldoc, mimetype);
1.22013 + }
1.22014 +});*/
1.22015 +
1.22016 +XMLParser.parseDocument = function(xmlstring, xmldoc, mimetype){
1.22017 + //console.log('XMLParser.parseDocument');
1.22018 + var tmpdoc = new Document(new DOMImplementation()),
1.22019 + parent,
1.22020 + importedNode,
1.22021 + tmpNode;
1.22022 +
1.22023 + if(mimetype && mimetype == 'text/xml'){
1.22024 + //console.log('mimetype: text/xml');
1.22025 + tmpdoc.baseURI = 'http://envjs.com/xml';
1.22026 + xmlstring = '<html><head></head><body>'+
1.22027 + '<envjs_1234567890 xmlns="envjs_1234567890">'
1.22028 + +xmlstring+
1.22029 + '</envjs_1234567890>'+
1.22030 + '</body></html>';
1.22031 + Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
1.22032 + parent = tmpdoc.getElementsByTagName('envjs_1234567890')[0];
1.22033 + }else{
1.22034 + Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
1.22035 + parent = tmpdoc.documentElement;
1.22036 + }
1.22037 +
1.22038 + while(xmldoc.firstChild != null){
1.22039 + xmldoc.removeChild( xmldoc.firstChild );
1.22040 + }
1.22041 + while(parent.firstChild != null){
1.22042 + tmpNode = parent.removeChild( parent.firstChild );
1.22043 + importedNode = xmldoc.importNode( tmpNode, true);
1.22044 + xmldoc.appendChild( importedNode );
1.22045 + }
1.22046 + return xmldoc;
1.22047 +};
1.22048 +
1.22049 +var __fragmentCache__ = {length:0},
1.22050 + __cachable__ = 255;
1.22051 +
1.22052 +HTMLParser.parseDocument = function(htmlstring, htmldoc){
1.22053 + //console.log('HTMLParser.parseDocument %s', htmldoc.async);
1.22054 + htmldoc.parsing = true;
1.22055 + Envjs.parseHtmlDocument(htmlstring, htmldoc, htmldoc.async, null, null);
1.22056 + //Envjs.wait(-1);
1.22057 + return htmldoc;
1.22058 +};
1.22059 +HTMLParser.parseFragment = function(htmlstring, element){
1.22060 + //console.log('HTMLParser.parseFragment')
1.22061 + // fragment is allowed to be an element as well
1.22062 + var tmpdoc,
1.22063 + parent,
1.22064 + importedNode,
1.22065 + tmpNode,
1.22066 + length,
1.22067 + i,
1.22068 + docstring;
1.22069 + //console.log('parsing fragment: %s', htmlstring);
1.22070 + //console.log('__fragmentCache__.length %s', __fragmentCache__.length)
1.22071 + if( htmlstring.length > __cachable__ && htmlstring in __fragmentCache__){
1.22072 + tmpdoc = __fragmentCache__[htmlstring];
1.22073 + }else{
1.22074 + //console.log('parsing html fragment \n%s', htmlstring);
1.22075 + tmpdoc = new HTMLDocument(new DOMImplementation());
1.22076 +
1.22077 +
1.22078 + // Need some indicator that this document isn't THE document
1.22079 + // to fire off img.src change events and other items.
1.22080 + // Otherwise, what happens is the tmpdoc fires and img.src
1.22081 + // event, then when it's all imported to the original document
1.22082 + // it happens again.
1.22083 +
1.22084 + tmpdoc.fragment = true;
1.22085 +
1.22086 + //preserves leading white space
1.22087 + docstring = '<html><head></head><body>'+
1.22088 + '<envjs_1234567890 xmlns="envjs_1234567890">'
1.22089 + +htmlstring+
1.22090 + '</envjs_1234567890>'+
1.22091 + '</body></html>';
1.22092 + Envjs.parseHtmlDocument(docstring,tmpdoc, false, null,null);
1.22093 + if(htmlstring.length > __cachable__ ){
1.22094 + tmpdoc.normalizeDocument();
1.22095 + __fragmentCache__[htmlstring] = tmpdoc;
1.22096 + __fragmentCache__.length += htmlstring.length;
1.22097 + tmpdoc.cached = true;
1.22098 + }else{
1.22099 + tmpdoc.cached = false;
1.22100 + }
1.22101 + }
1.22102 +
1.22103 + //parent is envjs_1234567890 element
1.22104 + parent = tmpdoc.body.childNodes[0];
1.22105 + while(element.firstChild != null){
1.22106 + //zap the elements children so we can import
1.22107 + element.removeChild( element.firstChild );
1.22108 + }
1.22109 +
1.22110 + if(tmpdoc.cached){
1.22111 + length = parent.childNodes.length;
1.22112 + for(i=0;i<length;i++){
1.22113 + importedNode = element.importNode( parent.childNodes[i], true );
1.22114 + element.appendChild( importedNode );
1.22115 + }
1.22116 + }else{
1.22117 + while(parent.firstChild != null){
1.22118 + tmpNode = parent.removeChild( parent.firstChild );
1.22119 + importedNode = element.importNode( tmpNode, true);
1.22120 + element.appendChild( importedNode );
1.22121 + }
1.22122 + }
1.22123 +
1.22124 + // console.log('finished fragment: %s', element.outerHTML);
1.22125 + return element;
1.22126 +};
1.22127 +
1.22128 +var __clearFragmentCache__ = function(){
1.22129 + __fragmentCache__ = {};
1.22130 +}
1.22131 +
1.22132 +
1.22133 +/**
1.22134 + * @name Document
1.22135 + * @w3c:domlevel 2
1.22136 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
1.22137 + */
1.22138 +__extend__(Document.prototype, {
1.22139 + loadXML : function(xmlString) {
1.22140 + //console.log('Parser::Document.loadXML');
1.22141 + // create Document
1.22142 + if(this === document){
1.22143 + //$debug("Setting internal window.document");
1.22144 + document = this;
1.22145 + }
1.22146 + // populate Document
1.22147 + try {
1.22148 + // make sure this document object is empty before we try to load ...
1.22149 + this.attributes = new NamedNodeMap(this, this);
1.22150 + this._namespaces = new NamespaceNodeMap(this, this);
1.22151 + this._readonly = false;
1.22152 +
1.22153 + XMLParser.parseDocument(xmlString, this);
1.22154 +
1.22155 + Envjs.wait(-1);
1.22156 + } catch (e) {
1.22157 + //$error(e);
1.22158 + }
1.22159 + return this;
1.22160 + }
1.22161 +});
1.22162 +
1.22163 +
1.22164 +__extend__(HTMLDocument.prototype, {
1.22165 +
1.22166 + open : function() {
1.22167 + //console.log('opening doc for write.');
1.22168 + if (! this._writebuffer) {
1.22169 + this._writebuffer = [];
1.22170 + }
1.22171 + },
1.22172 + close : function() {
1.22173 + //console.log('closing doc.');
1.22174 + if (this._writebuffer) {
1.22175 + HTMLParser.parseDocument(this._writebuffer.join(''), this);
1.22176 + this._writebuffer = null;
1.22177 + //console.log('finished writing doc.');
1.22178 + }
1.22179 + },
1.22180 +
1.22181 + /**
1.22182 + * http://dev.w3.org/html5/spec/Overview.html#document.write
1.22183 + */
1.22184 + write: function(htmlstring) {
1.22185 + //console.log('writing doc.');
1.22186 + this.open();
1.22187 + this._writebuffer.push(htmlstring);
1.22188 + },
1.22189 +
1.22190 + /**
1.22191 + * http://dev.w3.org/html5/spec/Overview.html#dom-document-writeln
1.22192 + */
1.22193 + writeln: function(htmlstring) {
1.22194 + this.open();
1.22195 + this._writebuffer.push(htmlstring + '\n');
1.22196 + }
1.22197 +});
1.22198 +
1.22199 +/**
1.22200 + * elementPopped is called by the parser in two cases
1.22201 + *
1.22202 + * - an 'tag' is * complete (all children process and end tag, real or
1.22203 + * implied is * processed)
1.22204 + * - a replaceElement happens (this happens by making placeholder
1.22205 + * nodes and then the real one is swapped in.
1.22206 + *
1.22207 + */
1.22208 +var __elementPopped__ = function(ns, name, node){
1.22209 + //console.log('popped html element %s %s %s', ns, name, node);
1.22210 + var doc = node.ownerDocument,
1.22211 + okay,
1.22212 + event;
1.22213 + switch(doc.parsing){
1.22214 + case false:
1.22215 + //innerHTML so dont do loading patterns for parsing
1.22216 + //console.log('element popped (implies innerHTML) not in parsing mode %s', node.nodeName);
1.22217 + break;
1.22218 + case true:
1.22219 + switch(doc+''){
1.22220 + case '[object XMLDocument]':
1.22221 + break;
1.22222 + case '[object HTMLDocument]':
1.22223 + switch(node.namespaceURI){
1.22224 + case "http://n.validator.nu/placeholder/":
1.22225 + //console.log('got script during parsing %s', node.textContent);
1.22226 + break;
1.22227 + case null:
1.22228 + case "":
1.22229 + case "http://www.w3.org/1999/xhtml":
1.22230 + switch(name.toLowerCase()){
1.22231 + case 'script':
1.22232 + try{
1.22233 + okay = Envjs.loadLocalScript(node, null);
1.22234 + // console.log('loaded script? %s %s', node.uuid, okay);
1.22235 + // only fire event if we actually had something to load
1.22236 + if (node.src && node.src.length > 0){
1.22237 + event = doc.createEvent('HTMLEvents');
1.22238 + event.initEvent( okay ? "load" : "error", false, false );
1.22239 + node.dispatchEvent( event, false );
1.22240 + }
1.22241 + }catch(e){
1.22242 + console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
1.22243 + }
1.22244 + break;
1.22245 + case 'frame':
1.22246 + case 'iframe':
1.22247 + node.contentWindow = { };
1.22248 + node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
1.22249 + node.contentWindow.document = node.contentDocument;
1.22250 + try{
1.22251 + Window;
1.22252 + }catch(e){
1.22253 + node.contentDocument.addEventListener('DOMContentLoaded', function(){
1.22254 + event = node.contentDocument.createEvent('HTMLEvents');
1.22255 + event.initEvent("load", false, false);
1.22256 + node.dispatchEvent( event, false );
1.22257 + });
1.22258 + }
1.22259 + try{
1.22260 + if (node.src && node.src.length > 0){
1.22261 + //console.log("getting content document for (i)frame from %s", node.src);
1.22262 + Envjs.loadFrame(node, Envjs.uri(node.src));
1.22263 + event = node.contentDocument.createEvent('HTMLEvents');
1.22264 + event.initEvent("load", false, false);
1.22265 + node.dispatchEvent( event, false );
1.22266 + }else{
1.22267 + //I dont like this being here:
1.22268 + //TODO: better mix-in strategy so the try/catch isnt required
1.22269 + try{
1.22270 + if(Window){
1.22271 + Envjs.loadFrame(node);
1.22272 + //console.log('src/html/document.js: triggering frame load');
1.22273 + event = node.contentDocument.createEvent('HTMLEvents');
1.22274 + event.initEvent("load", false, false);
1.22275 + node.dispatchEvent( event, false );
1.22276 + }
1.22277 + }catch(e){}
1.22278 + }
1.22279 + }catch(e){
1.22280 + console.log('error loading html element %s %e', node, e.toString());
1.22281 + }
1.22282 + /*try{
1.22283 + if (node.src && node.src.length > 0){
1.22284 + //console.log("getting content document for (i)frame from %s", node.src);
1.22285 + Envjs.loadFrame(node, Envjs.uri(node.src));
1.22286 + event = node.ownerDocument.createEvent('HTMLEvents');
1.22287 + event.initEvent("load", false, false);
1.22288 + node.dispatchEvent( event, false );
1.22289 + }else{
1.22290 + //console.log('src/parser/htmldocument: triggering frame load (no src)');
1.22291 + }
1.22292 + }catch(e){
1.22293 + console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
1.22294 + }*/
1.22295 + break;
1.22296 + case 'link':
1.22297 + if (node.href) {
1.22298 + __loadLink__(node, node.href);
1.22299 + }
1.22300 + break;
1.22301 + case 'option':
1.22302 + node._updateoptions();
1.22303 + break;
1.22304 + case 'img':
1.22305 + if (node.src){
1.22306 + __loadImage__(node, node.src);
1.22307 + }
1.22308 + break;
1.22309 + case 'html':
1.22310 + //console.log('html popped');
1.22311 + doc.parsing = false;
1.22312 + //DOMContentLoaded event
1.22313 + // try{
1.22314 + if(doc.createEvent){
1.22315 + event = doc.createEvent('Events');
1.22316 + event.initEvent("DOMContentLoaded", false, false);
1.22317 + doc.dispatchEvent( event, false );
1.22318 + }
1.22319 + /* }catch(e){
1.22320 + console.log('%s', e);
1.22321 + } */
1.22322 + try{
1.22323 + if(doc.createEvent){
1.22324 + event = doc.createEvent('HTMLEvents');
1.22325 + event.initEvent("load", false, false);
1.22326 + doc.dispatchEvent( event, false );
1.22327 + }
1.22328 + }catch(e){
1.22329 + console.log('%s', e);
1.22330 + }
1.22331 +
1.22332 + try{
1.22333 + if(doc.parentWindow){
1.22334 + event = doc.createEvent('HTMLEvents');
1.22335 + event.initEvent("load", false, false);
1.22336 + doc.parentWindow.dispatchEvent( event, false );
1.22337 + }
1.22338 + }catch(e){
1.22339 + console.log('%s', e);
1.22340 + }
1.22341 + try{
1.22342 + if(doc === window.document){
1.22343 + //console.log('triggering window.load')
1.22344 + event = doc.createEvent('HTMLEvents');
1.22345 + event.initEvent("load", false, false);
1.22346 + try{
1.22347 + window.dispatchEvent( event, false );
1.22348 + }catch(e){
1.22349 + console.log('%s', e);
1.22350 + }
1.22351 + }
1.22352 + }catch(e){
1.22353 + //console.log('%s', e);
1.22354 + //swallow
1.22355 + }
1.22356 + default:
1.22357 + if(node.getAttribute('onload')){
1.22358 + //console.log('%s onload', node);
1.22359 + node.onload();
1.22360 + }
1.22361 + break;
1.22362 + }//switch on name
1.22363 + default:
1.22364 + break;
1.22365 + }//switch on ns
1.22366 + break;
1.22367 + default:
1.22368 + console.log('element popped: %s %s', ns, name, node.ownerDocument+'');
1.22369 + }//switch on doc type
1.22370 + default:
1.22371 + break;
1.22372 + }//switch on parsing
1.22373 +};
1.22374 +
1.22375 +__extend__(HTMLElement.prototype,{
1.22376 + set innerHTML(html){
1.22377 + HTMLParser.parseFragment(html, this);
1.22378 + }
1.22379 +});
1.22380 +
1.22381 +/**
1.22382 + * @author john resig & the envjs team
1.22383 + * @uri http://www.envjs.com/
1.22384 + * @copyright 2008-2010
1.22385 + * @license MIT
1.22386 + */
1.22387 +//CLOSURE_END
1.22388 +}());
1.22389 +/*
1.22390 + * Envjs xhr.1.2.13
1.22391 + * Pure JavaScript Browser Environment
1.22392 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.22393 + * Copyright 2008-2010 John Resig, under the MIT License
1.22394 + *
1.22395 + * Parts of the implementation originally written by Yehuda Katz.
1.22396 + *
1.22397 + * This file simply provides the global definitions we need to
1.22398 + * be able to correctly implement to core browser (XML)HTTPRequest
1.22399 + * interfaces.
1.22400 + */
1.22401 +var Location,
1.22402 + XMLHttpRequest;
1.22403 +
1.22404 +/*
1.22405 + * Envjs xhr.1.2.13
1.22406 + * Pure JavaScript Browser Environment
1.22407 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.22408 + * Copyright 2008-2010 John Resig, under the MIT License
1.22409 + */
1.22410 +
1.22411 +//CLOSURE_START
1.22412 +(function(){
1.22413 +
1.22414 +
1.22415 +
1.22416 +
1.22417 +
1.22418 +/**
1.22419 + * @author john resig
1.22420 + */
1.22421 +// Helper method for extending one object with another.
1.22422 +function __extend__(a,b) {
1.22423 + for ( var i in b ) {
1.22424 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.22425 + if ( g || s ) {
1.22426 + if ( g ) { a.__defineGetter__(i, g); }
1.22427 + if ( s ) { a.__defineSetter__(i, s); }
1.22428 + } else {
1.22429 + a[i] = b[i];
1.22430 + }
1.22431 + } return a;
1.22432 +}
1.22433 +
1.22434 +/**
1.22435 + * @author john resig
1.22436 + */
1.22437 +//from jQuery
1.22438 +function __setArray__( target, array ) {
1.22439 + // Resetting the length to 0, then using the native Array push
1.22440 + // is a super-fast way to populate an object with array-like properties
1.22441 + target.length = 0;
1.22442 + Array.prototype.push.apply( target, array );
1.22443 +}
1.22444 +
1.22445 +/**
1.22446 + * @author ariel flesler
1.22447 + * http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
1.22448 + * @param {Object} str
1.22449 + */
1.22450 +function __trim__( str ){
1.22451 + return (str || "").replace( /^\s+|\s+$/g, "" );
1.22452 +}
1.22453 +
1.22454 +
1.22455 +/**
1.22456 + * @todo: document
1.22457 + */
1.22458 +__extend__(Document.prototype,{
1.22459 + load: function(url){
1.22460 + if(this.documentURI == 'about:html'){
1.22461 + this.location.assign(url);
1.22462 + }else if(this.documentURI == url){
1.22463 + this.location.reload(false);
1.22464 + }else{
1.22465 + this.location.replace(url);
1.22466 + }
1.22467 + },
1.22468 + get location(){
1.22469 + return new Location(this.documentURI, this);
1.22470 + },
1.22471 + set location(url){
1.22472 + //very important or you will go into an infinite
1.22473 + //loop when creating a xml document
1.22474 + if(url) {
1.22475 + this.location.replace(url);
1.22476 + }
1.22477 + }
1.22478 +});
1.22479 +
1.22480 +
1.22481 +HTMLFormElement.prototype.submit = function(){
1.22482 + var event = __submit__(this),
1.22483 + serialized,
1.22484 + xhr,
1.22485 + method,
1.22486 + action;
1.22487 + if(!event.cancelled){
1.22488 + serialized = __formSerialize__(this);
1.22489 + xhr = new XMLHttpRequest();
1.22490 + method = this.method !== ""?this.method:"GET";
1.22491 + action = this.action !== ""?this.action:this.ownerDocument.baseURI;
1.22492 + xhr.open(method, action, false);
1.22493 + xhr.send(data, false);
1.22494 + if(xhr.readyState === 4){
1.22495 + __exchangeHTMLDocument__(this.ownerDocument, xhr.responseText, url);
1.22496 + }
1.22497 + }
1.22498 +};
1.22499 +
1.22500 +/**
1.22501 + * Form Submissions
1.22502 + *
1.22503 + * This code is borrow largely from jquery.params and jquery.form.js
1.22504 + *
1.22505 + * formToArray() gathers form element data into an array of objects that can
1.22506 + * be passed to any of the following ajax functions: $.get, $.post, or load.
1.22507 + * Each object in the array has both a 'name' and 'value' property. An example of
1.22508 + * an array for a simple login form might be:
1.22509 + *
1.22510 + * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
1.22511 + *
1.22512 + * It is this array that is passed to pre-submit callback functions provided to the
1.22513 + * ajaxSubmit() and ajaxForm() methods.
1.22514 + *
1.22515 + * The semantic argument can be used to force form serialization in semantic order.
1.22516 + * This is normally true anyway, unless the form contains input elements of type='image'.
1.22517 + * If your form must be submitted with name/value pairs in semantic order and your form
1.22518 + * contains an input of type='image" then pass true for this arg, otherwise pass false
1.22519 + * (or nothing) to avoid the overhead for this logic.
1.22520 + *
1.22521 + *
1.22522 + * @name formToArray
1.22523 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
1.22524 + * @type Array<Object>
1.22525 + */
1.22526 +var __formToArray__ = function(form, semantic) {
1.22527 + var array = [],
1.22528 + elements = semantic ? form.getElementsByTagName('*') : form.elements,
1.22529 + element,
1.22530 + i,j,imax, jmax,
1.22531 + name,
1.22532 + value;
1.22533 +
1.22534 + if (!elements) {
1.22535 + return array;
1.22536 + }
1.22537 +
1.22538 + imax = elements.length;
1.22539 + for(i=0; i < imax; i++) {
1.22540 + element = elements[i];
1.22541 + name = element.name;
1.22542 + if (!name) {
1.22543 + continue;
1.22544 + }
1.22545 + if (semantic && form.clk && element.type === "image") {
1.22546 + // handle image inputs on the fly when semantic == true
1.22547 + if(!element.disabled && form.clk == element) {
1.22548 + array.push({
1.22549 + name: name+'.x',
1.22550 + value: form.clk_x
1.22551 + },{
1.22552 + name: name+'.y',
1.22553 + value: form.clk_y
1.22554 + });
1.22555 + }
1.22556 + continue;
1.22557 + }
1.22558 +
1.22559 + value = __fieldValue__(element, true);
1.22560 + if (value && value.constructor == Array) {
1.22561 + jmax = value.length;
1.22562 + for(j=0; j < jmax; j++){
1.22563 + array.push({name: name, value: value[j]});
1.22564 + }
1.22565 + } else if (value !== null && typeof value != 'undefined'){
1.22566 + array.push({name: name, value: value});
1.22567 + }
1.22568 + }
1.22569 +
1.22570 + if (!semantic && form.clk) {
1.22571 + // input type=='image' are not found in elements array! handle them here
1.22572 + elements = form.getElementsByTagName("input");
1.22573 + imax = imax=elements.length;
1.22574 + for(i=0; i < imax; i++) {
1.22575 + element = elements[i];
1.22576 + name = element.name;
1.22577 + if(name && !element.disabled && element.type == "image" && form.clk == input) {
1.22578 + array.push(
1.22579 + {name: name+'.x', value: form.clk_x},
1.22580 + {name: name+'.y', value: form.clk_y});
1.22581 + }
1.22582 + }
1.22583 + }
1.22584 + return array;
1.22585 +};
1.22586 +
1.22587 +
1.22588 +/**
1.22589 + * Serializes form data into a 'submittable' string. This method will return a string
1.22590 + * in the format: name1=value1&name2=value2
1.22591 + *
1.22592 + * The semantic argument can be used to force form serialization in semantic order.
1.22593 + * If your form must be submitted with name/value pairs in semantic order then pass
1.22594 + * true for this arg, otherwise pass false (or nothing) to avoid the overhead for
1.22595 + * this logic (which can be significant for very large forms).
1.22596 + *
1.22597 + *
1.22598 + * @name formSerialize
1.22599 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
1.22600 + * @type String
1.22601 + */
1.22602 +var __formSerialize__ = function(form, semantic) {
1.22603 + //hand off to param for proper encoding
1.22604 + return __param__(__formToArray__(form, semantic));
1.22605 +};
1.22606 +
1.22607 +
1.22608 +/**
1.22609 + * Serializes all field elements inputs Array into a query string.
1.22610 + * This method will return a string in the format: name1=value1&name2=value2
1.22611 + *
1.22612 + * The successful argument controls whether or not serialization is limited to
1.22613 + * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
1.22614 + * The default value of the successful argument is true.
1.22615 + *
1.22616 + *
1.22617 + * @name fieldSerialize
1.22618 + * @param successful true if only successful controls should be serialized (default is true)
1.22619 + * @type String
1.22620 + */
1.22621 +var __fieldSerialize__ = function(inputs, successful) {
1.22622 + var array = [],
1.22623 + input,
1.22624 + name,
1.22625 + value,
1.22626 + i,j, imax, jmax;
1.22627 +
1.22628 + imax = inputs.length;
1.22629 + for(i=0; i<imax; i++){
1.22630 + input = inputs[i];
1.22631 + name = input.name;
1.22632 + if (!name) {
1.22633 + return '';
1.22634 + }
1.22635 + value = __fieldValue__(input, successful);
1.22636 + if (value && value.constructor == Array) {
1.22637 + jmax = value.length;
1.22638 + for (j=0; j < jmax; j++){
1.22639 + array.push({
1.22640 + name: name,
1.22641 + value: value[j]
1.22642 + });
1.22643 + }
1.22644 + }else if (value !== null && typeof value != 'undefined'){
1.22645 + array.push({
1.22646 + name: input.name,
1.22647 + value: value
1.22648 + });
1.22649 + }
1.22650 + }
1.22651 +
1.22652 + //hand off for proper encoding
1.22653 + return __param__(array);
1.22654 +};
1.22655 +
1.22656 +
1.22657 +/**
1.22658 + * Returns the value(s) of the element in the matched set. For example, consider the following form:
1.22659 + *
1.22660 + *
1.22661 + * The successful argument controls whether or not the field element must be 'successful'
1.22662 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
1.22663 + * The default value of the successful argument is true. If this value is false the value(s)
1.22664 + * for each element is returned.
1.22665 + *
1.22666 + * Note: This method *always* returns an array. If no valid value can be determined the
1.22667 + * array will be empty, otherwise it will contain one or more values.
1.22668 + *
1.22669 + *
1.22670 + * @name fieldValue
1.22671 + * @param Boolean successful true if only the values for successful controls
1.22672 + * should be returned (default is true)
1.22673 + * @type Array<String>
1.22674 + */
1.22675 +var __fieldValues__ = function(inputs, successful) {
1.22676 + var i,
1.22677 + imax = inputs.length,
1.22678 + element,
1.22679 + values = [],
1.22680 + value;
1.22681 + for (i=0; i < imax; i++) {
1.22682 + element = inputs[i];
1.22683 + value = __fieldValue__(element, successful);
1.22684 + if (value === null || typeof value == 'undefined' ||
1.22685 + (value.constructor == Array && !value.length)) {
1.22686 + continue;
1.22687 + }
1.22688 + if (value.constructor == Array) {
1.22689 + Array.prototype.push(values, value);
1.22690 + } else {
1.22691 + values.push(value);
1.22692 + }
1.22693 + }
1.22694 + return values;
1.22695 +};
1.22696 +
1.22697 +/**
1.22698 + * Returns the value of the field element.
1.22699 + *
1.22700 + * The successful argument controls whether or not the field element must be 'successful'
1.22701 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
1.22702 + * The default value of the successful argument is true. If the given element is not
1.22703 + * successful and the successful arg is not false then the returned value will be null.
1.22704 + *
1.22705 + * Note: If the successful flag is true (default) but the element is not successful, the return will be null
1.22706 + * Note: The value returned for a successful select-multiple element will always be an array.
1.22707 + * Note: If the element has no value the return value will be undefined.
1.22708 + *
1.22709 + * @name fieldValue
1.22710 + * @param Element el The DOM element for which the value will be returned
1.22711 + * @param Boolean successful true if value returned must be for a successful controls (default is true)
1.22712 + * @type String or Array<String> or null or undefined
1.22713 + */
1.22714 +var __fieldValue__ = function(element, successful) {
1.22715 + var name = element.name,
1.22716 + type = element.type,
1.22717 + tag = element.tagName.toLowerCase(),
1.22718 + index,
1.22719 + array,
1.22720 + options,
1.22721 + option,
1.22722 + one,
1.22723 + i, imax,
1.22724 + value;
1.22725 +
1.22726 + if (typeof successful == 'undefined') {
1.22727 + successful = true;
1.22728 + }
1.22729 +
1.22730 + if (successful && (!name || element.disabled || type == 'reset' || type == 'button' ||
1.22731 + (type == 'checkbox' || type == 'radio') && !element.checked ||
1.22732 + (type == 'submit' || type == 'image') &&
1.22733 + element.form && element.form.clk != element || tag === 'select' &&
1.22734 + element.selectedIndex === -1)) {
1.22735 + return null;
1.22736 + }
1.22737 +
1.22738 + if (tag === 'select') {
1.22739 + index = element.selectedIndex;
1.22740 + if (index < 0) {
1.22741 + return null;
1.22742 + }
1.22743 + array = [];
1.22744 + options = element.options;
1.22745 + one = (type == 'select-one');
1.22746 + imax = (one ? index+1 : options.length);
1.22747 + i = (one ? index : 0);
1.22748 + for( i; i < imax; i++) {
1.22749 + option = options[i];
1.22750 + if (option.selected) {
1.22751 + value = option.value;
1.22752 + if (one) {
1.22753 + return value;
1.22754 + }
1.22755 + array.push(value);
1.22756 + }
1.22757 + }
1.22758 + return array;
1.22759 + }
1.22760 + return element.value;
1.22761 +};
1.22762 +
1.22763 +
1.22764 +/**
1.22765 + * Clears the form data. Takes the following actions on the form's input fields:
1.22766 + * - input text fields will have their 'value' property set to the empty string
1.22767 + * - select elements will have their 'selectedIndex' property set to -1
1.22768 + * - checkbox and radio inputs will have their 'checked' property set to false
1.22769 + * - inputs of type submit, button, reset, and hidden will *not* be effected
1.22770 + * - button elements will *not* be effected
1.22771 + *
1.22772 + *
1.22773 + * @name clearForm
1.22774 + */
1.22775 +var __clearForm__ = function(form) {
1.22776 + var i,
1.22777 + j, jmax,
1.22778 + elements,
1.22779 + resetable = ['input','select','textarea'];
1.22780 + for(i=0; i<resetable.length; i++){
1.22781 + elements = form.getElementsByTagName(resetable[i]);
1.22782 + jmax = elements.length;
1.22783 + for(j=0;j<jmax;j++){
1.22784 + __clearField__(elements[j]);
1.22785 + }
1.22786 + }
1.22787 +};
1.22788 +
1.22789 +/**
1.22790 + * Clears the selected form element. Takes the following actions on the element:
1.22791 + * - input text fields will have their 'value' property set to the empty string
1.22792 + * - select elements will have their 'selectedIndex' property set to -1
1.22793 + * - checkbox and radio inputs will have their 'checked' property set to false
1.22794 + * - inputs of type submit, button, reset, and hidden will *not* be effected
1.22795 + * - button elements will *not* be effected
1.22796 + *
1.22797 + * @name clearFields
1.22798 + */
1.22799 +var __clearField__ = function(element) {
1.22800 + var type = element.type,
1.22801 + tag = element.tagName.toLowerCase();
1.22802 + if (type == 'text' || type == 'password' || tag === 'textarea') {
1.22803 + element.value = '';
1.22804 + } else if (type == 'checkbox' || type == 'radio') {
1.22805 + element.checked = false;
1.22806 + } else if (tag === 'select') {
1.22807 + element.selectedIndex = -1;
1.22808 + }
1.22809 +};
1.22810 +
1.22811 +
1.22812 +// Serialize an array of key/values into a query string
1.22813 +var __param__= function( array ) {
1.22814 + var i, serialized = [];
1.22815 +
1.22816 + // Serialize the key/values
1.22817 + for(i=0; i<array.length; i++){
1.22818 + serialized[ serialized.length ] =
1.22819 + encodeURIComponent(array[i].name) + '=' +
1.22820 + encodeURIComponent(array[i].value);
1.22821 + }
1.22822 +
1.22823 + // Return the resulting serialization
1.22824 + return serialized.join("&").replace(/%20/g, "+");
1.22825 +};
1.22826 +
1.22827 +/**
1.22828 + * Location
1.22829 + *
1.22830 + * Mozilla MDC:
1.22831 + * https://developer.mozilla.org/En/DOM/Window.location
1.22832 + * https://developer.mozilla.org/en/DOM/document.location
1.22833 + *
1.22834 + * HTML5: 6.10.4 The Location interface
1.22835 + * http://dev.w3.org/html5/spec/Overview.html#location
1.22836 + *
1.22837 + * HTML5: 2.5.3 Interfaces for URL manipulation
1.22838 + * http://dev.w3.org/html5/spec/Overview.html#url-decomposition-idl-attributes
1.22839 + * All of section 2.5 is worth reading, but 2.5.3 contains very
1.22840 + * detailed information on how getters/setter should work
1.22841 + *
1.22842 + * NOT IMPLEMENTED:
1.22843 + * HTML5: Section 6.10.4.1 Security -- prevents scripts from another domain
1.22844 + * from accessing most of the 'Location'
1.22845 + * Not sure if anyone implements this in HTML4
1.22846 + */
1.22847 +
1.22848 +Location = function(url, doc, history) {
1.22849 + //console.log('Location url %s', url);
1.22850 + var $url = url,
1.22851 + $document = doc ? doc : null,
1.22852 + $history = history ? history : null;
1.22853 +
1.22854 + var parts = Envjs.urlsplit($url);
1.22855 +
1.22856 + return {
1.22857 + get hash() {
1.22858 + return parts.fragment ? '#' + parts.fragment : parts.fragment;
1.22859 + },
1.22860 + set hash(s) {
1.22861 + if (s[0] === '#') {
1.22862 + parts.fragment = s.substr(1);
1.22863 + } else {
1.22864 + parts.fragment = s;
1.22865 + }
1.22866 + $url = Envjs.urlunsplit(parts);
1.22867 + if ($history) {
1.22868 + $history.add($url, 'hash');
1.22869 + }
1.22870 + },
1.22871 +
1.22872 + get host() {
1.22873 + return parts.netloc;
1.22874 + },
1.22875 + set host(s) {
1.22876 + if (!s || s === '') {
1.22877 + return;
1.22878 + }
1.22879 +
1.22880 + parts.netloc = s;
1.22881 + $url = Envjs.urlunsplit(parts);
1.22882 +
1.22883 + // this regenerates hostname & port
1.22884 + parts = Envjs.urlsplit($url);
1.22885 +
1.22886 + if ($history) {
1.22887 + $history.add( $url, 'host');
1.22888 + }
1.22889 + this.assign($url);
1.22890 + },
1.22891 +
1.22892 + get hostname() {
1.22893 + return parts.hostname;
1.22894 + },
1.22895 + set hostname(s) {
1.22896 + if (!s || s === '') {
1.22897 + return;
1.22898 + }
1.22899 +
1.22900 + parts.netloc = s;
1.22901 + if (parts.port != '') {
1.22902 + parts.netloc += ':' + parts.port;
1.22903 + }
1.22904 + parts.hostname = s;
1.22905 + $url = Envjs.urlunsplit(parts);
1.22906 + if ($history) {
1.22907 + $history.add( $url, 'hostname');
1.22908 + }
1.22909 + this.assign($url);
1.22910 + },
1.22911 +
1.22912 + get href() {
1.22913 + return $url;
1.22914 + },
1.22915 + set href(url) {
1.22916 + $url = url;
1.22917 + if ($history) {
1.22918 + $history.add($url, 'href');
1.22919 + }
1.22920 + this.assign($url);
1.22921 + },
1.22922 +
1.22923 + get pathname() {
1.22924 + return parts.path;
1.22925 + },
1.22926 + set pathname(s) {
1.22927 + if (s[0] === '/') {
1.22928 + parts.path = s;
1.22929 + } else {
1.22930 + parts.path = '/' + s;
1.22931 + }
1.22932 + $url = Envjs.urlunsplit(parts);
1.22933 +
1.22934 + if ($history) {
1.22935 + $history.add($url, 'pathname');
1.22936 + }
1.22937 + this.assign($url);
1.22938 + },
1.22939 +
1.22940 + get port() {
1.22941 + // make sure it's a string
1.22942 + return '' + parts.port;
1.22943 + },
1.22944 + set port(p) {
1.22945 + // make a string
1.22946 + var s = '' + p;
1.22947 + parts.port = s;
1.22948 + parts.netloc = parts.hostname + ':' + parts.port;
1.22949 + $url = Envjs.urlunsplit(parts);
1.22950 + if ($history) {
1.22951 + $history.add( $url, 'port');
1.22952 + }
1.22953 + this.assign($url);
1.22954 + },
1.22955 +
1.22956 + get protocol() {
1.22957 + return parts.scheme + ':';
1.22958 + },
1.22959 + set protocol(s) {
1.22960 + var i = s.indexOf(':');
1.22961 + if (i != -1) {
1.22962 + s = s.substr(0,i);
1.22963 + }
1.22964 + parts.scheme = s;
1.22965 + $url = Envjs.urlunsplit(parts);
1.22966 + if ($history) {
1.22967 + $history.add($url, 'protocol');
1.22968 + }
1.22969 + this.assign($url);
1.22970 + },
1.22971 +
1.22972 + get search() {
1.22973 + return (parts.query) ? '?' + parts.query : parts.query;
1.22974 + },
1.22975 + set search(s) {
1.22976 + if (s[0] == '?') {
1.22977 + s = s.substr(1);
1.22978 + }
1.22979 + parts.query = s;
1.22980 + $url = Envjs.urlunsplit(parts);
1.22981 + if ($history) {
1.22982 + $history.add($url, 'search');
1.22983 + }
1.22984 + this.assign($url);
1.22985 + },
1.22986 +
1.22987 + toString: function() {
1.22988 + return $url;
1.22989 + },
1.22990 +
1.22991 + assign: function(url) {
1.22992 + var _this = this,
1.22993 + xhr,
1.22994 + event,
1.22995 + cookie;
1.22996 +
1.22997 + //console.log('assigning %s',url);
1.22998 +
1.22999 + // update closure upvars
1.23000 + $url = url;
1.23001 + parts = Envjs.urlsplit($url);
1.23002 +
1.23003 + //we can only assign if this Location is associated with a document
1.23004 + if ($document) {
1.23005 + //console.log('fetching %s (async? %s)', url, $document.async);
1.23006 + xhr = new XMLHttpRequest();
1.23007 +
1.23008 + // TODO: make async flag a Envjs paramter
1.23009 + xhr.open('GET', url, false);//$document.async);
1.23010 +
1.23011 + // TODO: is there a better way to test if a node is an HTMLDocument?
1.23012 + if ($document.toString() === '[object HTMLDocument]') {
1.23013 + //tell the xhr to not parse the document as XML
1.23014 + //console.log('loading html document');
1.23015 + xhr.onreadystatechange = function() {
1.23016 + //console.log('readyState %s', xhr.readyState);
1.23017 + if (xhr.readyState === 4) {
1.23018 + $document.baseURI = new Location(url, $document);
1.23019 + //console.log('new document baseURI %s', $document.baseURI);
1.23020 + __exchangeHTMLDocument__($document, xhr.responseText, url);
1.23021 + }
1.23022 + };
1.23023 + xhr.send(null, false);
1.23024 + } else {
1.23025 + //Treat as an XMLDocument
1.23026 + xhr.onreadystatechange = function() {
1.23027 + if (xhr.readyState === 4) {
1.23028 + $document = xhr.responseXML;
1.23029 + $document.baseURI = $url;
1.23030 + if ($document.createEvent) {
1.23031 + event = $document.createEvent('Event');
1.23032 + event.initEvent('DOMContentLoaded');
1.23033 + $document.dispatchEvent( event, false );
1.23034 + }
1.23035 + }
1.23036 + };
1.23037 + xhr.send();
1.23038 + }
1.23039 +
1.23040 + };
1.23041 +
1.23042 + },
1.23043 + reload: function(forceget) {
1.23044 + //for now we have no caching so just proxy to assign
1.23045 + //console.log('reloading %s',$url);
1.23046 + this.assign($url);
1.23047 + },
1.23048 + replace: function(url) {
1.23049 + this.assign(url);
1.23050 + }
1.23051 + };
1.23052 +};
1.23053 +
1.23054 +var __exchangeHTMLDocument__ = function(doc, text, url) {
1.23055 + var html, head, title, body, event, e;
1.23056 + // try {
1.23057 + doc.baseURI = url;
1.23058 + HTMLParser.parseDocument(text, doc);
1.23059 + Envjs.wait();
1.23060 + /* } catch (e) {
1.23061 + console.log('parsererror %s', e);
1.23062 + try {
1.23063 + console.log('document \n %s', doc.documentElement.outerHTML);
1.23064 + } catch (e) {
1.23065 + // swallow
1.23066 + }
1.23067 + doc = new HTMLDocument(new DOMImplementation(), doc.ownerWindow);
1.23068 + html = doc.createElement('html');
1.23069 + head = doc.createElement('head');
1.23070 + title = doc.createElement('title');
1.23071 + body = doc.createElement('body');
1.23072 + title.appendChild(doc.createTextNode('Error'));
1.23073 + body.appendChild(doc.createTextNode('' + e));
1.23074 + head.appendChild(title);
1.23075 + html.appendChild(head);
1.23076 + html.appendChild(body);
1.23077 + doc.appendChild(html);
1.23078 + //console.log('default error document \n %s', doc.documentElement.outerHTML);
1.23079 +
1.23080 + //DOMContentLoaded event
1.23081 + if (doc.createEvent) {
1.23082 + event = doc.createEvent('Event');
1.23083 + event.initEvent('DOMContentLoaded', false, false);
1.23084 + doc.dispatchEvent( event, false );
1.23085 +
1.23086 + event = doc.createEvent('HTMLEvents');
1.23087 + event.initEvent('load', false, false);
1.23088 + doc.dispatchEvent( event, false );
1.23089 + }
1.23090 +
1.23091 + //finally fire the window.onload event
1.23092 + //TODO: this belongs in window.js which is a event
1.23093 + // event handler for DOMContentLoaded on document
1.23094 +
1.23095 + try {
1.23096 + if (doc === window.document) {
1.23097 + console.log('triggering window.load');
1.23098 + event = doc.createEvent('HTMLEvents');
1.23099 + event.initEvent('load', false, false);
1.23100 + window.dispatchEvent( event, false );
1.23101 + }
1.23102 + } catch (e) {
1.23103 + //console.log('window load event failed %s', e);
1.23104 + //swallow
1.23105 + }
1.23106 + }; */ /* closes return {... */
1.23107 +};
1.23108 +
1.23109 +/**
1.23110 + *
1.23111 + * @class XMLHttpRequest
1.23112 + * @author Originally implemented by Yehuda Katz
1.23113 + *
1.23114 + */
1.23115 +
1.23116 +// this implementation can be used without requiring a DOMParser
1.23117 +// assuming you dont try to use it to get xml/html documents
1.23118 +var domparser;
1.23119 +
1.23120 +XMLHttpRequest = function(){
1.23121 + this.headers = {};
1.23122 + this.responseHeaders = {};
1.23123 + this.aborted = false;//non-standard
1.23124 +};
1.23125 +
1.23126 +// defined by the standard: http://www.w3.org/TR/XMLHttpRequest/#xmlhttprequest
1.23127 +// but not provided by Firefox. Safari and others do define it.
1.23128 +XMLHttpRequest.UNSENT = 0;
1.23129 +XMLHttpRequest.OPEN = 1;
1.23130 +XMLHttpRequest.HEADERS_RECEIVED = 2;
1.23131 +XMLHttpRequest.LOADING = 3;
1.23132 +XMLHttpRequest.DONE = 4;
1.23133 +
1.23134 +XMLHttpRequest.prototype = {
1.23135 + open: function(method, url, async, user, password){
1.23136 + //console.log('openning xhr %s %s %s', method, url, async);
1.23137 + this.readyState = 1;
1.23138 + this.async = (async === false)?false:true;
1.23139 + this.method = method || "GET";
1.23140 + this.url = Envjs.uri(url);
1.23141 + this.onreadystatechange();
1.23142 + },
1.23143 + setRequestHeader: function(header, value){
1.23144 + this.headers[header] = value;
1.23145 + },
1.23146 + send: function(data, parsedoc/*non-standard*/){
1.23147 + var _this = this;
1.23148 + parsedoc = (parsedoc === undefined)?true:!!parsedoc;
1.23149 + function makeRequest(){
1.23150 + var cookie = Envjs.getCookies(_this.url);
1.23151 + if(cookie){
1.23152 + _this.setRequestHeader('COOKIE', cookie);
1.23153 + }
1.23154 + Envjs.connection(_this, function(){
1.23155 + if (!_this.aborted){
1.23156 + var doc = null,
1.23157 + domparser,
1.23158 + cookie;
1.23159 + // try to parse the document if we havent explicitly set a
1.23160 + // flag saying not to and if we can assure the text at least
1.23161 + // starts with valid xml
1.23162 + if ( parsedoc && _this.responseText.match(/^\s*</) ) {
1.23163 + domparser = domparser||new DOMParser();
1.23164 + try {
1.23165 + //console.log("parsing response text into xml document");
1.23166 + doc = domparser.parseFromString(_this.responseText+"", 'text/xml');
1.23167 + } catch(e) {
1.23168 + //Envjs.error('response XML does not appear to be well formed xml', e);
1.23169 + console.warn('parseerror \n%s', e);
1.23170 + doc = document.implementation.createDocument('','error',null);
1.23171 + doc.appendChild(doc.createTextNode(e+''));
1.23172 + }
1.23173 + }else{
1.23174 + //Envjs.warn('response XML does not appear to be xml');
1.23175 + }
1.23176 +
1.23177 + try{
1.23178 + cookie = _this.getResponseHeader('SET-COOKIE');
1.23179 + if(cookie){
1.23180 + Envjs.setCookie(_this.url, cookie);
1.23181 + }
1.23182 + }catch(e){
1.23183 + console.warn("Failed to set cookie");
1.23184 + }
1.23185 + _this.__defineGetter__("responseXML", function(){
1.23186 + return doc;
1.23187 + });
1.23188 + }
1.23189 + }, data);
1.23190 +
1.23191 + if (!_this.aborted){
1.23192 + _this.onreadystatechange();
1.23193 + }
1.23194 + }
1.23195 +
1.23196 + if (this.async){
1.23197 + //TODO: what we really need to do here is rejoin the
1.23198 + // current thread and call onreadystatechange via
1.23199 + // setTimeout so the callback is essentially applied
1.23200 + // at the end of the current callstack
1.23201 + //console.log('requesting async: %s', this.url);
1.23202 + Envjs.runAsync(makeRequest);
1.23203 + }else{
1.23204 + //console.log('requesting sync: %s', this.url);
1.23205 + makeRequest();
1.23206 + }
1.23207 + },
1.23208 + abort: function(){
1.23209 + this.aborted = true;
1.23210 + },
1.23211 + onreadystatechange: function(){
1.23212 + //Instance specific
1.23213 + },
1.23214 + getResponseHeader: function(header){
1.23215 + //$debug('GETTING RESPONSE HEADER '+header);
1.23216 + var rHeader, returnedHeaders;
1.23217 + if (this.readyState < 3){
1.23218 + throw new Error("INVALID_STATE_ERR");
1.23219 + } else {
1.23220 + returnedHeaders = [];
1.23221 + for (rHeader in this.responseHeaders) {
1.23222 + if (rHeader.match(new RegExp(header, "i"))) {
1.23223 + returnedHeaders.push(this.responseHeaders[rHeader]);
1.23224 + }
1.23225 + }
1.23226 +
1.23227 + if (returnedHeaders.length){
1.23228 + //$debug('GOT RESPONSE HEADER '+returnedHeaders.join(", "));
1.23229 + return returnedHeaders.join(", ");
1.23230 + }
1.23231 + }
1.23232 + return null;
1.23233 + },
1.23234 + getAllResponseHeaders: function(){
1.23235 + var header, returnedHeaders = [];
1.23236 + if (this.readyState < 3){
1.23237 + throw new Error("INVALID_STATE_ERR");
1.23238 + } else {
1.23239 + for (header in this.responseHeaders) {
1.23240 + returnedHeaders.push( header + ": " + this.responseHeaders[header] );
1.23241 + }
1.23242 + }
1.23243 + return returnedHeaders.join("\r\n");
1.23244 + },
1.23245 + async: true,
1.23246 + readyState: 0,
1.23247 + responseText: "",
1.23248 + status: 0,
1.23249 + statusText: ""
1.23250 +};
1.23251 +
1.23252 +/**
1.23253 + * @author john resig & the envjs team
1.23254 + * @uri http://www.envjs.com/
1.23255 + * @copyright 2008-2010
1.23256 + * @license MIT
1.23257 + */
1.23258 +//CLOSURE_END
1.23259 +}());
1.23260 +
1.23261 +/**
1.23262 + * @todo: document
1.23263 + */
1.23264 +var Window,
1.23265 + Screen,
1.23266 + History,
1.23267 + Navigator;
1.23268 +
1.23269 +
1.23270 +/*
1.23271 + * Envjs window.1.2.13
1.23272 + * Pure JavaScript Browser Environment
1.23273 + * By John Resig <http://ejohn.org/> and the Envjs Team
1.23274 + * Copyright 2008-2010 John Resig, under the MIT License
1.23275 + */
1.23276 +
1.23277 +//CLOSURE_START
1.23278 +(function(){
1.23279 +
1.23280 +
1.23281 +
1.23282 +
1.23283 +
1.23284 +/**
1.23285 + * @author john resig
1.23286 + */
1.23287 +// Helper method for extending one object with another.
1.23288 +function __extend__(a,b) {
1.23289 + for ( var i in b ) {
1.23290 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
1.23291 + if ( g || s ) {
1.23292 + if ( g ) { a.__defineGetter__(i, g); }
1.23293 + if ( s ) { a.__defineSetter__(i, s); }
1.23294 + } else {
1.23295 + a[i] = b[i];
1.23296 + }
1.23297 + } return a;
1.23298 +}
1.23299 +
1.23300 +/**
1.23301 + * @todo: document
1.23302 + */
1.23303 +
1.23304 +__extend__(HTMLFrameElement.prototype,{
1.23305 +
1.23306 + get contentDocument(){
1.23307 + return this.contentWindow?
1.23308 + this.contentWindow.document:
1.23309 + null;
1.23310 + },
1.23311 + set src(value){
1.23312 + var event;
1.23313 + this.setAttribute('src', value);
1.23314 + if (this.parentNode && value && value.length > 0){
1.23315 + //console.log('loading frame %s', value);
1.23316 + Envjs.loadFrame(this, Envjs.uri(value));
1.23317 +
1.23318 + //console.log('event frame load %s', value);
1.23319 + event = this.ownerDocument.createEvent('HTMLEvents');
1.23320 + event.initEvent("load", false, false);
1.23321 + this.dispatchEvent( event, false );
1.23322 + }
1.23323 + }
1.23324 +
1.23325 +});
1.23326 +
1.23327 +/*
1.23328 + * history.js
1.23329 + *
1.23330 + */
1.23331 +
1.23332 +History = function(owner) {
1.23333 + var $current = 0,
1.23334 + $history = [null],
1.23335 + $owner = owner;
1.23336 +
1.23337 + return {
1.23338 + go : function(target) {
1.23339 + if (typeof target === "number") {
1.23340 + target = $current + target;
1.23341 + if (target > -1 && target < $history.length){
1.23342 + if ($history[target].type === "hash") {
1.23343 + if ($owner.location) {
1.23344 + $owner.location.hash = $history[target].value;
1.23345 + }
1.23346 + } else {
1.23347 + if ($owner.location) {
1.23348 + $owner.location = $history[target].value;
1.23349 + }
1.23350 + }
1.23351 + $current = target;
1.23352 + }
1.23353 + } else {
1.23354 + //TODO: walk through the history and find the 'best match'?
1.23355 + }
1.23356 + },
1.23357 +
1.23358 + get length() {
1.23359 + return $history.length;
1.23360 + },
1.23361 +
1.23362 + back : function(count) {
1.23363 + if (count) {
1.23364 + this.go(-count);
1.23365 + } else {
1.23366 + this.go(-1);
1.23367 + }
1.23368 + },
1.23369 +
1.23370 + get current() {
1.23371 + return this.item($current);
1.23372 + },
1.23373 +
1.23374 + get previous() {
1.23375 + return this.item($current-1);
1.23376 + },
1.23377 +
1.23378 + forward : function(count) {
1.23379 + if (count) {
1.23380 + this.go(count);
1.23381 + } else {
1.23382 + this.go(1);
1.23383 + }
1.23384 + },
1.23385 +
1.23386 + item: function(idx) {
1.23387 + if (idx >= 0 && idx < $history.length) {
1.23388 + return $history[idx];
1.23389 + } else {
1.23390 + return null;
1.23391 + }
1.23392 + },
1.23393 +
1.23394 + add: function(newLocation, type) {
1.23395 + //not a standard interface, we expose it to simplify
1.23396 + //history state modifications
1.23397 + if (newLocation !== $history[$current]) {
1.23398 + $history.slice(0, $current);
1.23399 + $history.push({
1.23400 + type: type || 'href',
1.23401 + value: newLocation
1.23402 + });
1.23403 + }
1.23404 + }
1.23405 + }; /* closes 'return {' */
1.23406 +};
1.23407 +
1.23408 +
1.23409 +/*
1.23410 + * navigator.js
1.23411 + * Browser Navigator
1.23412 + */
1.23413 +Navigator = function(){
1.23414 +
1.23415 + return {
1.23416 + get appCodeName(){
1.23417 + return Envjs.appCodeName;
1.23418 + },
1.23419 + get appName(){
1.23420 + return Envjs.appName;
1.23421 + },
1.23422 + get appVersion(){
1.23423 + return Envjs.version +" ("+
1.23424 + this.platform +"; "+
1.23425 + "U; "+//?
1.23426 + Envjs.os_name+" "+Envjs.os_arch+" "+Envjs.os_version+"; "+
1.23427 + (Envjs.lang?Envjs.lang:"en-US")+"; "+
1.23428 + "rv:"+Envjs.revision+
1.23429 + ")";
1.23430 + },
1.23431 + get cookieEnabled(){
1.23432 + return true;
1.23433 + },
1.23434 + get mimeTypes(){
1.23435 + return [];
1.23436 + },
1.23437 + get platform(){
1.23438 + return Envjs.platform;
1.23439 + },
1.23440 + get plugins(){
1.23441 + return [];
1.23442 + },
1.23443 + get userAgent(){
1.23444 + return this.appCodeName + "/" + this.appVersion + " " + this.appName;
1.23445 + },
1.23446 + javaEnabled : function(){
1.23447 + return Envjs.javaEnabled;
1.23448 + }
1.23449 + };
1.23450 +};
1.23451 +
1.23452 +
1.23453 +/**
1.23454 + * Screen
1.23455 + * @param {Object} __window__
1.23456 + */
1.23457 +
1.23458 +Screen = function(__window__){
1.23459 +
1.23460 + var $availHeight = 600,
1.23461 + $availWidth = 800,
1.23462 + $colorDepth = 16,
1.23463 + $pixelDepth = 24,
1.23464 + $height = 600,
1.23465 + $width = 800,
1.23466 + $top = 0,
1.23467 + $left = 0,
1.23468 + $availTop = 0,
1.23469 + $availLeft = 0;
1.23470 +
1.23471 + __extend__( __window__, {
1.23472 + moveBy : function(dx,dy){
1.23473 + //TODO - modify $locals to reflect change
1.23474 + },
1.23475 + moveTo : function(x,y) {
1.23476 + //TODO - modify $locals to reflect change
1.23477 + },
1.23478 + /*print : function(){
1.23479 + //TODO - good global to modify to ensure print is not misused
1.23480 + };*/
1.23481 + resizeBy : function(dw, dh){
1.23482 + __window__resizeTo($width + dw, $height + dh);
1.23483 + },
1.23484 + resizeTo : function(width, height){
1.23485 + $width = (width <= $availWidth) ? width : $availWidth;
1.23486 + $height = (height <= $availHeight) ? height : $availHeight;
1.23487 + },
1.23488 + scroll : function(x,y){
1.23489 + //TODO - modify $locals to reflect change
1.23490 + },
1.23491 + scrollBy : function(dx, dy){
1.23492 + //TODO - modify $locals to reflect change
1.23493 + },
1.23494 + scrollTo : function(x,y){
1.23495 + //TODO - modify $locals to reflect change
1.23496 + }
1.23497 + });
1.23498 +
1.23499 + return {
1.23500 + get top(){
1.23501 + return $top;
1.23502 + },
1.23503 + get left(){
1.23504 + return $left;
1.23505 + },
1.23506 + get availTop(){
1.23507 + return $availTop;
1.23508 + },
1.23509 + get availLeft(){
1.23510 + return $availLeft;
1.23511 + },
1.23512 + get availHeight(){
1.23513 + return $availHeight;
1.23514 + },
1.23515 + get availWidth(){
1.23516 + return $availWidth;
1.23517 + },
1.23518 + get colorDepth(){
1.23519 + return $colorDepth;
1.23520 + },
1.23521 + get pixelDepth(){
1.23522 + return $pixelDepth;
1.23523 + },
1.23524 + get height(){
1.23525 + return $height;
1.23526 + },
1.23527 + get width(){
1.23528 + return $width;
1.23529 + }
1.23530 + };
1.23531 +};
1.23532 +
1.23533 +/*
1.23534 + * Copyright (c) 2010 Nick Galbreath
1.23535 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
1.23536 + *
1.23537 + * Permission is hereby granted, free of charge, to any person
1.23538 + * obtaining a copy of this software and associated documentation
1.23539 + * files (the "Software"), to deal in the Software without
1.23540 + * restriction, including without limitation the rights to use,
1.23541 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
1.23542 + * copies of the Software, and to permit persons to whom the
1.23543 + * Software is furnished to do so, subject to the following
1.23544 + * conditions:
1.23545 + *
1.23546 + * The above copyright notice and this permission notice shall be
1.23547 + * included in all copies or substantial portions of the Software.
1.23548 + *
1.23549 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1.23550 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
1.23551 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1.23552 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
1.23553 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
1.23554 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1.23555 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
1.23556 + * OTHER DEALINGS IN THE SOFTWARE.
1.23557 + */
1.23558 +
1.23559 +/* base64 encode/decode compatible with window.btoa/atob
1.23560 + *
1.23561 + * window.atob/btoa is a Firefox extension to convert binary data (the "b")
1.23562 + * to base64 (ascii, the "a").
1.23563 + *
1.23564 + * It is also found in Safari and Chrome. It is not available in IE.
1.23565 + *
1.23566 + * if (!window.btoa) window.btoa = base64.encode
1.23567 + * if (!window.atob) window.atob = base64.decode
1.23568 + *
1.23569 + * The original spec's for atob/btoa are a bit lacking
1.23570 + * https://developer.mozilla.org/en/DOM/window.atob
1.23571 + * https://developer.mozilla.org/en/DOM/window.btoa
1.23572 + *
1.23573 + * window.btoa and base64.encode takes a string where charCodeAt is [0,255]
1.23574 + * If any character is not [0,255], then an DOMException(5) is thrown.
1.23575 + *
1.23576 + * window.atob and base64.decode take a base64-encoded string
1.23577 + * If the input length is not a multiple of 4, or contains invalid characters
1.23578 + * then an DOMException(5) is thrown.
1.23579 + */
1.23580 +var base64 = {};
1.23581 +base64.PADCHAR = '=';
1.23582 +base64.ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
1.23583 +
1.23584 +base64.makeDOMException = function() {
1.23585 + // sadly in FF,Safari,Chrome you can't make a DOMException
1.23586 + var e, tmp;
1.23587 +
1.23588 + try {
1.23589 + return new DOMException(DOMException.INVALID_CHARACTER_ERR);
1.23590 + } catch (tmp) {
1.23591 + // not available, just passback a duck-typed equiv
1.23592 + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error
1.23593 + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error/prototype
1.23594 + var ex = new Error("DOM Exception 5");
1.23595 +
1.23596 + // ex.number and ex.description is IE-specific.
1.23597 + ex.code = ex.number = 5;
1.23598 + ex.name = ex.description = "INVALID_CHARACTER_ERR";
1.23599 +
1.23600 + // Safari/Chrome output format
1.23601 + ex.toString = function() { return 'Error: ' + ex.name + ': ' + ex.message; };
1.23602 + return ex;
1.23603 + }
1.23604 +};
1.23605 +
1.23606 +base64.getbyte64 = function(s,i) {
1.23607 + // This is oddly fast, except on Chrome/V8.
1.23608 + // Minimal or no improvement in performance by using a
1.23609 + // object with properties mapping chars to value (eg. 'A': 0)
1.23610 + var idx = base64.ALPHA.indexOf(s.charAt(i));
1.23611 + if (idx === -1) {
1.23612 + throw base64.makeDOMException();
1.23613 + }
1.23614 + return idx;
1.23615 +};
1.23616 +
1.23617 +base64.decode = function(s) {
1.23618 + // convert to string
1.23619 + s = '' + s;
1.23620 + var getbyte64 = base64.getbyte64;
1.23621 + var pads, i, b10;
1.23622 + var imax = s.length;
1.23623 + if (imax === 0) {
1.23624 + return s;
1.23625 + }
1.23626 +
1.23627 + if (imax % 4 !== 0) {
1.23628 + throw base64.makeDOMException();
1.23629 + }
1.23630 +
1.23631 + pads = 0;
1.23632 + if (s.charAt(imax - 1) === base64.PADCHAR) {
1.23633 + pads = 1;
1.23634 + if (s.charAt(imax - 2) === base64.PADCHAR) {
1.23635 + pads = 2;
1.23636 + }
1.23637 + // either way, we want to ignore this last block
1.23638 + imax -= 4;
1.23639 + }
1.23640 +
1.23641 + var x = [];
1.23642 + for (i = 0; i < imax; i += 4) {
1.23643 + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) |
1.23644 + (getbyte64(s,i+2) << 6) | getbyte64(s,i+3);
1.23645 + x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff));
1.23646 + }
1.23647 +
1.23648 + switch (pads) {
1.23649 + case 1:
1.23650 + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | (getbyte64(s,i+2) << 6);
1.23651 + x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff));
1.23652 + break;
1.23653 + case 2:
1.23654 + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12);
1.23655 + x.push(String.fromCharCode(b10 >> 16));
1.23656 + break;
1.23657 + }
1.23658 + return x.join('');
1.23659 +};
1.23660 +
1.23661 +base64.getbyte = function(s,i) {
1.23662 + var x = s.charCodeAt(i);
1.23663 + if (x > 255) {
1.23664 + throw base64.makeDOMException();
1.23665 + }
1.23666 + return x;
1.23667 +};
1.23668 +
1.23669 +base64.encode = function(s) {
1.23670 + if (arguments.length !== 1) {
1.23671 + throw new SyntaxError("Not enough arguments");
1.23672 + }
1.23673 + var padchar = base64.PADCHAR;
1.23674 + var alpha = base64.ALPHA;
1.23675 + var getbyte = base64.getbyte;
1.23676 +
1.23677 + var i, b10;
1.23678 + var x = [];
1.23679 +
1.23680 + // convert to string
1.23681 + s = '' + s;
1.23682 +
1.23683 + var imax = s.length - s.length % 3;
1.23684 +
1.23685 + if (s.length === 0) {
1.23686 + return s;
1.23687 + }
1.23688 + for (i = 0; i < imax; i += 3) {
1.23689 + b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8) | getbyte(s,i+2);
1.23690 + x.push(alpha.charAt(b10 >> 18));
1.23691 + x.push(alpha.charAt((b10 >> 12) & 0x3F));
1.23692 + x.push(alpha.charAt((b10 >> 6) & 0x3f));
1.23693 + x.push(alpha.charAt(b10 & 0x3f));
1.23694 + }
1.23695 + switch (s.length - imax) {
1.23696 + case 1:
1.23697 + b10 = getbyte(s,i) << 16;
1.23698 + x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
1.23699 + padchar + padchar);
1.23700 + break;
1.23701 + case 2:
1.23702 + b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8);
1.23703 + x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
1.23704 + alpha.charAt((b10 >> 6) & 0x3f) + padchar);
1.23705 + break;
1.23706 + }
1.23707 + return x.join('');
1.23708 +};
1.23709 +//These descriptions of window properties are taken loosely David Flanagan's
1.23710 +//'JavaScript - The Definitive Guide' (O'Reilly)
1.23711 +
1.23712 +var __windows__ = {};
1.23713 +
1.23714 +var __top__ = function(_scope){
1.23715 + var _parent = _scope.parent;
1.23716 + while (_scope && _parent && _scope !== _parent) {
1.23717 + if (_parent === _parent.parent) {
1.23718 + break;
1.23719 + }
1.23720 + _parent = _parent.parent;
1.23721 + //console.log('scope %s _parent %s', scope, _parent);
1.23722 + }
1.23723 + return _parent || null;
1.23724 +};
1.23725 +
1.23726 +/**
1.23727 + * Window
1.23728 + * @param {Object} scope
1.23729 + * @param {Object} parent
1.23730 + * @param {Object} opener
1.23731 + */
1.23732 +Window = function(scope, parent, opener){
1.23733 +
1.23734 + // the window property is identical to the self property and to this obj
1.23735 + //var proxy = new Envjs.proxy(scope, parent);
1.23736 + //scope.__proxy__ = proxy;
1.23737 + scope.__defineGetter__('window', function(){
1.23738 + return scope;
1.23739 + });
1.23740 +
1.23741 + var $uuid = new Date().getTime()+'-'+Math.floor(Math.random()*1000000000000000);
1.23742 + __windows__[$uuid] = scope;
1.23743 + //console.log('opening window %s', $uuid);
1.23744 +
1.23745 + // every window has one-and-only-one .document property which is always
1.23746 + // an [object HTMLDocument]. also, only window.document objects are
1.23747 + // html documents, all other documents created by the window.document are
1.23748 + // [object XMLDocument]
1.23749 + var $htmlImplementation = new DOMImplementation();
1.23750 + $htmlImplementation.namespaceAware = true;
1.23751 + $htmlImplementation.errorChecking = false;
1.23752 +
1.23753 + // read only reference to the Document object
1.23754 + var $document = new HTMLDocument($htmlImplementation, scope);
1.23755 +
1.23756 + // A read-only reference to the Window object that contains this window
1.23757 + // or frame. If the window is a top-level window, parent refers to
1.23758 + // the window itself. If this window is a frame, this property refers
1.23759 + // to the window or frame that contains it.
1.23760 + var $parent = parent;
1.23761 +
1.23762 + /**> $cookies - see cookie.js <*/
1.23763 + // read only boolean specifies whether the window has been closed
1.23764 + var $closed = false;
1.23765 +
1.23766 + // a read/write string that specifies the default message that
1.23767 + // appears in the status line
1.23768 + var $defaultStatus = "Done";
1.23769 +
1.23770 + // IE only, refers to the most recent event object - this maybe be
1.23771 + // removed after review
1.23772 + var $event = null;
1.23773 +
1.23774 + // a read-only reference to the History object
1.23775 + var $history = new History();
1.23776 +
1.23777 + // a read-only reference to the Location object. the location object does
1.23778 + // expose read/write properties
1.23779 + var $location = new Location('about:blank', $document, $history);
1.23780 +
1.23781 + // The name of window/frame. Set directly, when using open(), or in frameset.
1.23782 + // May be used when specifying the target attribute of links
1.23783 + var $name = null;
1.23784 +
1.23785 + // a read-only reference to the Navigator object
1.23786 + var $navigator = new Navigator();
1.23787 +
1.23788 + // a read/write reference to the Window object that contained the script
1.23789 + // that called open() to open this browser window. This property is valid
1.23790 + // only for top-level window objects.
1.23791 + var $opener = opener?opener:null;
1.23792 +
1.23793 + // read-only properties that specify the height and width, in pixels
1.23794 + var $innerHeight = 600, $innerWidth = 800;
1.23795 +
1.23796 + // Read-only properties that specify the total height and width, in pixels,
1.23797 + // of the browser window. These dimensions include the height and width of
1.23798 + // the menu bar, toolbars, scrollbars, window borders and so on. These
1.23799 + // properties are not supported by IE and IE offers no alternative
1.23800 + // properties;
1.23801 + var $outerHeight = $innerHeight,
1.23802 + $outerWidth = $innerWidth;
1.23803 +
1.23804 + // Read-only properties that specify the number of pixels that the current
1.23805 + // document has been scrolled to the right and down. These are not
1.23806 + // supported by IE.
1.23807 + var $pageXOffset = 0, $pageYOffset = 0;
1.23808 +
1.23809 + // a read-only reference to the Screen object that specifies information
1.23810 + // about the screen: the number of available pixels and the number of
1.23811 + // available colors.
1.23812 + var $screen = new Screen(scope);
1.23813 +
1.23814 + // read only properties that specify the coordinates of the upper-left
1.23815 + // corner of the screen.
1.23816 + var $screenX = 1,
1.23817 + $screenY = 1;
1.23818 + var $screenLeft = $screenX,
1.23819 + $screenTop = $screenY;
1.23820 +
1.23821 + // a read/write string that specifies the current status line.
1.23822 + var $status = '';
1.23823 +
1.23824 + __extend__(scope, EventTarget.prototype);
1.23825 +
1.23826 + return __extend__( scope, {
1.23827 + get closed(){
1.23828 + return $closed;
1.23829 + },
1.23830 + get defaultStatus(){
1.23831 + return $defaultStatus;
1.23832 + },
1.23833 + set defaultStatus(defaultStatus){
1.23834 + $defaultStatus = defaultStatus;
1.23835 + },
1.23836 + get document(){
1.23837 + return $document;
1.23838 + },
1.23839 + set document(doc){
1.23840 + $document = doc;
1.23841 + },
1.23842 + /*
1.23843 + deprecated ie specific property probably not good to support
1.23844 + get event(){
1.23845 + return $event;
1.23846 + },
1.23847 + */
1.23848 + get frames(){
1.23849 + return new HTMLCollection($document.getElementsByTagName('frame'));
1.23850 + },
1.23851 + get length(){
1.23852 + // should be frames.length,
1.23853 + return this.frames.length;
1.23854 + },
1.23855 + get history(){
1.23856 + return $history;
1.23857 + },
1.23858 + get innerHeight(){
1.23859 + return $innerHeight;
1.23860 + },
1.23861 + get innerWidth(){
1.23862 + return $innerWidth;
1.23863 + },
1.23864 + get clientHeight(){
1.23865 + return $innerHeight;
1.23866 + },
1.23867 + get clientWidth(){
1.23868 + return $innerWidth;
1.23869 + },
1.23870 + get location(){
1.23871 + return $location;
1.23872 + },
1.23873 + set location(uri){
1.23874 + uri = Envjs.uri(uri);
1.23875 + //new Window(this, this.parent, this.opener);
1.23876 + if($location.href == uri){
1.23877 + $location.reload();
1.23878 + }else if($location.href == 'about:blank'){
1.23879 + $location.assign(uri);
1.23880 + }else{
1.23881 + $location.replace(uri);
1.23882 + }
1.23883 + },
1.23884 + get name(){
1.23885 + return $name;
1.23886 + },
1.23887 + set name(newName){
1.23888 + $name = newName;
1.23889 + },
1.23890 + get navigator(){
1.23891 + return $navigator;
1.23892 + },
1.23893 + get opener(){
1.23894 + return $opener;
1.23895 + },
1.23896 + get outerHeight(){
1.23897 + return $outerHeight;
1.23898 + },
1.23899 + get outerWidth(){
1.23900 + return $outerWidth;
1.23901 + },
1.23902 + get pageXOffest(){
1.23903 + return $pageXOffset;
1.23904 + },
1.23905 + get pageYOffset(){
1.23906 + return $pageYOffset;
1.23907 + },
1.23908 + get parent(){
1.23909 + return $parent;
1.23910 + },
1.23911 + get screen(){
1.23912 + return $screen;
1.23913 + },
1.23914 + get screenLeft(){
1.23915 + return $screenLeft;
1.23916 + },
1.23917 + get screenTop(){
1.23918 + return $screenTop;
1.23919 + },
1.23920 + get screenX(){
1.23921 + return $screenX;
1.23922 + },
1.23923 + get screenY(){
1.23924 + return $screenY;
1.23925 + },
1.23926 + get self(){
1.23927 + return scope;
1.23928 + },
1.23929 + get status(){
1.23930 + return $status;
1.23931 + },
1.23932 + set status(status){
1.23933 + $status = status;
1.23934 + },
1.23935 + // a read-only reference to the top-level window that contains this window.
1.23936 + // If this window is a top-level window it is simply a reference to itself.
1.23937 + // If this window is a frame, the top property refers to the top-level
1.23938 + // window that contains the frame.
1.23939 + get top(){
1.23940 + return __top__(scope);
1.23941 + },
1.23942 + get window(){
1.23943 + return this;
1.23944 + },
1.23945 + toString : function(){
1.23946 + return '[Window]';
1.23947 + },
1.23948 +
1.23949 + /**
1.23950 + * getComputedStyle
1.23951 + *
1.23952 + * Firefox 3.6:
1.23953 + * - Requires both elements to be present else an
1.23954 + * exception is thrown.
1.23955 + * - Returns a 'ComputedCSSStyleDeclaration' object.
1.23956 + * while a raw element.style returns a 'CSSStyleDeclaration' object.
1.23957 + * - Bogus input also throws exception
1.23958 + *
1.23959 + * Safari 4:
1.23960 + * - Requires one argument (second can be MIA)
1.23961 + * - Returns a CSSStyleDeclaration object
1.23962 + * - if bad imput, returns null
1.23963 + *
1.23964 + * getComputedStyle should really be an "add on" from the css
1.23965 + * modules. Unfortunately, 'window' comes way after the 'css'
1.23966 + * so css can't add it.
1.23967 + */
1.23968 + getComputedStyle: function(element, pseudoElement) {
1.23969 + return element.style;
1.23970 + },
1.23971 +
1.23972 + open: function(url, name, features, replace){
1.23973 + if (features) {
1.23974 + console.log("'features argument not yet implemented");
1.23975 + }
1.23976 + var _window = Envjs.proxy({}),
1.23977 + open;
1.23978 + if(replace && name){
1.23979 + for(open in __windows__){
1.23980 + if(open.name === name) {
1.23981 + _window = open;
1.23982 + }
1.23983 + }
1.23984 + }
1.23985 + new Window(_window, _window, this);
1.23986 + if(name) {
1.23987 + _window.name = name;
1.23988 + }
1.23989 + _window.document.async = false;
1.23990 + _window.location.assign(Envjs.uri(url));
1.23991 + return _window;
1.23992 + },
1.23993 + close: function(){
1.23994 + //console.log('closing window %s', __windows__[$uuid]);
1.23995 + try{
1.23996 + delete __windows__[$uuid];
1.23997 + }catch(e){
1.23998 + console.log('%s',e);
1.23999 + }
1.24000 + },
1.24001 + alert : function(message){
1.24002 + Envjs.alert(message);
1.24003 + },
1.24004 + confirm : function(question){
1.24005 + Envjs.confirm(question);
1.24006 + },
1.24007 + prompt : function(message, defaultMsg){
1.24008 + Envjs.prompt(message, defaultMsg);
1.24009 + },
1.24010 + btoa: function(binary){
1.24011 + return base64.encode(binary);
1.24012 + },
1.24013 + atob: function(ascii){
1.24014 + return base64.decode(ascii);
1.24015 + },
1.24016 + onload: function(){},
1.24017 + onunload: function(){},
1.24018 + get guid(){
1.24019 + return $uuid;
1.24020 + }
1.24021 + });
1.24022 +
1.24023 +};
1.24024 +
1.24025 +
1.24026 +//finally pre-supply the window with the window-like environment
1.24027 +//console.log('Default Window');
1.24028 +new Window(__this__, __this__);
1.24029 +console.log('[ %s ]',window.navigator.userAgent);
1.24030 +/**
1.24031 + *
1.24032 + * @param {Object} event
1.24033 + */
1.24034 +__extend__(Envjs.defaultEventBehaviors,{
1.24035 +
1.24036 + 'submit': function(event) {
1.24037 + var target = event.target;
1.24038 + while (target && target.nodeName !== 'FORM') {
1.24039 + target = target.parentNode;
1.24040 + }
1.24041 + if (target && target.nodeName === 'FORM') {
1.24042 + target.submit();
1.24043 + }
1.24044 + },
1.24045 + 'click': function(event) {
1.24046 + // console.log('handling event target default behavior for click');
1.24047 + }
1.24048 +
1.24049 +});
1.24050 +/**
1.24051 + * @author john resig & the envjs team
1.24052 + * @uri http://www.envjs.com/
1.24053 + * @copyright 2008-2010
1.24054 + * @license MIT
1.24055 + */
1.24056 +//CLOSURE_END
1.24057 +}());
2.1 --- a/pom.xml Wed Jun 04 09:56:04 2014 +0200
2.2 +++ b/pom.xml Wed Jun 04 10:24:28 2014 +0200
2.3 @@ -95,6 +95,7 @@
2.4 <exclude>*</exclude>
2.5 <exclude>.*/**</exclude>
2.6 <exclude>ko4j/src/main/resources/org/netbeans/html/ko4j/knockout*.js</exclude>
2.7 + <exclude>boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js</exclude>
2.8 <exclude>src/main/javadoc/resources/teavm.js</exclude>
2.9 </excludes>
2.10 </configuration>