corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 "no use strict";
2 ;(function(window) {
3 if (typeof window.window != "undefined" && window.document)
4 return;
5 if (window.require && window.define)
6 return;
7  
8 if (!window.console) {
9 window.console = function() {
10 var msgs = Array.prototype.slice.call(arguments, 0);
11 postMessage({type: "log", data: msgs});
12 };
13 window.console.error =
14 window.console.warn =
15 window.console.log =
16 window.console.trace = window.console;
17 }
18 window.window = window;
19 window.ace = window;
20  
21 window.onerror = function(message, file, line, col, err) {
22 postMessage({type: "error", data: {
23 message: message,
24 data: err.data,
25 file: file,
26 line: line,
27 col: col,
28 stack: err.stack
29 }});
30 };
31  
32 window.normalizeModule = function(parentId, moduleName) {
33 // normalize plugin requires
34 if (moduleName.indexOf("!") !== -1) {
35 var chunks = moduleName.split("!");
36 return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]);
37 }
38 // normalize relative requires
39 if (moduleName.charAt(0) == ".") {
40 var base = parentId.split("/").slice(0, -1).join("/");
41 moduleName = (base ? base + "/" : "") + moduleName;
42  
43 while (moduleName.indexOf(".") !== -1 && previous != moduleName) {
44 var previous = moduleName;
45 moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
46 }
47 }
48  
49 return moduleName;
50 };
51  
52 window.require = function require(parentId, id) {
53 if (!id) {
54 id = parentId;
55 parentId = null;
56 }
57 if (!id.charAt)
58 throw new Error("worker.js require() accepts only (parentId, id) as arguments");
59  
60 id = window.normalizeModule(parentId, id);
61  
62 var module = window.require.modules[id];
63 if (module) {
64 if (!module.initialized) {
65 module.initialized = true;
66 module.exports = module.factory().exports;
67 }
68 return module.exports;
69 }
70  
71 if (!window.require.tlns)
72 return console.log("unable to load " + id);
73  
74 var path = resolveModuleId(id, window.require.tlns);
75 if (path.slice(-3) != ".js") path += ".js";
76  
77 window.require.id = id;
78 window.require.modules[id] = {}; // prevent infinite loop on broken modules
79 importScripts(path);
80 return window.require(parentId, id);
81 };
82 function resolveModuleId(id, paths) {
83 var testPath = id, tail = "";
84 while (testPath) {
85 var alias = paths[testPath];
86 if (typeof alias == "string") {
87 return alias + tail;
88 } else if (alias) {
89 return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name);
90 } else if (alias === false) {
91 return "";
92 }
93 var i = testPath.lastIndexOf("/");
94 if (i === -1) break;
95 tail = testPath.substr(i) + tail;
96 testPath = testPath.slice(0, i);
97 }
98 return id;
99 }
100 window.require.modules = {};
101 window.require.tlns = {};
102  
103 window.define = function(id, deps, factory) {
104 if (arguments.length == 2) {
105 factory = deps;
106 if (typeof id != "string") {
107 deps = id;
108 id = window.require.id;
109 }
110 } else if (arguments.length == 1) {
111 factory = id;
112 deps = [];
113 id = window.require.id;
114 }
115  
116 if (typeof factory != "function") {
117 window.require.modules[id] = {
118 exports: factory,
119 initialized: true
120 };
121 return;
122 }
123  
124 if (!deps.length)
125 // If there is no dependencies, we inject "require", "exports" and
126 // "module" as dependencies, to provide CommonJS compatibility.
127 deps = ["require", "exports", "module"];
128  
129 var req = function(childId) {
130 return window.require(id, childId);
131 };
132  
133 window.require.modules[id] = {
134 exports: {},
135 factory: function() {
136 var module = this;
137 var returnExports = factory.apply(this, deps.map(function(dep) {
138 switch (dep) {
139 // Because "require", "exports" and "module" aren't actual
140 // dependencies, we must handle them seperately.
141 case "require": return req;
142 case "exports": return module.exports;
143 case "module": return module;
144 // But for all other dependencies, we can just go ahead and
145 // require them.
146 default: return req(dep);
147 }
148 }));
149 if (returnExports)
150 module.exports = returnExports;
151 return module;
152 }
153 };
154 };
155 window.define.amd = {};
156 require.tlns = {};
157 window.initBaseUrls = function initBaseUrls(topLevelNamespaces) {
158 for (var i in topLevelNamespaces)
159 require.tlns[i] = topLevelNamespaces[i];
160 };
161  
162 window.initSender = function initSender() {
163  
164 var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter;
165 var oop = window.require("ace/lib/oop");
166  
167 var Sender = function() {};
168  
169 (function() {
170  
171 oop.implement(this, EventEmitter);
172  
173 this.callback = function(data, callbackId) {
174 postMessage({
175 type: "call",
176 id: callbackId,
177 data: data
178 });
179 };
180  
181 this.emit = function(name, data) {
182 postMessage({
183 type: "event",
184 name: name,
185 data: data
186 });
187 };
188  
189 }).call(Sender.prototype);
190  
191 return new Sender();
192 };
193  
194 var main = window.main = null;
195 var sender = window.sender = null;
196  
197 window.onmessage = function(e) {
198 var msg = e.data;
199 if (msg.event && sender) {
200 sender._signal(msg.event, msg.data);
201 }
202 else if (msg.command) {
203 if (main[msg.command])
204 main[msg.command].apply(main, msg.args);
205 else if (window[msg.command])
206 window[msg.command].apply(window, msg.args);
207 else
208 throw new Error("Unknown command:" + msg.command);
209 }
210 else if (msg.init) {
211 window.initBaseUrls(msg.tlns);
212 require("ace/lib/es5-shim");
213 sender = window.sender = window.initSender();
214 var clazz = require(msg.module)[msg.classname];
215 main = window.main = new clazz(sender);
216 }
217 };
218 })(this);
219  
220 define("ace/lib/oop",["require","exports","module"], function(require, exports, module) {
221 "use strict";
222  
223 exports.inherits = function(ctor, superCtor) {
224 ctor.super_ = superCtor;
225 ctor.prototype = Object.create(superCtor.prototype, {
226 constructor: {
227 value: ctor,
228 enumerable: false,
229 writable: true,
230 configurable: true
231 }
232 });
233 };
234  
235 exports.mixin = function(obj, mixin) {
236 for (var key in mixin) {
237 obj[key] = mixin[key];
238 }
239 return obj;
240 };
241  
242 exports.implement = function(proto, mixin) {
243 exports.mixin(proto, mixin);
244 };
245  
246 });
247  
248 define("ace/lib/lang",["require","exports","module"], function(require, exports, module) {
249 "use strict";
250  
251 exports.last = function(a) {
252 return a[a.length - 1];
253 };
254  
255 exports.stringReverse = function(string) {
256 return string.split("").reverse().join("");
257 };
258  
259 exports.stringRepeat = function (string, count) {
260 var result = '';
261 while (count > 0) {
262 if (count & 1)
263 result += string;
264  
265 if (count >>= 1)
266 string += string;
267 }
268 return result;
269 };
270  
271 var trimBeginRegexp = /^\s\s*/;
272 var trimEndRegexp = /\s\s*$/;
273  
274 exports.stringTrimLeft = function (string) {
275 return string.replace(trimBeginRegexp, '');
276 };
277  
278 exports.stringTrimRight = function (string) {
279 return string.replace(trimEndRegexp, '');
280 };
281  
282 exports.copyObject = function(obj) {
283 var copy = {};
284 for (var key in obj) {
285 copy[key] = obj[key];
286 }
287 return copy;
288 };
289  
290 exports.copyArray = function(array){
291 var copy = [];
292 for (var i=0, l=array.length; i<l; i++) {
293 if (array[i] && typeof array[i] == "object")
294 copy[i] = this.copyObject(array[i]);
295 else
296 copy[i] = array[i];
297 }
298 return copy;
299 };
300  
301 exports.deepCopy = function deepCopy(obj) {
302 if (typeof obj !== "object" || !obj)
303 return obj;
304 var copy;
305 if (Array.isArray(obj)) {
306 copy = [];
307 for (var key = 0; key < obj.length; key++) {
308 copy[key] = deepCopy(obj[key]);
309 }
310 return copy;
311 }
312 if (Object.prototype.toString.call(obj) !== "[object Object]")
313 return obj;
314  
315 copy = {};
316 for (var key in obj)
317 copy[key] = deepCopy(obj[key]);
318 return copy;
319 };
320  
321 exports.arrayToMap = function(arr) {
322 var map = {};
323 for (var i=0; i<arr.length; i++) {
324 map[arr[i]] = 1;
325 }
326 return map;
327  
328 };
329  
330 exports.createMap = function(props) {
331 var map = Object.create(null);
332 for (var i in props) {
333 map[i] = props[i];
334 }
335 return map;
336 };
337 exports.arrayRemove = function(array, value) {
338 for (var i = 0; i <= array.length; i++) {
339 if (value === array[i]) {
340 array.splice(i, 1);
341 }
342 }
343 };
344  
345 exports.escapeRegExp = function(str) {
346 return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
347 };
348  
349 exports.escapeHTML = function(str) {
350 return str.replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/g, "&#60;");
351 };
352  
353 exports.getMatchOffsets = function(string, regExp) {
354 var matches = [];
355  
356 string.replace(regExp, function(str) {
357 matches.push({
358 offset: arguments[arguments.length-2],
359 length: str.length
360 });
361 });
362  
363 return matches;
364 };
365 exports.deferredCall = function(fcn) {
366 var timer = null;
367 var callback = function() {
368 timer = null;
369 fcn();
370 };
371  
372 var deferred = function(timeout) {
373 deferred.cancel();
374 timer = setTimeout(callback, timeout || 0);
375 return deferred;
376 };
377  
378 deferred.schedule = deferred;
379  
380 deferred.call = function() {
381 this.cancel();
382 fcn();
383 return deferred;
384 };
385  
386 deferred.cancel = function() {
387 clearTimeout(timer);
388 timer = null;
389 return deferred;
390 };
391  
392 deferred.isPending = function() {
393 return timer;
394 };
395  
396 return deferred;
397 };
398  
399  
400 exports.delayedCall = function(fcn, defaultTimeout) {
401 var timer = null;
402 var callback = function() {
403 timer = null;
404 fcn();
405 };
406  
407 var _self = function(timeout) {
408 if (timer == null)
409 timer = setTimeout(callback, timeout || defaultTimeout);
410 };
411  
412 _self.delay = function(timeout) {
413 timer && clearTimeout(timer);
414 timer = setTimeout(callback, timeout || defaultTimeout);
415 };
416 _self.schedule = _self;
417  
418 _self.call = function() {
419 this.cancel();
420 fcn();
421 };
422  
423 _self.cancel = function() {
424 timer && clearTimeout(timer);
425 timer = null;
426 };
427  
428 _self.isPending = function() {
429 return timer;
430 };
431  
432 return _self;
433 };
434 });
435  
436 define("ace/range",["require","exports","module"], function(require, exports, module) {
437 "use strict";
438 var comparePoints = function(p1, p2) {
439 return p1.row - p2.row || p1.column - p2.column;
440 };
441 var Range = function(startRow, startColumn, endRow, endColumn) {
442 this.start = {
443 row: startRow,
444 column: startColumn
445 };
446  
447 this.end = {
448 row: endRow,
449 column: endColumn
450 };
451 };
452  
453 (function() {
454 this.isEqual = function(range) {
455 return this.start.row === range.start.row &&
456 this.end.row === range.end.row &&
457 this.start.column === range.start.column &&
458 this.end.column === range.end.column;
459 };
460 this.toString = function() {
461 return ("Range: [" + this.start.row + "/" + this.start.column +
462 "] -> [" + this.end.row + "/" + this.end.column + "]");
463 };
464  
465 this.contains = function(row, column) {
466 return this.compare(row, column) == 0;
467 };
468 this.compareRange = function(range) {
469 var cmp,
470 end = range.end,
471 start = range.start;
472  
473 cmp = this.compare(end.row, end.column);
474 if (cmp == 1) {
475 cmp = this.compare(start.row, start.column);
476 if (cmp == 1) {
477 return 2;
478 } else if (cmp == 0) {
479 return 1;
480 } else {
481 return 0;
482 }
483 } else if (cmp == -1) {
484 return -2;
485 } else {
486 cmp = this.compare(start.row, start.column);
487 if (cmp == -1) {
488 return -1;
489 } else if (cmp == 1) {
490 return 42;
491 } else {
492 return 0;
493 }
494 }
495 };
496 this.comparePoint = function(p) {
497 return this.compare(p.row, p.column);
498 };
499 this.containsRange = function(range) {
500 return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
501 };
502 this.intersects = function(range) {
503 var cmp = this.compareRange(range);
504 return (cmp == -1 || cmp == 0 || cmp == 1);
505 };
506 this.isEnd = function(row, column) {
507 return this.end.row == row && this.end.column == column;
508 };
509 this.isStart = function(row, column) {
510 return this.start.row == row && this.start.column == column;
511 };
512 this.setStart = function(row, column) {
513 if (typeof row == "object") {
514 this.start.column = row.column;
515 this.start.row = row.row;
516 } else {
517 this.start.row = row;
518 this.start.column = column;
519 }
520 };
521 this.setEnd = function(row, column) {
522 if (typeof row == "object") {
523 this.end.column = row.column;
524 this.end.row = row.row;
525 } else {
526 this.end.row = row;
527 this.end.column = column;
528 }
529 };
530 this.inside = function(row, column) {
531 if (this.compare(row, column) == 0) {
532 if (this.isEnd(row, column) || this.isStart(row, column)) {
533 return false;
534 } else {
535 return true;
536 }
537 }
538 return false;
539 };
540 this.insideStart = function(row, column) {
541 if (this.compare(row, column) == 0) {
542 if (this.isEnd(row, column)) {
543 return false;
544 } else {
545 return true;
546 }
547 }
548 return false;
549 };
550 this.insideEnd = function(row, column) {
551 if (this.compare(row, column) == 0) {
552 if (this.isStart(row, column)) {
553 return false;
554 } else {
555 return true;
556 }
557 }
558 return false;
559 };
560 this.compare = function(row, column) {
561 if (!this.isMultiLine()) {
562 if (row === this.start.row) {
563 return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
564 }
565 }
566  
567 if (row < this.start.row)
568 return -1;
569  
570 if (row > this.end.row)
571 return 1;
572  
573 if (this.start.row === row)
574 return column >= this.start.column ? 0 : -1;
575  
576 if (this.end.row === row)
577 return column <= this.end.column ? 0 : 1;
578  
579 return 0;
580 };
581 this.compareStart = function(row, column) {
582 if (this.start.row == row && this.start.column == column) {
583 return -1;
584 } else {
585 return this.compare(row, column);
586 }
587 };
588 this.compareEnd = function(row, column) {
589 if (this.end.row == row && this.end.column == column) {
590 return 1;
591 } else {
592 return this.compare(row, column);
593 }
594 };
595 this.compareInside = function(row, column) {
596 if (this.end.row == row && this.end.column == column) {
597 return 1;
598 } else if (this.start.row == row && this.start.column == column) {
599 return -1;
600 } else {
601 return this.compare(row, column);
602 }
603 };
604 this.clipRows = function(firstRow, lastRow) {
605 if (this.end.row > lastRow)
606 var end = {row: lastRow + 1, column: 0};
607 else if (this.end.row < firstRow)
608 var end = {row: firstRow, column: 0};
609  
610 if (this.start.row > lastRow)
611 var start = {row: lastRow + 1, column: 0};
612 else if (this.start.row < firstRow)
613 var start = {row: firstRow, column: 0};
614  
615 return Range.fromPoints(start || this.start, end || this.end);
616 };
617 this.extend = function(row, column) {
618 var cmp = this.compare(row, column);
619  
620 if (cmp == 0)
621 return this;
622 else if (cmp == -1)
623 var start = {row: row, column: column};
624 else
625 var end = {row: row, column: column};
626  
627 return Range.fromPoints(start || this.start, end || this.end);
628 };
629  
630 this.isEmpty = function() {
631 return (this.start.row === this.end.row && this.start.column === this.end.column);
632 };
633 this.isMultiLine = function() {
634 return (this.start.row !== this.end.row);
635 };
636 this.clone = function() {
637 return Range.fromPoints(this.start, this.end);
638 };
639 this.collapseRows = function() {
640 if (this.end.column == 0)
641 return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
642 else
643 return new Range(this.start.row, 0, this.end.row, 0)
644 };
645 this.toScreenRange = function(session) {
646 var screenPosStart = session.documentToScreenPosition(this.start);
647 var screenPosEnd = session.documentToScreenPosition(this.end);
648  
649 return new Range(
650 screenPosStart.row, screenPosStart.column,
651 screenPosEnd.row, screenPosEnd.column
652 );
653 };
654 this.moveBy = function(row, column) {
655 this.start.row += row;
656 this.start.column += column;
657 this.end.row += row;
658 this.end.column += column;
659 };
660  
661 }).call(Range.prototype);
662 Range.fromPoints = function(start, end) {
663 return new Range(start.row, start.column, end.row, end.column);
664 };
665 Range.comparePoints = comparePoints;
666  
667 Range.comparePoints = function(p1, p2) {
668 return p1.row - p2.row || p1.column - p2.column;
669 };
670  
671  
672 exports.Range = Range;
673 });
674  
675 define("ace/apply_delta",["require","exports","module"], function(require, exports, module) {
676 "use strict";
677  
678 function throwDeltaError(delta, errorText){
679 console.log("Invalid Delta:", delta);
680 throw "Invalid Delta: " + errorText;
681 }
682  
683 function positionInDocument(docLines, position) {
684 return position.row >= 0 && position.row < docLines.length &&
685 position.column >= 0 && position.column <= docLines[position.row].length;
686 }
687  
688 function validateDelta(docLines, delta) {
689 if (delta.action != "insert" && delta.action != "remove")
690 throwDeltaError(delta, "delta.action must be 'insert' or 'remove'");
691 if (!(delta.lines instanceof Array))
692 throwDeltaError(delta, "delta.lines must be an Array");
693 if (!delta.start || !delta.end)
694 throwDeltaError(delta, "delta.start/end must be an present");
695 var start = delta.start;
696 if (!positionInDocument(docLines, delta.start))
697 throwDeltaError(delta, "delta.start must be contained in document");
698 var end = delta.end;
699 if (delta.action == "remove" && !positionInDocument(docLines, end))
700 throwDeltaError(delta, "delta.end must contained in document for 'remove' actions");
701 var numRangeRows = end.row - start.row;
702 var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));
703 if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)
704 throwDeltaError(delta, "delta.range must match delta lines");
705 }
706  
707 exports.applyDelta = function(docLines, delta, doNotValidate) {
708  
709 var row = delta.start.row;
710 var startColumn = delta.start.column;
711 var line = docLines[row] || "";
712 switch (delta.action) {
713 case "insert":
714 var lines = delta.lines;
715 if (lines.length === 1) {
716 docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);
717 } else {
718 var args = [row, 1].concat(delta.lines);
719 docLines.splice.apply(docLines, args);
720 docLines[row] = line.substring(0, startColumn) + docLines[row];
721 docLines[row + delta.lines.length - 1] += line.substring(startColumn);
722 }
723 break;
724 case "remove":
725 var endColumn = delta.end.column;
726 var endRow = delta.end.row;
727 if (row === endRow) {
728 docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);
729 } else {
730 docLines.splice(
731 row, endRow - row + 1,
732 line.substring(0, startColumn) + docLines[endRow].substring(endColumn)
733 );
734 }
735 break;
736 }
737 }
738 });
739  
740 define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) {
741 "use strict";
742  
743 var EventEmitter = {};
744 var stopPropagation = function() { this.propagationStopped = true; };
745 var preventDefault = function() { this.defaultPrevented = true; };
746  
747 EventEmitter._emit =
748 EventEmitter._dispatchEvent = function(eventName, e) {
749 this._eventRegistry || (this._eventRegistry = {});
750 this._defaultHandlers || (this._defaultHandlers = {});
751  
752 var listeners = this._eventRegistry[eventName] || [];
753 var defaultHandler = this._defaultHandlers[eventName];
754 if (!listeners.length && !defaultHandler)
755 return;
756  
757 if (typeof e != "object" || !e)
758 e = {};
759  
760 if (!e.type)
761 e.type = eventName;
762 if (!e.stopPropagation)
763 e.stopPropagation = stopPropagation;
764 if (!e.preventDefault)
765 e.preventDefault = preventDefault;
766  
767 listeners = listeners.slice();
768 for (var i=0; i<listeners.length; i++) {
769 listeners[i](e, this);
770 if (e.propagationStopped)
771 break;
772 }
773  
774 if (defaultHandler && !e.defaultPrevented)
775 return defaultHandler(e, this);
776 };
777  
778  
779 EventEmitter._signal = function(eventName, e) {
780 var listeners = (this._eventRegistry || {})[eventName];
781 if (!listeners)
782 return;
783 listeners = listeners.slice();
784 for (var i=0; i<listeners.length; i++)
785 listeners[i](e, this);
786 };
787  
788 EventEmitter.once = function(eventName, callback) {
789 var _self = this;
790 callback && this.addEventListener(eventName, function newCallback() {
791 _self.removeEventListener(eventName, newCallback);
792 callback.apply(null, arguments);
793 });
794 };
795  
796  
797 EventEmitter.setDefaultHandler = function(eventName, callback) {
798 var handlers = this._defaultHandlers
799 if (!handlers)
800 handlers = this._defaultHandlers = {_disabled_: {}};
801  
802 if (handlers[eventName]) {
803 var old = handlers[eventName];
804 var disabled = handlers._disabled_[eventName];
805 if (!disabled)
806 handlers._disabled_[eventName] = disabled = [];
807 disabled.push(old);
808 var i = disabled.indexOf(callback);
809 if (i != -1)
810 disabled.splice(i, 1);
811 }
812 handlers[eventName] = callback;
813 };
814 EventEmitter.removeDefaultHandler = function(eventName, callback) {
815 var handlers = this._defaultHandlers
816 if (!handlers)
817 return;
818 var disabled = handlers._disabled_[eventName];
819  
820 if (handlers[eventName] == callback) {
821 var old = handlers[eventName];
822 if (disabled)
823 this.setDefaultHandler(eventName, disabled.pop());
824 } else if (disabled) {
825 var i = disabled.indexOf(callback);
826 if (i != -1)
827 disabled.splice(i, 1);
828 }
829 };
830  
831 EventEmitter.on =
832 EventEmitter.addEventListener = function(eventName, callback, capturing) {
833 this._eventRegistry = this._eventRegistry || {};
834  
835 var listeners = this._eventRegistry[eventName];
836 if (!listeners)
837 listeners = this._eventRegistry[eventName] = [];
838  
839 if (listeners.indexOf(callback) == -1)
840 listeners[capturing ? "unshift" : "push"](callback);
841 return callback;
842 };
843  
844 EventEmitter.off =
845 EventEmitter.removeListener =
846 EventEmitter.removeEventListener = function(eventName, callback) {
847 this._eventRegistry = this._eventRegistry || {};
848  
849 var listeners = this._eventRegistry[eventName];
850 if (!listeners)
851 return;
852  
853 var index = listeners.indexOf(callback);
854 if (index !== -1)
855 listeners.splice(index, 1);
856 };
857  
858 EventEmitter.removeAllListeners = function(eventName) {
859 if (this._eventRegistry) this._eventRegistry[eventName] = [];
860 };
861  
862 exports.EventEmitter = EventEmitter;
863  
864 });
865  
866 define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) {
867 "use strict";
868  
869 var oop = require("./lib/oop");
870 var EventEmitter = require("./lib/event_emitter").EventEmitter;
871  
872 var Anchor = exports.Anchor = function(doc, row, column) {
873 this.$onChange = this.onChange.bind(this);
874 this.attach(doc);
875  
876 if (typeof column == "undefined")
877 this.setPosition(row.row, row.column);
878 else
879 this.setPosition(row, column);
880 };
881  
882 (function() {
883  
884 oop.implement(this, EventEmitter);
885 this.getPosition = function() {
886 return this.$clipPositionToDocument(this.row, this.column);
887 };
888 this.getDocument = function() {
889 return this.document;
890 };
891 this.$insertRight = false;
892 this.onChange = function(delta) {
893 if (delta.start.row == delta.end.row && delta.start.row != this.row)
894 return;
895  
896 if (delta.start.row > this.row)
897 return;
898  
899 var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);
900 this.setPosition(point.row, point.column, true);
901 };
902  
903 function $pointsInOrder(point1, point2, equalPointsInOrder) {
904 var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;
905 return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);
906 }
907  
908 function $getTransformedPoint(delta, point, moveIfEqual) {
909 var deltaIsInsert = delta.action == "insert";
910 var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);
911 var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);
912 var deltaStart = delta.start;
913 var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.
914 if ($pointsInOrder(point, deltaStart, moveIfEqual)) {
915 return {
916 row: point.row,
917 column: point.column
918 };
919 }
920 if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {
921 return {
922 row: point.row + deltaRowShift,
923 column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)
924 };
925 }
926  
927 return {
928 row: deltaStart.row,
929 column: deltaStart.column
930 };
931 }
932 this.setPosition = function(row, column, noClip) {
933 var pos;
934 if (noClip) {
935 pos = {
936 row: row,
937 column: column
938 };
939 } else {
940 pos = this.$clipPositionToDocument(row, column);
941 }
942  
943 if (this.row == pos.row && this.column == pos.column)
944 return;
945  
946 var old = {
947 row: this.row,
948 column: this.column
949 };
950  
951 this.row = pos.row;
952 this.column = pos.column;
953 this._signal("change", {
954 old: old,
955 value: pos
956 });
957 };
958 this.detach = function() {
959 this.document.removeEventListener("change", this.$onChange);
960 };
961 this.attach = function(doc) {
962 this.document = doc || this.document;
963 this.document.on("change", this.$onChange);
964 };
965 this.$clipPositionToDocument = function(row, column) {
966 var pos = {};
967  
968 if (row >= this.document.getLength()) {
969 pos.row = Math.max(0, this.document.getLength() - 1);
970 pos.column = this.document.getLine(pos.row).length;
971 }
972 else if (row < 0) {
973 pos.row = 0;
974 pos.column = 0;
975 }
976 else {
977 pos.row = row;
978 pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
979 }
980  
981 if (column < 0)
982 pos.column = 0;
983  
984 return pos;
985 };
986  
987 }).call(Anchor.prototype);
988  
989 });
990  
991 define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module) {
992 "use strict";
993  
994 var oop = require("./lib/oop");
995 var applyDelta = require("./apply_delta").applyDelta;
996 var EventEmitter = require("./lib/event_emitter").EventEmitter;
997 var Range = require("./range").Range;
998 var Anchor = require("./anchor").Anchor;
999  
1000 var Document = function(textOrLines) {
1001 this.$lines = [""];
1002 if (textOrLines.length === 0) {
1003 this.$lines = [""];
1004 } else if (Array.isArray(textOrLines)) {
1005 this.insertMergedLines({row: 0, column: 0}, textOrLines);
1006 } else {
1007 this.insert({row: 0, column:0}, textOrLines);
1008 }
1009 };
1010  
1011 (function() {
1012  
1013 oop.implement(this, EventEmitter);
1014 this.setValue = function(text) {
1015 var len = this.getLength() - 1;
1016 this.remove(new Range(0, 0, len, this.getLine(len).length));
1017 this.insert({row: 0, column: 0}, text);
1018 };
1019 this.getValue = function() {
1020 return this.getAllLines().join(this.getNewLineCharacter());
1021 };
1022 this.createAnchor = function(row, column) {
1023 return new Anchor(this, row, column);
1024 };
1025 if ("aaa".split(/a/).length === 0) {
1026 this.$split = function(text) {
1027 return text.replace(/\r\n|\r/g, "\n").split("\n");
1028 };
1029 } else {
1030 this.$split = function(text) {
1031 return text.split(/\r\n|\r|\n/);
1032 };
1033 }
1034  
1035  
1036 this.$detectNewLine = function(text) {
1037 var match = text.match(/^.*?(\r\n|\r|\n)/m);
1038 this.$autoNewLine = match ? match[1] : "\n";
1039 this._signal("changeNewLineMode");
1040 };
1041 this.getNewLineCharacter = function() {
1042 switch (this.$newLineMode) {
1043 case "windows":
1044 return "\r\n";
1045 case "unix":
1046 return "\n";
1047 default:
1048 return this.$autoNewLine || "\n";
1049 }
1050 };
1051  
1052 this.$autoNewLine = "";
1053 this.$newLineMode = "auto";
1054 this.setNewLineMode = function(newLineMode) {
1055 if (this.$newLineMode === newLineMode)
1056 return;
1057  
1058 this.$newLineMode = newLineMode;
1059 this._signal("changeNewLineMode");
1060 };
1061 this.getNewLineMode = function() {
1062 return this.$newLineMode;
1063 };
1064 this.isNewLine = function(text) {
1065 return (text == "\r\n" || text == "\r" || text == "\n");
1066 };
1067 this.getLine = function(row) {
1068 return this.$lines[row] || "";
1069 };
1070 this.getLines = function(firstRow, lastRow) {
1071 return this.$lines.slice(firstRow, lastRow + 1);
1072 };
1073 this.getAllLines = function() {
1074 return this.getLines(0, this.getLength());
1075 };
1076 this.getLength = function() {
1077 return this.$lines.length;
1078 };
1079 this.getTextRange = function(range) {
1080 return this.getLinesForRange(range).join(this.getNewLineCharacter());
1081 };
1082 this.getLinesForRange = function(range) {
1083 var lines;
1084 if (range.start.row === range.end.row) {
1085 lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];
1086 } else {
1087 lines = this.getLines(range.start.row, range.end.row);
1088 lines[0] = (lines[0] || "").substring(range.start.column);
1089 var l = lines.length - 1;
1090 if (range.end.row - range.start.row == l)
1091 lines[l] = lines[l].substring(0, range.end.column);
1092 }
1093 return lines;
1094 };
1095 this.insertLines = function(row, lines) {
1096 console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");
1097 return this.insertFullLines(row, lines);
1098 };
1099 this.removeLines = function(firstRow, lastRow) {
1100 console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");
1101 return this.removeFullLines(firstRow, lastRow);
1102 };
1103 this.insertNewLine = function(position) {
1104 console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.");
1105 return this.insertMergedLines(position, ["", ""]);
1106 };
1107 this.insert = function(position, text) {
1108 if (this.getLength() <= 1)
1109 this.$detectNewLine(text);
1110  
1111 return this.insertMergedLines(position, this.$split(text));
1112 };
1113 this.insertInLine = function(position, text) {
1114 var start = this.clippedPos(position.row, position.column);
1115 var end = this.pos(position.row, position.column + text.length);
1116  
1117 this.applyDelta({
1118 start: start,
1119 end: end,
1120 action: "insert",
1121 lines: [text]
1122 }, true);
1123  
1124 return this.clonePos(end);
1125 };
1126  
1127 this.clippedPos = function(row, column) {
1128 var length = this.getLength();
1129 if (row === undefined) {
1130 row = length;
1131 } else if (row < 0) {
1132 row = 0;
1133 } else if (row >= length) {
1134 row = length - 1;
1135 column = undefined;
1136 }
1137 var line = this.getLine(row);
1138 if (column == undefined)
1139 column = line.length;
1140 column = Math.min(Math.max(column, 0), line.length);
1141 return {row: row, column: column};
1142 };
1143  
1144 this.clonePos = function(pos) {
1145 return {row: pos.row, column: pos.column};
1146 };
1147  
1148 this.pos = function(row, column) {
1149 return {row: row, column: column};
1150 };
1151  
1152 this.$clipPosition = function(position) {
1153 var length = this.getLength();
1154 if (position.row >= length) {
1155 position.row = Math.max(0, length - 1);
1156 position.column = this.getLine(length - 1).length;
1157 } else {
1158 position.row = Math.max(0, position.row);
1159 position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);
1160 }
1161 return position;
1162 };
1163 this.insertFullLines = function(row, lines) {
1164 row = Math.min(Math.max(row, 0), this.getLength());
1165 var column = 0;
1166 if (row < this.getLength()) {
1167 lines = lines.concat([""]);
1168 column = 0;
1169 } else {
1170 lines = [""].concat(lines);
1171 row--;
1172 column = this.$lines[row].length;
1173 }
1174 this.insertMergedLines({row: row, column: column}, lines);
1175 };
1176 this.insertMergedLines = function(position, lines) {
1177 var start = this.clippedPos(position.row, position.column);
1178 var end = {
1179 row: start.row + lines.length - 1,
1180 column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length
1181 };
1182  
1183 this.applyDelta({
1184 start: start,
1185 end: end,
1186 action: "insert",
1187 lines: lines
1188 });
1189  
1190 return this.clonePos(end);
1191 };
1192 this.remove = function(range) {
1193 var start = this.clippedPos(range.start.row, range.start.column);
1194 var end = this.clippedPos(range.end.row, range.end.column);
1195 this.applyDelta({
1196 start: start,
1197 end: end,
1198 action: "remove",
1199 lines: this.getLinesForRange({start: start, end: end})
1200 });
1201 return this.clonePos(start);
1202 };
1203 this.removeInLine = function(row, startColumn, endColumn) {
1204 var start = this.clippedPos(row, startColumn);
1205 var end = this.clippedPos(row, endColumn);
1206  
1207 this.applyDelta({
1208 start: start,
1209 end: end,
1210 action: "remove",
1211 lines: this.getLinesForRange({start: start, end: end})
1212 }, true);
1213  
1214 return this.clonePos(start);
1215 };
1216 this.removeFullLines = function(firstRow, lastRow) {
1217 firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);
1218 lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);
1219 var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;
1220 var deleteLastNewLine = lastRow < this.getLength() - 1;
1221 var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );
1222 var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );
1223 var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );
1224 var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length );
1225 var range = new Range(startRow, startCol, endRow, endCol);
1226 var deletedLines = this.$lines.slice(firstRow, lastRow + 1);
1227  
1228 this.applyDelta({
1229 start: range.start,
1230 end: range.end,
1231 action: "remove",
1232 lines: this.getLinesForRange(range)
1233 });
1234 return deletedLines;
1235 };
1236 this.removeNewLine = function(row) {
1237 if (row < this.getLength() - 1 && row >= 0) {
1238 this.applyDelta({
1239 start: this.pos(row, this.getLine(row).length),
1240 end: this.pos(row + 1, 0),
1241 action: "remove",
1242 lines: ["", ""]
1243 });
1244 }
1245 };
1246 this.replace = function(range, text) {
1247 if (!(range instanceof Range))
1248 range = Range.fromPoints(range.start, range.end);
1249 if (text.length === 0 && range.isEmpty())
1250 return range.start;
1251 if (text == this.getTextRange(range))
1252 return range.end;
1253  
1254 this.remove(range);
1255 var end;
1256 if (text) {
1257 end = this.insert(range.start, text);
1258 }
1259 else {
1260 end = range.start;
1261 }
1262  
1263 return end;
1264 };
1265 this.applyDeltas = function(deltas) {
1266 for (var i=0; i<deltas.length; i++) {
1267 this.applyDelta(deltas[i]);
1268 }
1269 };
1270 this.revertDeltas = function(deltas) {
1271 for (var i=deltas.length-1; i>=0; i--) {
1272 this.revertDelta(deltas[i]);
1273 }
1274 };
1275 this.applyDelta = function(delta, doNotValidate) {
1276 var isInsert = delta.action == "insert";
1277 if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]
1278 : !Range.comparePoints(delta.start, delta.end)) {
1279 return;
1280 }
1281  
1282 if (isInsert && delta.lines.length > 20000)
1283 this.$splitAndapplyLargeDelta(delta, 20000);
1284 applyDelta(this.$lines, delta, doNotValidate);
1285 this._signal("change", delta);
1286 };
1287  
1288 this.$splitAndapplyLargeDelta = function(delta, MAX) {
1289 var lines = delta.lines;
1290 var l = lines.length;
1291 var row = delta.start.row;
1292 var column = delta.start.column;
1293 var from = 0, to = 0;
1294 do {
1295 from = to;
1296 to += MAX - 1;
1297 var chunk = lines.slice(from, to);
1298 if (to > l) {
1299 delta.lines = chunk;
1300 delta.start.row = row + from;
1301 delta.start.column = column;
1302 break;
1303 }
1304 chunk.push("");
1305 this.applyDelta({
1306 start: this.pos(row + from, column),
1307 end: this.pos(row + to, column = 0),
1308 action: delta.action,
1309 lines: chunk
1310 }, true);
1311 } while(true);
1312 };
1313 this.revertDelta = function(delta) {
1314 this.applyDelta({
1315 start: this.clonePos(delta.start),
1316 end: this.clonePos(delta.end),
1317 action: (delta.action == "insert" ? "remove" : "insert"),
1318 lines: delta.lines.slice()
1319 });
1320 };
1321 this.indexToPosition = function(index, startRow) {
1322 var lines = this.$lines || this.getAllLines();
1323 var newlineLength = this.getNewLineCharacter().length;
1324 for (var i = startRow || 0, l = lines.length; i < l; i++) {
1325 index -= lines[i].length + newlineLength;
1326 if (index < 0)
1327 return {row: i, column: index + lines[i].length + newlineLength};
1328 }
1329 return {row: l-1, column: lines[l-1].length};
1330 };
1331 this.positionToIndex = function(pos, startRow) {
1332 var lines = this.$lines || this.getAllLines();
1333 var newlineLength = this.getNewLineCharacter().length;
1334 var index = 0;
1335 var row = Math.min(pos.row, lines.length);
1336 for (var i = startRow || 0; i < row; ++i)
1337 index += lines[i].length + newlineLength;
1338  
1339 return index + pos.column;
1340 };
1341  
1342 }).call(Document.prototype);
1343  
1344 exports.Document = Document;
1345 });
1346  
1347 define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"], function(require, exports, module) {
1348 "use strict";
1349  
1350 var Range = require("../range").Range;
1351 var Document = require("../document").Document;
1352 var lang = require("../lib/lang");
1353  
1354 var Mirror = exports.Mirror = function(sender) {
1355 this.sender = sender;
1356 var doc = this.doc = new Document("");
1357  
1358 var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this));
1359  
1360 var _self = this;
1361 sender.on("change", function(e) {
1362 var data = e.data;
1363 if (data[0].start) {
1364 doc.applyDeltas(data);
1365 } else {
1366 for (var i = 0; i < data.length; i += 2) {
1367 if (Array.isArray(data[i+1])) {
1368 var d = {action: "insert", start: data[i], lines: data[i+1]};
1369 } else {
1370 var d = {action: "remove", start: data[i], end: data[i+1]};
1371 }
1372 doc.applyDelta(d, true);
1373 }
1374 }
1375 if (_self.$timeout)
1376 return deferredUpdate.schedule(_self.$timeout);
1377 _self.onUpdate();
1378 });
1379 };
1380  
1381 (function() {
1382  
1383 this.$timeout = 500;
1384  
1385 this.setTimeout = function(timeout) {
1386 this.$timeout = timeout;
1387 };
1388  
1389 this.setValue = function(value) {
1390 this.doc.setValue(value);
1391 this.deferredUpdate.schedule(this.$timeout);
1392 };
1393  
1394 this.getValue = function(callbackId) {
1395 this.sender.callback(this.doc.getValue(), callbackId);
1396 };
1397  
1398 this.onUpdate = function() {
1399 };
1400  
1401 this.isPending = function() {
1402 return this.deferredUpdate.isPending();
1403 };
1404  
1405 }).call(Mirror.prototype);
1406  
1407 });
1408  
1409 define("ace/mode/xml/sax",["require","exports","module"], function(require, exports, module) {
1410 var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF
1411 var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\ux203F-\u2040]");
1412 var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$');
1413 var S_TAG = 0;//tag name offerring
1414 var S_ATTR = 1;//attr name offerring
1415 var S_ATTR_S=2;//attr name end and space offer
1416 var S_EQ = 3;//=space?
1417 var S_V = 4;//attr value(no quot value only)
1418 var S_E = 5;//attr value end and no space(quot end)
1419 var S_S = 6;//(attr value end || tag end ) && (space offer)
1420 var S_C = 7;//closed el<el />
1421  
1422 function XMLReader(){
1423  
1424 }
1425  
1426 XMLReader.prototype = {
1427 parse:function(source,defaultNSMap,entityMap){
1428 var domBuilder = this.domBuilder;
1429 domBuilder.startDocument();
1430 _copy(defaultNSMap ,defaultNSMap = {})
1431 parse(source,defaultNSMap,entityMap,
1432 domBuilder,this.errorHandler);
1433 domBuilder.endDocument();
1434 }
1435 }
1436 function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
1437 function fixedFromCharCode(code) {
1438 if (code > 0xffff) {
1439 code -= 0x10000;
1440 var surrogate1 = 0xd800 + (code >> 10)
1441 , surrogate2 = 0xdc00 + (code & 0x3ff);
1442  
1443 return String.fromCharCode(surrogate1, surrogate2);
1444 } else {
1445 return String.fromCharCode(code);
1446 }
1447 }
1448 function entityReplacer(a){
1449 var k = a.slice(1,-1);
1450 if(k in entityMap){
1451 return entityMap[k];
1452 }else if(k.charAt(0) === '#'){
1453 return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))
1454 }else{
1455 errorHandler.error('entity not found:'+a);
1456 return a;
1457 }
1458 }
1459 function appendText(end){//has some bugs
1460 var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer);
1461 locator&&position(start);
1462 domBuilder.characters(xt,0,end-start);
1463 start = end
1464 }
1465 function position(start,m){
1466 while(start>=endPos && (m = linePattern.exec(source))){
1467 startPos = m.index;
1468 endPos = startPos + m[0].length;
1469 locator.lineNumber++;
1470 }
1471 locator.columnNumber = start-startPos+1;
1472 }
1473 var startPos = 0;
1474 var endPos = 0;
1475 var linePattern = /.+(?:\r\n?|\n)|.*$/g
1476 var locator = domBuilder.locator;
1477  
1478 var parseStack = [{currentNSMap:defaultNSMapCopy}]
1479 var closeMap = {};
1480 var start = 0;
1481 while(true){
1482 var i = source.indexOf('<',start);
1483 if(i<0){
1484 if(!source.substr(start).match(/^\s*$/)){
1485 var doc = domBuilder.document;
1486 var text = doc.createTextNode(source.substr(start));
1487 doc.appendChild(text);
1488 domBuilder.currentElement = text;
1489 }
1490 return;
1491 }
1492 if(i>start){
1493 appendText(i);
1494 }
1495 switch(source.charAt(i+1)){
1496 case '/':
1497 var end = source.indexOf('>',i+3);
1498 var tagName = source.substring(i+2,end);
1499 var config;
1500 if (parseStack.length > 1) {
1501 config = parseStack.pop();
1502 } else {
1503 errorHandler.fatalError("end tag name not found for: "+tagName);
1504 break;
1505 }
1506 var localNSMap = config.localNSMap;
1507  
1508 if(config.tagName != tagName){
1509 errorHandler.fatalError("end tag name: " + tagName + " does not match the current start tagName: "+config.tagName );
1510 }
1511 domBuilder.endElement(config.uri,config.localName,tagName);
1512 if(localNSMap){
1513 for(var prefix in localNSMap){
1514 domBuilder.endPrefixMapping(prefix) ;
1515 }
1516 }
1517 end++;
1518 break;
1519 case '?':// <?...?>
1520 locator&&position(i);
1521 end = parseInstruction(source,i,domBuilder);
1522 break;
1523 case '!':// <!doctype,<![CDATA,<!--
1524 locator&&position(i);
1525 end = parseDCC(source,i,domBuilder,errorHandler);
1526 break;
1527 default:
1528 try{
1529 locator&&position(i);
1530  
1531 var el = new ElementAttributes();
1532 var end = parseElementStartPart(source,i,el,entityReplacer,errorHandler);
1533 var len = el.length;
1534 if(len && locator){
1535 var backup = copyLocator(locator,{});
1536 for(var i = 0;i<len;i++){
1537 var a = el[i];
1538 position(a.offset);
1539 a.offset = copyLocator(locator,{});
1540 }
1541 copyLocator(backup,locator);
1542 }
1543 if(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){
1544 el.closed = true;
1545 if(!entityMap.nbsp){
1546 errorHandler.warning('unclosed xml attribute');
1547 }
1548 }
1549 appendElement(el,domBuilder,parseStack);
1550  
1551  
1552 if(el.uri === 'http://www.w3.org/1999/xhtml' && !el.closed){
1553 end = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)
1554 }else{
1555 end++;
1556 }
1557 }catch(e){
1558 errorHandler.error('element parse error: '+e);
1559 end = -1;
1560 }
1561  
1562 }
1563 if(end<0){
1564 appendText(i+1);
1565 }else{
1566 start = end;
1567 }
1568 }
1569 }
1570 function copyLocator(f,t){
1571 t.lineNumber = f.lineNumber;
1572 t.columnNumber = f.columnNumber;
1573 return t;
1574  
1575 }
1576 function parseElementStartPart(source,start,el,entityReplacer,errorHandler){
1577 var attrName;
1578 var value;
1579 var p = ++start;
1580 var s = S_TAG;//status
1581 while(true){
1582 var c = source.charAt(p);
1583 switch(c){
1584 case '=':
1585 if(s === S_ATTR){//attrName
1586 attrName = source.slice(start,p);
1587 s = S_EQ;
1588 }else if(s === S_ATTR_S){
1589 s = S_EQ;
1590 }else{
1591 throw new Error('attribute equal must after attrName');
1592 }
1593 break;
1594 case '\'':
1595 case '"':
1596 if(s === S_EQ){//equal
1597 start = p+1;
1598 p = source.indexOf(c,start)
1599 if(p>0){
1600 value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
1601 el.add(attrName,value,start-1);
1602 s = S_E;
1603 }else{
1604 throw new Error('attribute value no end \''+c+'\' match');
1605 }
1606 }else if(s == S_V){
1607 value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
1608 el.add(attrName,value,start);
1609 errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!');
1610 start = p+1;
1611 s = S_E
1612 }else{
1613 throw new Error('attribute value must after "="');
1614 }
1615 break;
1616 case '/':
1617 switch(s){
1618 case S_TAG:
1619 el.setTagName(source.slice(start,p));
1620 case S_E:
1621 case S_S:
1622 case S_C:
1623 s = S_C;
1624 el.closed = true;
1625 case S_V:
1626 case S_ATTR:
1627 case S_ATTR_S:
1628 break;
1629 default:
1630 throw new Error("attribute invalid close char('/')")
1631 }
1632 break;
1633 case ''://end document
1634 errorHandler.error('unexpected end of input');
1635 case '>':
1636 switch(s){
1637 case S_TAG:
1638 el.setTagName(source.slice(start,p));
1639 case S_E:
1640 case S_S:
1641 case S_C:
1642 break;//normal
1643 case S_V://Compatible state
1644 case S_ATTR:
1645 value = source.slice(start,p);
1646 if(value.slice(-1) === '/'){
1647 el.closed = true;
1648 value = value.slice(0,-1)
1649 }
1650 case S_ATTR_S:
1651 if(s === S_ATTR_S){
1652 value = attrName;
1653 }
1654 if(s == S_V){
1655 errorHandler.warning('attribute "'+value+'" missed quot(")!!');
1656 el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start)
1657 }else{
1658 errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!')
1659 el.add(value,value,start)
1660 }
1661 break;
1662 case S_EQ:
1663 throw new Error('attribute value missed!!');
1664 }
1665 return p;
1666 case '\u0080':
1667 c = ' ';
1668 default:
1669 if(c<= ' '){//space
1670 switch(s){
1671 case S_TAG:
1672 el.setTagName(source.slice(start,p));//tagName
1673 s = S_S;
1674 break;
1675 case S_ATTR:
1676 attrName = source.slice(start,p)
1677 s = S_ATTR_S;
1678 break;
1679 case S_V:
1680 var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
1681 errorHandler.warning('attribute "'+value+'" missed quot(")!!');
1682 el.add(attrName,value,start)
1683 case S_E:
1684 s = S_S;
1685 break;
1686 }
1687 }else{//not space
1688 switch(s){
1689 case S_ATTR_S:
1690 errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!')
1691 el.add(attrName,attrName,start);
1692 start = p;
1693 s = S_ATTR;
1694 break;
1695 case S_E:
1696 errorHandler.warning('attribute space is required"'+attrName+'"!!')
1697 case S_S:
1698 s = S_ATTR;
1699 start = p;
1700 break;
1701 case S_EQ:
1702 s = S_V;
1703 start = p;
1704 break;
1705 case S_C:
1706 throw new Error("elements closed character '/' and '>' must be connected to");
1707 }
1708 }
1709 }
1710 p++;
1711 }
1712 }
1713 function appendElement(el,domBuilder,parseStack){
1714 var tagName = el.tagName;
1715 var localNSMap = null;
1716 var currentNSMap = parseStack[parseStack.length-1].currentNSMap;
1717 var i = el.length;
1718 while(i--){
1719 var a = el[i];
1720 var qName = a.qName;
1721 var value = a.value;
1722 var nsp = qName.indexOf(':');
1723 if(nsp>0){
1724 var prefix = a.prefix = qName.slice(0,nsp);
1725 var localName = qName.slice(nsp+1);
1726 var nsPrefix = prefix === 'xmlns' && localName
1727 }else{
1728 localName = qName;
1729 prefix = null
1730 nsPrefix = qName === 'xmlns' && ''
1731 }
1732 a.localName = localName ;
1733 if(nsPrefix !== false){//hack!!
1734 if(localNSMap == null){
1735 localNSMap = {}
1736 _copy(currentNSMap,currentNSMap={})
1737 }
1738 currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;
1739 a.uri = 'http://www.w3.org/2000/xmlns/'
1740 domBuilder.startPrefixMapping(nsPrefix, value)
1741 }
1742 }
1743 var i = el.length;
1744 while(i--){
1745 a = el[i];
1746 var prefix = a.prefix;
1747 if(prefix){//no prefix attribute has no namespace
1748 if(prefix === 'xml'){
1749 a.uri = 'http://www.w3.org/XML/1998/namespace';
1750 }if(prefix !== 'xmlns'){
1751 a.uri = currentNSMap[prefix]
1752 }
1753 }
1754 }
1755 var nsp = tagName.indexOf(':');
1756 if(nsp>0){
1757 prefix = el.prefix = tagName.slice(0,nsp);
1758 localName = el.localName = tagName.slice(nsp+1);
1759 }else{
1760 prefix = null;//important!!
1761 localName = el.localName = tagName;
1762 }
1763 var ns = el.uri = currentNSMap[prefix || ''];
1764 domBuilder.startElement(ns,localName,tagName,el);
1765 if(el.closed){
1766 domBuilder.endElement(ns,localName,tagName);
1767 if(localNSMap){
1768 for(prefix in localNSMap){
1769 domBuilder.endPrefixMapping(prefix)
1770 }
1771 }
1772 }else{
1773 el.currentNSMap = currentNSMap;
1774 el.localNSMap = localNSMap;
1775 parseStack.push(el);
1776 }
1777 }
1778 function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){
1779 if(/^(?:script|textarea)$/i.test(tagName)){
1780 var elEndStart = source.indexOf('</'+tagName+'>',elStartEnd);
1781 var text = source.substring(elStartEnd+1,elEndStart);
1782 if(/[&<]/.test(text)){
1783 <]/ if(/^script$/i.test(tagName)){
1784 <]/ domBuilder.characters(text,0,text.length);
1785 <]/ return elEndStart;
1786 <]/ }//}else{//text area
1787 <]/ text = text.replace(/&#?\w+;/g,entityReplacer);
1788 <]/ domBuilder.characters(text,0,text.length);
1789 <]/ return elEndStart;
1790  
1791 <]/ }
1792 <]/ }
1793 <]/ return elStartEnd+1;
1794 <]/}
1795 <]/function fixSelfClosed(source,elStartEnd,tagName,closeMap){
1796 <]/ var pos = closeMap[tagName];
1797 <]/ if(pos == null){
1798 <]/ pos = closeMap[tagName] = source.lastIndexOf('</'+tagName+'>')
1799 <]/ }
1800 <]/ return pos<elStartEnd;
1801 <]/}
1802 <]/function _copy(source,target){
1803 <]/ for(var n in source){target[n] = source[n]}
1804 <]/}
1805 <]/function parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'
1806 <]/ var next= source.charAt(start+2)
1807 <]/ switch(next){
1808 <]/ case '-':
1809 <]/ if(source.charAt(start + 3) === '-'){
1810 <]/ var end = source.indexOf('-->',start+4);
1811 <]/ if(end>start){
1812 <]/ domBuilder.comment(source,start+4,end-start-4);
1813 <]/ return end+3;
1814 <]/ }else{
1815 <]/ errorHandler.error("Unclosed comment");
1816 <]/ return -1;
1817 <]/ }
1818 <]/ }else{
1819 <]/ return -1;
1820 <]/ }
1821 <]/ default:
1822 <]/ if(source.substr(start+3,6) == 'CDATA['){
1823 <]/ var end = source.indexOf(']]>',start+9);
1824 <]/ domBuilder.startCDATA();
1825 <]/ domBuilder.characters(source,start+9,end-start-9);
1826 <]/ domBuilder.endCDATA()
1827 <]/ return end+3;
1828 <]/ }
1829 <]/ var matchs = split(source,start);
1830 <]/ var len = matchs.length;
1831 <]/ if(len>1 && /!doctype/i.test(matchs[0][0])){
1832 <]/ var name = matchs[1][0];
1833 <]/ var pubid = len>3 && /^public$/i.test(matchs[2][0]) && matchs[3][0]
1834 <]/ var sysid = len>4 && matchs[4][0];
1835 <]/ var lastMatch = matchs[len-1]
1836 <]/ domBuilder.startDTD(name,pubid && pubid.replace(/^(['"])(.*?)\1$/,'$2'),
1837 <]/ sysid && sysid.replace(/^(['"])(.*?)\1$/,'$2'));
1838 <]/ domBuilder.endDTD();
1839  
1840 <]/ return lastMatch.index+lastMatch[0].length
1841 <]/ }
1842 <]/ }
1843 <]/ return -1;
1844 <]/}
1845  
1846  
1847  
1848 <]/function parseInstruction(source,start,domBuilder){
1849 <]/ var end = source.indexOf('?>',start);
1850 <]/ if(end){
1851 <]/ var match = source.substring(start,end).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
1852 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ if(match){
1853 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ var len = match[0].length;
1854 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ domBuilder.processingInstruction(match[1], match[2]) ;
1855 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ return end+2;
1856 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ }else{//error
1857 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ return -1;
1858 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ }
1859 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ }
1860 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ return -1;
1861 <]/<\?(\S*)\s*([\s\S]*?)\s*$/}
1862 <]/<\?(\S*)\s*([\s\S]*?)\s*$/function ElementAttributes(source){
1863  
1864 <]/<\?(\S*)\s*([\s\S]*?)\s*$/}
1865 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ElementAttributes.prototype = {
1866 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ setTagName:function(tagName){
1867 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ if(!tagNamePattern.test(tagName)){
1868 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ throw new Error('invalid tagName:'+tagName)
1869 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ }
1870 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ this.tagName = tagName
1871 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ },
1872 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ add:function(qName,value,offset){
1873 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ if(!tagNamePattern.test(qName)){
1874 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ throw new Error('invalid attribute:'+qName)
1875 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ }
1876 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ this[this.length++] = {qName:qName,value:value,offset:offset}
1877 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ },
1878 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ length:0,
1879 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ getLocalName:function(i){return this[i].localName},
1880 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ getOffset:function(i){return this[i].offset},
1881 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ getQName:function(i){return this[i].qName},
1882 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ getURI:function(i){return this[i].uri},
1883 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ getValue:function(i){return this[i].value}
1884 <]/<\?(\S*)\s*([\s\S]*?)\s*$/}
1885  
1886  
1887  
1888  
1889 <]/<\?(\S*)\s*([\s\S]*?)\s*$/function _set_proto_(thiz,parent){
1890 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ thiz.__proto__ = parent;
1891 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ return thiz;
1892 <]/<\?(\S*)\s*([\s\S]*?)\s*$/}
1893 <]/<\?(\S*)\s*([\s\S]*?)\s*$/if(!(_set_proto_({},_set_proto_.prototype) instanceof _set_proto_)){
1894 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ _set_proto_ = function(thiz,parent){
1895 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ function p(){};
1896 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ p.prototype = parent;
1897 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ p = new p();
1898 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ for(parent in thiz){
1899 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ p[parent] = thiz[parent];
1900 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ }
1901 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ return p;
1902 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ }
1903 <]/<\?(\S*)\s*([\s\S]*?)\s*$/}
1904  
1905 <]/<\?(\S*)\s*([\s\S]*?)\s*$/function split(source,start){
1906 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ var match;
1907 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ var buf = [];
1908 <]/<\?(\S*)\s*([\s\S]*?)\s*$/ var reg = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
1909 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ reg.lastIndex = start;
1910 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ reg.exec(source);//skip <
1911 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(match = reg.exec(source)){
1912 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ buf.push(match);
1913 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(match[1])return buf;
1914 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
1915 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
1916  
1917 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/return XMLReader;
1918 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/});
1919  
1920 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/define("ace/mode/xml/dom",["require","exports","module"], function(require, exports, module) {
1921  
1922 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function copy(src,dest){
1923 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ for(var p in src){
1924 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ dest[p] = src[p];
1925 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
1926 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
1927 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _extends(Class,Super){
1928 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var pt = Class.prototype;
1929 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(Object.create){
1930 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var ppt = Object.create(Super.prototype)
1931 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ pt.__proto__ = ppt;
1932 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
1933 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(!(pt instanceof Super)){
1934 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ function t(){};
1935 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ t.prototype = Super.prototype;
1936 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ t = new t();
1937 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ copy(pt,t);
1938 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ Class.prototype = pt = t;
1939 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
1940 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(pt.constructor != Class){
1941 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(typeof Class != 'function'){
1942 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ console.error("unknow Class:"+Class)
1943 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
1944 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ pt.constructor = Class
1945 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
1946 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
1947 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var htmlns = 'http://www.w3.org/1999/xhtml' ;
1948 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var NodeType = {}
1949 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;
1950 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;
1951 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var TEXT_NODE = NodeType.TEXT_NODE = 3;
1952 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;
1953 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;
1954 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var ENTITY_NODE = NodeType.ENTITY_NODE = 6;
1955 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;
1956 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var COMMENT_NODE = NodeType.COMMENT_NODE = 8;
1957 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;
1958 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;
1959 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;
1960 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var NOTATION_NODE = NodeType.NOTATION_NODE = 12;
1961 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var ExceptionCode = {}
1962 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var ExceptionMessage = {};
1963 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1);
1964 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2);
1965 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3);
1966 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4);
1967 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5);
1968 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6);
1969 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7);
1970 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8);
1971 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9);
1972 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10);
1973 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11);
1974 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12);
1975 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13);
1976 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14);
1977 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15);
1978  
1979  
1980 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function DOMException(code, message) {
1981 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(message instanceof Error){
1982 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var error = message;
1983 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
1984 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ error = this;
1985 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ Error.call(this, ExceptionMessage[code]);
1986 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.message = ExceptionMessage[code];
1987 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);
1988 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
1989 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ error.code = code;
1990 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(message) this.message = this.message + ": " + message;
1991 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return error;
1992 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
1993 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/DOMException.prototype = Error.prototype;
1994 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/copy(ExceptionCode,DOMException)
1995 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function NodeList() {
1996 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
1997 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/NodeList.prototype = {
1998 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ length:0,
1999 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ item: function(index) {
2000 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this[index] || null;
2001 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2002 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2003 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function LiveNodeList(node,refresh){
2004 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this._node = node;
2005 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this._refresh = refresh
2006 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _updateLiveList(this);
2007 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2008 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _updateLiveList(list){
2009 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var inc = list._node._inc || list._node.ownerDocument._inc;
2010 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(list._inc != inc){
2011 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var ls = list._refresh(list._node);
2012 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ __set__(list,'length',ls.length);
2013 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ copy(ls,list);
2014 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ list._inc = inc;
2015 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2016 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2017 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/LiveNodeList.prototype.item = function(i){
2018 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _updateLiveList(this);
2019 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this[i];
2020 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2021  
2022 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(LiveNodeList,NodeList);
2023 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function NamedNodeMap() {
2024 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2025  
2026 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _findNodeIndex(list,node){
2027 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var i = list.length;
2028 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(i--){
2029 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(list[i] === node){return i}
2030 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2031 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2032  
2033 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _addNamedNode(el,list,newAttr,oldAttr){
2034 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(oldAttr){
2035 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ list[_findNodeIndex(list,oldAttr)] = newAttr;
2036 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2037 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ list[list.length++] = newAttr;
2038 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2039 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(el){
2040 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newAttr.ownerElement = el;
2041 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var doc = el.ownerDocument;
2042 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(doc){
2043 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ oldAttr && _onRemoveAttribute(doc,el,oldAttr);
2044 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _onAddAttribute(doc,el,newAttr);
2045 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2046 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2047 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2048 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _removeNamedNode(el,list,attr){
2049 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var i = _findNodeIndex(list,attr);
2050 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(i>=0){
2051 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var lastIndex = list.length-1
2052 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(i<lastIndex){
2053 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ list[i] = list[++i]
2054 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2055 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ list.length = lastIndex;
2056 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(el){
2057 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var doc = el.ownerDocument;
2058 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(doc){
2059 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _onRemoveAttribute(doc,el,attr);
2060 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ attr.ownerElement = null;
2061 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2062 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2063 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2064 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ throw DOMException(NOT_FOUND_ERR,new Error())
2065 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2066 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2067 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/NamedNodeMap.prototype = {
2068 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ length:0,
2069 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ item:NodeList.prototype.item,
2070 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getNamedItem: function(key) {
2071 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var i = this.length;
2072 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(i--){
2073 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this[i];
2074 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(attr.nodeName == key){
2075 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return attr;
2076 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2077 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2078 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2079 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ setNamedItem: function(attr) {
2080 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var el = attr.ownerElement;
2081 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(el && el!=this._ownerElement){
2082 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ throw new DOMException(INUSE_ATTRIBUTE_ERR);
2083 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2084 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var oldAttr = this.getNamedItem(attr.nodeName);
2085 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _addNamedNode(this._ownerElement,this,attr,oldAttr);
2086 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return oldAttr;
2087 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2088 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR
2089 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var el = attr.ownerElement, oldAttr;
2090 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(el && el!=this._ownerElement){
2091 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ throw new DOMException(INUSE_ATTRIBUTE_ERR);
2092 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2093 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);
2094 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _addNamedNode(this._ownerElement,this,attr,oldAttr);
2095 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return oldAttr;
2096 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2097 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ removeNamedItem: function(key) {
2098 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this.getNamedItem(key);
2099 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _removeNamedNode(this._ownerElement,this,attr);
2100 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return attr;
2101  
2102  
2103 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR
2104 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ removeNamedItemNS:function(namespaceURI,localName){
2105 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this.getNamedItemNS(namespaceURI,localName);
2106 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _removeNamedNode(this._ownerElement,this,attr);
2107 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return attr;
2108 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2109 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getNamedItemNS: function(namespaceURI, localName) {
2110 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var i = this.length;
2111 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(i--){
2112 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = this[i];
2113 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(node.localName == localName && node.namespaceURI == namespaceURI){
2114 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2115 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2116 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2117 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return null;
2118 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2119 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2120 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function DOMImplementation(/* Object */ features) {
2121 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this._features = {};
2122 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if (features) {
2123 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ for (var feature in features) {
2124 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this._features = features[feature];
2125 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2126 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2127 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2128  
2129 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/DOMImplementation.prototype = {
2130 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ hasFeature: function(/* string */ feature, /* string */ version) {
2131 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var versions = this._features[feature.toLowerCase()];
2132 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if (versions && (!version || version in versions)) {
2133 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return true;
2134 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ } else {
2135 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return false;
2136 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2137 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2138 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR
2139 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var doc = new Document();
2140 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc.implementation = this;
2141 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc.childNodes = new NodeList();
2142 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc.doctype = doctype;
2143 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(doctype){
2144 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc.appendChild(doctype);
2145 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2146 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(qualifiedName){
2147 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var root = doc.createElementNS(namespaceURI,qualifiedName);
2148 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc.appendChild(root);
2149 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2150 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return doc;
2151 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2152 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR
2153 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new DocumentType();
2154 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.name = qualifiedName;
2155 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.nodeName = qualifiedName;
2156 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.publicId = publicId;
2157 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.systemId = systemId;
2158 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2159 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2160 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2161  
2162 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Node() {
2163 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2164  
2165 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Node.prototype = {
2166 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ firstChild : null,
2167 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ lastChild : null,
2168 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ previousSibling : null,
2169 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nextSibling : null,
2170 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ attributes : null,
2171 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ parentNode : null,
2172 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ childNodes : null,
2173 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ ownerDocument : null,
2174 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeValue : null,
2175 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ namespaceURI : null,
2176 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ prefix : null,
2177 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ localName : null,
2178 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ insertBefore:function(newChild, refChild){//raises
2179 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return _insertBefore(this,newChild,refChild);
2180 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2181 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ replaceChild:function(newChild, oldChild){//raises
2182 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.insertBefore(newChild,oldChild);
2183 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(oldChild){
2184 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.removeChild(oldChild);
2185 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2186 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2187 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ removeChild:function(oldChild){
2188 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return _removeChild(this,oldChild);
2189 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2190 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ appendChild:function(newChild){
2191 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.insertBefore(newChild,null);
2192 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2193 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ hasChildNodes:function(){
2194 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.firstChild != null;
2195 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2196 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ cloneNode:function(deep){
2197 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return cloneNode(this.ownerDocument||this,this,deep);
2198 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2199 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ normalize:function(){
2200 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var child = this.firstChild;
2201 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(child){
2202 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var next = child.nextSibling;
2203 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){
2204 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.removeChild(next);
2205 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ child.appendData(next.data);
2206 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2207 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ child.normalize();
2208 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ child = next;
2209 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2210 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2211 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2212 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ isSupported:function(feature, version){
2213 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.ownerDocument.implementation.hasFeature(feature,version);
2214 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2215 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ hasAttributes:function(){
2216 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.attributes.length>0;
2217 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2218 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ lookupPrefix:function(namespaceURI){
2219 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var el = this;
2220 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(el){
2221 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var map = el._nsMap;
2222 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(map){
2223 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ for(var n in map){
2224 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(map[n] == namespaceURI){
2225 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return n;
2226 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2227 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2228 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2229 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ el = el.nodeType == 2?el.ownerDocument : el.parentNode;
2230 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2231 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return null;
2232 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2233 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ lookupNamespaceURI:function(prefix){
2234 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var el = this;
2235 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(el){
2236 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var map = el._nsMap;
2237 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(map){
2238 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(prefix in map){
2239 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return map[prefix] ;
2240 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2241 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2242 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ el = el.nodeType == 2?el.ownerDocument : el.parentNode;
2243 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2244 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return null;
2245 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2246 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ isDefaultNamespace:function(namespaceURI){
2247 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var prefix = this.lookupPrefix(namespaceURI);
2248 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return prefix == null;
2249 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2250 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2251  
2252  
2253 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _xmlEncoder(c){
2254 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return c == '<' && '&lt;' ||
2255 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ c == '>' && '&gt;' ||
2256 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ c == '&' && '&amp;' ||
2257 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ c == '"' && '&quot;' ||
2258 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ '&#'+c.charCodeAt()+';'
2259 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2260  
2261  
2262 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/copy(NodeType,Node);
2263 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/copy(NodeType,Node.prototype);
2264 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _visitNode(node,callback){
2265 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(callback(node)){
2266 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return true;
2267 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2268 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(node = node.firstChild){
2269 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ do{
2270 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(_visitNode(node,callback)){return true}
2271 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }while(node=node.nextSibling)
2272 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2273 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2274  
2275  
2276  
2277 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Document(){
2278 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2279 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _onAddAttribute(doc,el,newAttr){
2280 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc && doc._inc++;
2281 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var ns = newAttr.namespaceURI ;
2282 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(ns == 'http://www.w3.org/2000/xmlns/'){
2283 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value
2284 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2285 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2286 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _onRemoveAttribute(doc,el,newAttr,remove){
2287 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc && doc._inc++;
2288 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var ns = newAttr.namespaceURI ;
2289 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(ns == 'http://www.w3.org/2000/xmlns/'){
2290 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ delete el._nsMap[newAttr.prefix?newAttr.localName:'']
2291 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2292 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2293 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _onUpdateChild(doc,el,newChild){
2294 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(doc && doc._inc){
2295 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doc._inc++;
2296 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var cs = el.childNodes;
2297 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(newChild){
2298 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ cs[cs.length++] = newChild;
2299 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2300 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var child = el.firstChild;
2301 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var i = 0;
2302 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(child){
2303 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ cs[i++] = child;
2304 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ child =child.nextSibling;
2305 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2306 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ cs.length = i;
2307 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2308 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2309 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2310 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _removeChild(parentNode,child){
2311 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var previous = child.previousSibling;
2312 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var next = child.nextSibling;
2313 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(previous){
2314 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ previous.nextSibling = next;
2315 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2316 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ parentNode.firstChild = next
2317 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2318 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(next){
2319 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ next.previousSibling = previous;
2320 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2321 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ parentNode.lastChild = previous;
2322 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2323 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _onUpdateChild(parentNode.ownerDocument,parentNode);
2324 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return child;
2325 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2326 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _insertBefore(parentNode,newChild,nextChild){
2327 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var cp = newChild.parentNode;
2328 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(cp){
2329 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ cp.removeChild(newChild);//remove and update
2330 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2331 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){
2332 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var newFirst = newChild.firstChild;
2333 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if (newFirst == null) {
2334 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return newChild;
2335 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2336 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var newLast = newChild.lastChild;
2337 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2338 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newFirst = newLast = newChild;
2339 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2340 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild;
2341  
2342 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newFirst.previousSibling = pre;
2343 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newLast.nextSibling = nextChild;
2344  
2345  
2346 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(pre){
2347 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ pre.nextSibling = newFirst;
2348 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2349 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ parentNode.firstChild = newFirst;
2350 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2351 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(nextChild == null){
2352 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ parentNode.lastChild = newLast;
2353 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2354 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nextChild.previousSibling = newLast;
2355 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2356 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ do{
2357 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newFirst.parentNode = parentNode;
2358 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }while(newFirst !== newLast && (newFirst= newFirst.nextSibling))
2359 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode);
2360 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) {
2361 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newChild.firstChild = newChild.lastChild = null;
2362 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2363 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return newChild;
2364 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2365 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function _appendSingleChild(parentNode,newChild){
2366 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var cp = newChild.parentNode;
2367 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(cp){
2368 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var pre = parentNode.lastChild;
2369 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ cp.removeChild(newChild);//remove and update
2370 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var pre = parentNode.lastChild;
2371 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2372 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var pre = parentNode.lastChild;
2373 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newChild.parentNode = parentNode;
2374 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newChild.previousSibling = pre;
2375 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ newChild.nextSibling = null;
2376 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(pre){
2377 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ pre.nextSibling = newChild;
2378 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2379 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ parentNode.firstChild = newChild;
2380 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2381 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ parentNode.lastChild = newChild;
2382 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _onUpdateChild(parentNode.ownerDocument,parentNode,newChild);
2383 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return newChild;
2384 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2385 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Document.prototype = {
2386 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeName : '#document',
2387 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeType : DOCUMENT_NODE,
2388 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ doctype : null,
2389 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ documentElement : null,
2390 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _inc : 1,
2391  
2392 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ insertBefore : function(newChild, refChild){//raises
2393 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){
2394 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var child = newChild.firstChild;
2395 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(child){
2396 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var next = child.nextSibling;
2397 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.insertBefore(child,refChild);
2398 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ child = next;
2399 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2400 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return newChild;
2401 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2402 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(this.documentElement == null && newChild.nodeType == 1){
2403 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.documentElement = newChild;
2404 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2405  
2406 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild;
2407 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2408 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ removeChild : function(oldChild){
2409 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(this.documentElement == oldChild){
2410 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.documentElement = null;
2411 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2412 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return _removeChild(this,oldChild);
2413 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2414 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ importNode : function(importedNode,deep){
2415 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return importNode(this,importedNode,deep);
2416 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2417 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getElementById : function(id){
2418 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var rtv = null;
2419 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _visitNode(this.documentElement,function(node){
2420 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(node.nodeType == 1){
2421 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(node.getAttribute('id') == id){
2422 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ rtv = node;
2423 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return true;
2424 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2425 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2426 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ })
2427 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return rtv;
2428 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2429 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createElement : function(tagName){
2430 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new Element();
2431 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2432 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.nodeName = tagName;
2433 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.tagName = tagName;
2434 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.childNodes = new NodeList();
2435 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attrs = node.attributes = new NamedNodeMap();
2436 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ attrs._ownerElement = node;
2437 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2438 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2439 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createDocumentFragment : function(){
2440 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new DocumentFragment();
2441 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2442 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.childNodes = new NodeList();
2443 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2444 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2445 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createTextNode : function(data){
2446 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new Text();
2447 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2448 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.appendData(data)
2449 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2450 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2451 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createComment : function(data){
2452 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new Comment();
2453 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2454 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.appendData(data)
2455 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2456 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2457 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createCDATASection : function(data){
2458 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new CDATASection();
2459 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2460 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.appendData(data)
2461 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2462 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2463 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createProcessingInstruction : function(target,data){
2464 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new ProcessingInstruction();
2465 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2466 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.tagName = node.target = target;
2467 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.nodeValue= node.data = data;
2468 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2469 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2470 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createAttribute : function(name){
2471 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new Attr();
2472 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2473 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.name = name;
2474 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.nodeName = name;
2475 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.localName = name;
2476 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.specified = true;
2477 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2478 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2479 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createEntityReference : function(name){
2480 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new EntityReference();
2481 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2482 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.nodeName = name;
2483 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2484 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2485 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createElementNS : function(namespaceURI,qualifiedName){
2486 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new Element();
2487 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var pl = qualifiedName.split(':');
2488 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attrs = node.attributes = new NamedNodeMap();
2489 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.childNodes = new NodeList();
2490 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2491 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.nodeName = qualifiedName;
2492 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.tagName = qualifiedName;
2493 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.namespaceURI = namespaceURI;
2494 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(pl.length == 2){
2495 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.prefix = pl[0];
2496 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.localName = pl[1];
2497 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2498 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.localName = qualifiedName;
2499 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2500 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ attrs._ownerElement = node;
2501 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2502 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2503 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ createAttributeNS : function(namespaceURI,qualifiedName){
2504 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var node = new Attr();
2505 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var pl = qualifiedName.split(':');
2506 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.ownerDocument = this;
2507 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.nodeName = qualifiedName;
2508 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.name = qualifiedName;
2509 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.namespaceURI = namespaceURI;
2510 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.specified = true;
2511 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(pl.length == 2){
2512 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.prefix = pl[0];
2513 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.localName = pl[1];
2514 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2515 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ node.localName = qualifiedName;
2516 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2517 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return node;
2518 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2519 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2520 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(Document,Node);
2521  
2522  
2523 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Element() {
2524 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this._nsMap = {};
2525 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2526 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Element.prototype = {
2527 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeType : ELEMENT_NODE,
2528 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ hasAttribute : function(name){
2529 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.getAttributeNode(name)!=null;
2530 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2531 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getAttribute : function(name){
2532 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this.getAttributeNode(name);
2533 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return attr && attr.value || '';
2534 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2535 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getAttributeNode : function(name){
2536 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.attributes.getNamedItem(name);
2537 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2538 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ setAttribute : function(name, value){
2539 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this.ownerDocument.createAttribute(name);
2540 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ attr.value = attr.nodeValue = "" + value;
2541 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.setAttributeNode(attr)
2542 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2543 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ removeAttribute : function(name){
2544 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this.getAttributeNode(name)
2545 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ attr && this.removeAttributeNode(attr);
2546 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2547 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ appendChild:function(newChild){
2548 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){
2549 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.insertBefore(newChild,null);
2550 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2551 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return _appendSingleChild(this,newChild);
2552 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2553 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2554 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ setAttributeNode : function(newAttr){
2555 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.attributes.setNamedItem(newAttr);
2556 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2557 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ setAttributeNodeNS : function(newAttr){
2558 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.attributes.setNamedItemNS(newAttr);
2559 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2560 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ removeAttributeNode : function(oldAttr){
2561 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.attributes.removeNamedItem(oldAttr.nodeName);
2562 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2563 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ removeAttributeNS : function(namespaceURI, localName){
2564 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var old = this.getAttributeNodeNS(namespaceURI, localName);
2565 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ old && this.removeAttributeNode(old);
2566 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2567  
2568 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ hasAttributeNS : function(namespaceURI, localName){
2569 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.getAttributeNodeNS(namespaceURI, localName)!=null;
2570 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2571 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getAttributeNS : function(namespaceURI, localName){
2572 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this.getAttributeNodeNS(namespaceURI, localName);
2573 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return attr && attr.value || '';
2574 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2575 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ setAttributeNS : function(namespaceURI, qualifiedName, value){
2576 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);
2577 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ attr.value = attr.nodeValue = "" + value;
2578 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.setAttributeNode(attr)
2579 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2580 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getAttributeNodeNS : function(namespaceURI, localName){
2581 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.attributes.getNamedItemNS(namespaceURI, localName);
2582 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2583  
2584 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getElementsByTagName : function(tagName){
2585 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return new LiveNodeList(this,function(base){
2586 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var ls = [];
2587 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _visitNode(base,function(node){
2588 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){
2589 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ ls.push(node);
2590 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2591 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ });
2592 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return ls;
2593 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ });
2594 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2595 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ getElementsByTagNameNS : function(namespaceURI, localName){
2596 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return new LiveNodeList(this,function(base){
2597 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var ls = [];
2598 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ _visitNode(base,function(node){
2599 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){
2600 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ ls.push(node);
2601 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2602 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ });
2603 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return ls;
2604 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ });
2605 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2606 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2607 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;
2608 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;
2609  
2610  
2611 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(Element,Node);
2612 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Attr() {
2613 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2614 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Attr.prototype.nodeType = ATTRIBUTE_NODE;
2615 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(Attr,Node);
2616  
2617  
2618 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function CharacterData() {
2619 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2620 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/CharacterData.prototype = {
2621 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ data : '',
2622 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ substringData : function(offset, count) {
2623 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return this.data.substring(offset, offset+count);
2624 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2625 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ appendData: function(text) {
2626 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ text = this.data+text;
2627 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.nodeValue = this.data = text;
2628 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.length = text.length;
2629 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2630 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ insertData: function(offset,text) {
2631 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.replaceData(offset,0,text);
2632  
2633 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2634 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ appendChild:function(newChild){
2635 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ throw new Error(ExceptionMessage[3])
2636 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return Node.prototype.appendChild.apply(this,arguments)
2637 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2638 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ deleteData: function(offset, count) {
2639 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.replaceData(offset,count,"");
2640 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ },
2641 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ replaceData: function(offset, count, text) {
2642 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var start = this.data.substring(0,offset);
2643 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var end = this.data.substring(offset+count);
2644 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ text = start + text + end;
2645 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.nodeValue = this.data = text;
2646 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.length = text.length;
2647 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2648 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2649 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(CharacterData,Node);
2650 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Text() {
2651 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2652 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Text.prototype = {
2653 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeName : "#text",
2654 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeType : TEXT_NODE,
2655 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ splitText : function(offset) {
2656 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var text = this.data;
2657 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var newText = text.substring(offset);
2658 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ text = text.substring(0, offset);
2659 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.data = this.nodeValue = text;
2660 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.length = text.length;
2661 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var newNode = this.ownerDocument.createTextNode(newText);
2662 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(this.parentNode){
2663 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ this.parentNode.insertBefore(newNode, this.nextSibling);
2664 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2665 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return newNode;
2666 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2667 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2668 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(Text,CharacterData);
2669 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Comment() {
2670 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2671 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Comment.prototype = {
2672 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeName : "#comment",
2673 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeType : COMMENT_NODE
2674 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2675 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(Comment,CharacterData);
2676  
2677 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function CDATASection() {
2678 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2679 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/CDATASection.prototype = {
2680 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeName : "#cdata-section",
2681 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ nodeType : CDATA_SECTION_NODE
2682 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2683 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(CDATASection,CharacterData);
2684  
2685  
2686 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function DocumentType() {
2687 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2688 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;
2689 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(DocumentType,Node);
2690  
2691 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Notation() {
2692 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2693 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Notation.prototype.nodeType = NOTATION_NODE;
2694 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(Notation,Node);
2695  
2696 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function Entity() {
2697 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2698 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Entity.prototype.nodeType = ENTITY_NODE;
2699 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(Entity,Node);
2700  
2701 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function EntityReference() {
2702 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2703 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;
2704 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(EntityReference,Node);
2705  
2706 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function DocumentFragment() {
2707 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/};
2708 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/DocumentFragment.prototype.nodeName = "#document-fragment";
2709 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE;
2710 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(DocumentFragment,Node);
2711  
2712  
2713 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function ProcessingInstruction() {
2714 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2715 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;
2716 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/_extends(ProcessingInstruction,Node);
2717 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function XMLSerializer(){}
2718 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/XMLSerializer.prototype.serializeToString = function(node){
2719 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var buf = [];
2720 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ serializeToString(node,buf);
2721 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return buf.join('');
2722 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2723 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/Node.prototype.toString =function(){
2724 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return XMLSerializer.prototype.serializeToString(this);
2725 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/}
2726 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/function serializeToString(node,buf){
2727 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ switch(node.nodeType){
2728 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ case ELEMENT_NODE:
2729 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var attrs = node.attributes;
2730 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var len = attrs.length;
2731 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var child = node.firstChild;
2732 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var nodeName = node.tagName;
2733 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var isHTML = htmlns === node.namespaceURI
2734 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ buf.push('<',nodeName);
2735 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ for(var i=0;i<len;i++){
2736 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ serializeToString(attrs.item(i),buf,isHTML);
2737 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2738 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(child || isHTML && !/^(?:meta|link|img|br|hr|input|button)$/i.test(nodeName)){
2739 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ buf.push('>');
2740 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(isHTML && /^script$/i.test(nodeName)){
2741 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ if(child){
2742 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ buf.push(child.data);
2743 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2744 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2745 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(child){
2746 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ serializeToString(child,buf);
2747 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ child = child.nextSibling;
2748 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2749 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2750 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ buf.push('</',nodeName,'>');
2751 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }else{
2752 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ buf.push('/>');
2753 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2754 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return;
2755 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ case DOCUMENT_NODE:
2756 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ case DOCUMENT_FRAGMENT_NODE:
2757 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ var child = node.firstChild;
2758 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ while(child){
2759 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ serializeToString(child,buf);
2760 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ child = child.nextSibling;
2761 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ }
2762 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return;
2763 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ case ATTRIBUTE_NODE:
2764 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/ return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"');
2765 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/ case TEXT_NODE:
2766 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/ return buf.push(node.data.replace(/[<&]/g,_xmlEncoder));
2767 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case CDATA_SECTION_NODE:
2768 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return buf.push( '<![CDATA[',node.data,']]>');
2769 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case COMMENT_NODE:
2770 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return buf.push( "<!--",node.data,"-->");
2771 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case DOCUMENT_TYPE_NODE:
2772 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var pubid = node.publicId;
2773 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var sysid = node.systemId;
2774 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push('<!DOCTYPE ',node.name);
2775 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(pubid){
2776 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push(' PUBLIC "',pubid);
2777 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (sysid && sysid!='.') {
2778 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push( '" "',sysid);
2779 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2780 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push('">');
2781 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }else if(sysid && sysid!='.'){
2782 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push(' SYSTEM "',sysid,'">');
2783 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }else{
2784 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var sub = node.internalSubset;
2785 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(sub){
2786 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push(" [",sub,"]");
2787 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2788 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push(">");
2789 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2790 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return;
2791 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case PROCESSING_INSTRUCTION_NODE:
2792 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return buf.push( "<?",node.target," ",node.data,"?>");
2793 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case ENTITY_REFERENCE_NODE:
2794 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return buf.push( '&',node.nodeName,';');
2795 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ default:
2796 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push('??',node.nodeName);
2797 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2798 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2799 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function importNode(doc,node,deep){
2800 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var node2;
2801 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ switch (node.nodeType) {
2802 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case ELEMENT_NODE:
2803 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2 = node.cloneNode(false);
2804 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.ownerDocument = doc;
2805 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case DOCUMENT_FRAGMENT_NODE:
2806 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ break;
2807 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case ATTRIBUTE_NODE:
2808 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ deep = true;
2809 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ break;
2810 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2811 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(!node2){
2812 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2 = node.cloneNode(false);//false
2813 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2814 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.ownerDocument = doc;
2815 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.parentNode = null;
2816 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(deep){
2817 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var child = node.firstChild;
2818 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ while(child){
2819 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.appendChild(importNode(doc,child,deep));
2820 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ child = child.nextSibling;
2821 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2822 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2823 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return node2;
2824 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2825 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function cloneNode(doc,node,deep){
2826 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var node2 = new node.constructor();
2827 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for(var n in node){
2828 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var v = node[n];
2829 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(typeof v != 'object' ){
2830 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(v != node2[n]){
2831 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2[n] = v;
2832 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2833 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2834 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2835 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(node.childNodes){
2836 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.childNodes = new NodeList();
2837 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2838 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.ownerDocument = doc;
2839 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ switch (node2.nodeType) {
2840 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case ELEMENT_NODE:
2841 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var attrs = node.attributes;
2842 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var attrs2 = node2.attributes = new NamedNodeMap();
2843 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var len = attrs.length
2844 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ attrs2._ownerElement = node2;
2845 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for(var i=0;i<len;i++){
2846 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.setAttributeNode(cloneNode(doc,attrs.item(i),true));
2847 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2848 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ break;;
2849 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case ATTRIBUTE_NODE:
2850 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ deep = true;
2851 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2852 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(deep){
2853 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var child = node.firstChild;
2854 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ while(child){
2855 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node2.appendChild(cloneNode(doc,child,deep));
2856 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ child = child.nextSibling;
2857 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2858 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2859 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return node2;
2860 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2861  
2862 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function __set__(object,key,value){
2863 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object[key] = value
2864 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2865 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/try{
2866 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(Object.defineProperty){
2867 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.defineProperty(LiveNodeList.prototype,'length',{
2868 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ get:function(){
2869 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ _updateLiveList(this);
2870 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return this.$$length;
2871 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2872 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ });
2873 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.defineProperty(Node.prototype,'textContent',{
2874 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ get:function(){
2875 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return getTextContent(this);
2876 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
2877 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ set:function(data){
2878 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ switch(this.nodeType){
2879 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case 1:
2880 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case 11:
2881 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ while(this.firstChild){
2882 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.removeChild(this.firstChild);
2883 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2884 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(data || String(data)){
2885 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.appendChild(this.ownerDocument.createTextNode(data));
2886 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2887 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ break;
2888 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ default:
2889 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.data = data;
2890 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.value = value;
2891 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.nodeValue = data;
2892 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2893 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2894 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ })
2895  
2896 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ function getTextContent(node){
2897 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ switch(node.nodeType){
2898 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case 1:
2899 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ case 11:
2900 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var buf = [];
2901 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node = node.firstChild;
2902 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ while(node){
2903 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(node.nodeType!==7 && node.nodeType !==8){
2904 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ buf.push(getTextContent(node));
2905 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2906 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node = node.nextSibling;
2907 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2908 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return buf.join('');
2909 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ default:
2910 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return node.nodeValue;
2911 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2912 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2913 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ __set__ = function(object,key,value){
2914 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object['$$'+key] = value
2915 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2916 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2917 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}catch(e){//ie8
2918 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2919  
2920 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/return DOMImplementation;
2921 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/});
2922  
2923 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/define("ace/mode/xml/dom-parser",["require","exports","module","ace/mode/xml/sax","ace/mode/xml/dom"], function(require, exports, module) {
2924 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ 'use strict';
2925  
2926 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var XMLReader = require('./sax'),
2927 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ DOMImplementation = require('./dom');
2928  
2929 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function DOMParser(options){
2930 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.options = options ||{locator:{}};
2931  
2932 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2933 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/DOMParser.prototype.parseFromString = function(source,mimeType){
2934 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var options = this.options;
2935 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var sax = new XMLReader();
2936 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler
2937 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var errorHandler = options.errorHandler;
2938 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var locator = options.locator;
2939 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var defaultNSMap = options.xmlns||{};
2940 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var entityMap = {'lt':'<','gt':'>','amp':'&','quot':'"','apos':"'"}
2941 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(locator){
2942 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ domBuilder.setDocumentLocator(locator)
2943 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2944  
2945 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);
2946 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ sax.domBuilder = options.domBuilder || domBuilder;
2947 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(/\/x?html?$/.test(mimeType)){
2948 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ entityMap.nbsp = '\xa0';
2949 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ entityMap.copy = '\xa9';
2950 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ defaultNSMap['']= 'http://www.w3.org/1999/xhtml';
2951 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2952 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(source){
2953 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ sax.parse(source,defaultNSMap,entityMap);
2954 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }else{
2955 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ sax.errorHandler.error("invalid document source");
2956 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2957 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return domBuilder.document;
2958 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2959 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function buildErrorHandler(errorImpl,domBuilder,locator){
2960 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(!errorImpl){
2961 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(domBuilder instanceof DOMHandler){
2962 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return domBuilder;
2963 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2964 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ errorImpl = domBuilder ;
2965 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2966 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var errorHandler = {}
2967 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var isCallback = errorImpl instanceof Function;
2968 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ locator = locator||{}
2969 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ function build(key){
2970 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var fn = errorImpl[key];
2971 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(!fn){
2972 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(isCallback){
2973 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;
2974 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }else{
2975 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var i=arguments.length;
2976 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ while(--i){
2977 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(fn = errorImpl[arguments[i]]){
2978 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ break;
2979 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2980 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2981 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2982 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2983 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ errorHandler[key] = fn && function(msg){
2984 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ fn(msg+_locator(locator), msg, locator);
2985 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }||function(){};
2986 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
2987 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ build('warning','warn');
2988 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ build('error','warn','warning');
2989 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ build('fatalError','warn','warning','error');
2990 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return errorHandler;
2991 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2992 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function DOMHandler() {
2993 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.cdata = false;
2994 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2995 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function position(locator,node){
2996 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node.lineNumber = locator.lineNumber;
2997 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ node.columnNumber = locator.columnNumber;
2998 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
2999 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/DOMHandler.prototype = {
3000 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ startDocument : function() {
3001 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.document = new DOMImplementation().createDocument(null, null, null);
3002 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (this.locator) {
3003 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.document.documentURI = this.locator.systemId;
3004 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3005 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3006 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ startElement:function(namespaceURI, localName, qName, attrs) {
3007 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var doc = this.document;
3008 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var el = doc.createElementNS(namespaceURI, qName||localName);
3009 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var len = attrs.length;
3010 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ appendElement(this, el);
3011 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.currentElement = el;
3012  
3013 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.locator && position(this.locator,el)
3014 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i = 0 ; i < len; i++) {
3015 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var namespaceURI = attrs.getURI(i);
3016 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var value = attrs.getValue(i);
3017 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var qName = attrs.getQName(i);
3018 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var attr = doc.createAttributeNS(namespaceURI, qName);
3019 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if( attr.getOffset){
3020 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ position(attr.getOffset(1),attr)
3021 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3022 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ attr.value = attr.nodeValue = value;
3023 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ el.setAttributeNode(attr)
3024 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3025 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3026 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ endElement:function(namespaceURI, localName, qName) {
3027 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var current = this.currentElement
3028 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var tagName = current.tagName;
3029 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.currentElement = current.parentNode;
3030 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3031 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ startPrefixMapping:function(prefix, uri) {
3032 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3033 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ endPrefixMapping:function(prefix) {
3034 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3035 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ processingInstruction:function(target, data) {
3036 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var ins = this.document.createProcessingInstruction(target, data);
3037 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.locator && position(this.locator,ins)
3038 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ appendElement(this, ins);
3039 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3040 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ ignorableWhitespace:function(ch, start, length) {
3041 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3042 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ characters:function(chars, start, length) {
3043 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ chars = _toString.apply(this,arguments)
3044 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(this.currentElement && chars){
3045 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (this.cdata) {
3046 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var charNode = this.document.createCDATASection(chars);
3047 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.currentElement.appendChild(charNode);
3048 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3049 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var charNode = this.document.createTextNode(chars);
3050 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.currentElement.appendChild(charNode);
3051 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3052 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.locator && position(this.locator,charNode)
3053 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3054 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3055 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ skippedEntity:function(name) {
3056 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3057 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ endDocument:function() {
3058 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.document.normalize();
3059 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3060 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ setDocumentLocator:function (locator) {
3061 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(this.locator = locator){// && !('lineNumber' in locator)){
3062 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ locator.lineNumber = 0;
3063 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3064 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3065 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ comment:function(chars, start, length) {
3066 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ chars = _toString.apply(this,arguments)
3067 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var comm = this.document.createComment(chars);
3068 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.locator && position(this.locator,comm)
3069 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ appendElement(this, comm);
3070 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3071  
3072 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ startCDATA:function() {
3073 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.cdata = true;
3074 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3075 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ endCDATA:function() {
3076 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.cdata = false;
3077 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3078  
3079 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ startDTD:function(name, publicId, systemId) {
3080 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var impl = this.document.implementation;
3081 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (impl && impl.createDocumentType) {
3082 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var dt = impl.createDocumentType(name, publicId, systemId);
3083 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.locator && position(this.locator,dt)
3084 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ appendElement(this, dt);
3085 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3086 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3087 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ warning:function(error) {
3088 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ console.warn(error,_locator(this.locator));
3089 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3090 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ error:function(error) {
3091 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ console.error(error,_locator(this.locator));
3092 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3093 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ fatalError:function(error) {
3094 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ console.error(error,_locator(this.locator));
3095 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw error;
3096 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3097 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3098 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function _locator(l){
3099 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(l){
3100 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'
3101 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3102 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3103 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function _toString(chars,start,length){
3104 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(typeof chars == 'string'){
3105 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return chars.substr(start,length)
3106 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)")
3107 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(chars.length >= start+length || start){
3108 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return new java.lang.String(chars,start,length)+'';
3109 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3110 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return chars;
3111 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3112 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3113 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){
3114 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ DOMHandler.prototype[key] = function(){return null}
3115 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/})
3116 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function appendElement (hander,node) {
3117 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!hander.currentElement) {
3118 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ hander.document.appendChild(node);
3119 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3120 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ hander.currentElement.appendChild(node);
3121 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3122 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}//appendChild and setAttributeNS are preformance key
3123  
3124 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/return {
3125 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ DOMParser: DOMParser
3126 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3127 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/});
3128  
3129 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/define("ace/mode/xml_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/xml/dom-parser"], function(require, exports, module) {
3130 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/"use strict";
3131  
3132 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var oop = require("../lib/oop");
3133 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var lang = require("../lib/lang");
3134 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var Mirror = require("../worker/mirror").Mirror;
3135 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var DOMParser = require("./xml/dom-parser").DOMParser;
3136  
3137 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var Worker = exports.Worker = function(sender) {
3138 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Mirror.call(this, sender);
3139 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.setTimeout(400);
3140 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.context = null;
3141 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/};
3142  
3143 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/oop.inherits(Worker, Mirror);
3144  
3145 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/(function() {
3146  
3147 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.setOptions = function(options) {
3148 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.context = options.context;
3149 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3150  
3151 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.onUpdate = function() {
3152 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var value = this.doc.getValue();
3153 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!value)
3154 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return;
3155 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var parser = new DOMParser();
3156 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var errors = [];
3157 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ parser.options.errorHandler = {
3158 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ fatalError: function(fullMsg, errorMsg, locator) {
3159 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ errors.push({
3160 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ row: locator.lineNumber,
3161 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ column: locator.columnNumber,
3162 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ text: errorMsg,
3163 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ type: "error"
3164 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ });
3165 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3166 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ error: function(fullMsg, errorMsg, locator) {
3167 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ errors.push({
3168 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ row: locator.lineNumber,
3169 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ column: locator.columnNumber,
3170 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ text: errorMsg,
3171 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ type: "error"
3172 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ });
3173 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ },
3174 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ warning: function(fullMsg, errorMsg, locator) {
3175 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ errors.push({
3176 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ row: locator.lineNumber,
3177 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ column: locator.columnNumber,
3178 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ text: errorMsg,
3179 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ type: "warning"
3180 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ });
3181 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3182 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3183  
3184 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ parser.parseFromString(value);
3185 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.sender.emit("error", errors);
3186 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3187  
3188 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}).call(Worker.prototype);
3189  
3190 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/});
3191  
3192 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/define("ace/lib/es5-shim",["require","exports","module"], function(require, exports, module) {
3193  
3194 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function Empty() {}
3195  
3196 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Function.prototype.bind) {
3197 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Function.prototype.bind = function bind(that) { // .length is 1
3198 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var target = this;
3199 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (typeof target != "function") {
3200 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("Function.prototype.bind called on incompatible " + target);
3201 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3202 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var args = slice.call(arguments, 1); // for normal call
3203 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var bound = function () {
3204  
3205 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (this instanceof bound) {
3206  
3207 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var result = target.apply(
3208 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this,
3209 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ args.concat(slice.call(arguments))
3210 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ );
3211 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (Object(result) === result) {
3212 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return result;
3213 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3214 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return this;
3215  
3216 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3217 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return target.apply(
3218 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ that,
3219 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ args.concat(slice.call(arguments))
3220 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ );
3221  
3222 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3223  
3224 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3225 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(target.prototype) {
3226 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Empty.prototype = target.prototype;
3227 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ bound.prototype = new Empty();
3228 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Empty.prototype = null;
3229 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3230 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return bound;
3231 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3232 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3233 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var call = Function.prototype.call;
3234 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var prototypeOfArray = Array.prototype;
3235 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var prototypeOfObject = Object.prototype;
3236 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var slice = prototypeOfArray.slice;
3237 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var _toString = call.bind(prototypeOfObject.toString);
3238 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var owns = call.bind(prototypeOfObject.hasOwnProperty);
3239 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var defineGetter;
3240 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var defineSetter;
3241 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var lookupGetter;
3242 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var lookupSetter;
3243 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var supportsAccessors;
3244 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
3245 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ defineGetter = call.bind(prototypeOfObject.__defineGetter__);
3246 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ defineSetter = call.bind(prototypeOfObject.__defineSetter__);
3247 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
3248 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
3249 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3250 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if ([1,2].splice(0).length != 2) {
3251 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if(function() { // test IE < 9 to splice bug - see issue #138
3252 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ function makeArray(l) {
3253 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var a = new Array(l+2);
3254 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ a[0] = a[1] = 0;
3255 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return a;
3256 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3257 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var array = [], lengthBefore;
3258  
3259 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ array.splice.apply(array, makeArray(20));
3260 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ array.splice.apply(array, makeArray(26));
3261  
3262 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ lengthBefore = array.length; //46
3263 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ array.splice(5, 0, "XXX"); // add one element
3264  
3265 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ lengthBefore + 1 == array.length
3266  
3267 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (lengthBefore + 1 == array.length) {
3268 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return true;// has right splice implementation without bugs
3269 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3270 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }()) {//IE 6/7
3271 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var array_splice = Array.prototype.splice;
3272 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.splice = function(start, deleteCount) {
3273 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!arguments.length) {
3274 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return [];
3275 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3276 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return array_splice.apply(this, [
3277 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ start === void 0 ? 0 : start,
3278 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ deleteCount === void 0 ? (this.length - start) : deleteCount
3279 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ ].concat(slice.call(arguments, 2)))
3280 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3281 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3282 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {//IE8
3283 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.splice = function(pos, removeCount){
3284 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var length = this.length;
3285 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (pos > 0) {
3286 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (pos > length)
3287 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ pos = length;
3288 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else if (pos == void 0) {
3289 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ pos = 0;
3290 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else if (pos < 0) {
3291 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ pos = Math.max(length + pos, 0);
3292 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3293  
3294 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!(pos+removeCount < length))
3295 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ removeCount = length - pos;
3296  
3297 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var removed = this.slice(pos, pos+removeCount);
3298 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var insert = slice.call(arguments, 2);
3299 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var add = insert.length;
3300 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (pos === length) {
3301 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (add) {
3302 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.push.apply(this, insert);
3303 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3304 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3305 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var remove = Math.min(removeCount, length - pos);
3306 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var tailOldPos = pos + remove;
3307 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var tailNewPos = tailOldPos + add - remove;
3308 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var tailCount = length - tailOldPos;
3309 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var lengthAfterRemove = length - remove;
3310  
3311 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (tailNewPos < tailOldPos) { // case A
3312 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i = 0; i < tailCount; ++i) {
3313 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this[tailNewPos+i] = this[tailOldPos+i];
3314 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3315 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else if (tailNewPos > tailOldPos) { // case B
3316 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (i = tailCount; i--; ) {
3317 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this[tailNewPos+i] = this[tailOldPos+i];
3318 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3319 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } // else, add == remove (nothing to do)
3320  
3321 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (add && pos === lengthAfterRemove) {
3322 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.length = lengthAfterRemove; // truncate array
3323 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.push.apply(this, insert);
3324 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3325 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.length = lengthAfterRemove + add; // reserves space
3326 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (i = 0; i < add; ++i) {
3327 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this[pos+i] = insert[i];
3328 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3329 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3330 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3331 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return removed;
3332 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3333 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3334 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3335 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.isArray) {
3336 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.isArray = function isArray(obj) {
3337 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return _toString(obj) == "[object Array]";
3338 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3339 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3340 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var boxedString = Object("a"),
3341 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ splitString = boxedString[0] != "a" || !(0 in boxedString);
3342  
3343 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.forEach) {
3344 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.forEach = function forEach(fun /*, thisp*/) {
3345 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object = toObject(this),
3346 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ self = splitString && _toString(this) == "[object String]" ?
3347 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3348 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object,
3349 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ thisp = arguments[1],
3350 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ i = -1,
3351 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0;
3352 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (_toString(fun) != "[object Function]") {
3353 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(); // TODO message
3354 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3355  
3356 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ while (++i < length) {
3357 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self) {
3358 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ fun.call(thisp, self[i], i, object);
3359 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3360 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3361 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3362 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3363 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.map) {
3364 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.map = function map(fun /*, thisp*/) {
3365 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object = toObject(this),
3366 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ self = splitString && _toString(this) == "[object String]" ?
3367 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3368 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object,
3369 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0,
3370 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = Array(length),
3371 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ thisp = arguments[1];
3372 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (_toString(fun) != "[object Function]") {
3373 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(fun + " is not a function");
3374 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3375  
3376 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i = 0; i < length; i++) {
3377 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self)
3378 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result[i] = fun.call(thisp, self[i], i, object);
3379 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3380 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return result;
3381 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3382 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3383 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.filter) {
3384 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.filter = function filter(fun /*, thisp */) {
3385 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object = toObject(this),
3386 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ self = splitString && _toString(this) == "[object String]" ?
3387 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3388 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object,
3389 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0,
3390 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = [],
3391 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ value,
3392 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ thisp = arguments[1];
3393 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (_toString(fun) != "[object Function]") {
3394 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(fun + " is not a function");
3395 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3396  
3397 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i = 0; i < length; i++) {
3398 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self) {
3399 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ value = self[i];
3400 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (fun.call(thisp, value, i, object)) {
3401 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result.push(value);
3402 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3403 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3404 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3405 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return result;
3406 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3407 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3408 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.every) {
3409 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.every = function every(fun /*, thisp */) {
3410 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object = toObject(this),
3411 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ self = splitString && _toString(this) == "[object String]" ?
3412 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3413 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object,
3414 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0,
3415 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ thisp = arguments[1];
3416 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (_toString(fun) != "[object Function]") {
3417 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(fun + " is not a function");
3418 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3419  
3420 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i = 0; i < length; i++) {
3421 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self && !fun.call(thisp, self[i], i, object)) {
3422 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return false;
3423 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3424 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3425 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return true;
3426 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3427 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3428 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.some) {
3429 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.some = function some(fun /*, thisp */) {
3430 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object = toObject(this),
3431 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ self = splitString && _toString(this) == "[object String]" ?
3432 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3433 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object,
3434 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0,
3435 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ thisp = arguments[1];
3436 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (_toString(fun) != "[object Function]") {
3437 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(fun + " is not a function");
3438 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3439  
3440 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i = 0; i < length; i++) {
3441 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self && fun.call(thisp, self[i], i, object)) {
3442 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return true;
3443 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3444 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3445 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return false;
3446 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3447 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3448 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.reduce) {
3449 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.reduce = function reduce(fun /*, initial*/) {
3450 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object = toObject(this),
3451 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ self = splitString && _toString(this) == "[object String]" ?
3452 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3453 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object,
3454 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0;
3455 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (_toString(fun) != "[object Function]") {
3456 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(fun + " is not a function");
3457 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3458 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!length && arguments.length == 1) {
3459 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("reduce of empty array with no initial value");
3460 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3461  
3462 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var i = 0;
3463 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var result;
3464 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (arguments.length >= 2) {
3465 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = arguments[1];
3466 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3467 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ do {
3468 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self) {
3469 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = self[i++];
3470 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ break;
3471 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3472 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (++i >= length) {
3473 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("reduce of empty array with no initial value");
3474 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3475 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } while (true);
3476 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3477  
3478 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (; i < length; i++) {
3479 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self) {
3480 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = fun.call(void 0, result, self[i], i, object);
3481 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3482 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3483  
3484 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return result;
3485 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3486 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3487 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.reduceRight) {
3488 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
3489 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object = toObject(this),
3490 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ self = splitString && _toString(this) == "[object String]" ?
3491 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3492 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object,
3493 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0;
3494 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (_toString(fun) != "[object Function]") {
3495 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(fun + " is not a function");
3496 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3497 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!length && arguments.length == 1) {
3498 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("reduceRight of empty array with no initial value");
3499 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3500  
3501 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var result, i = length - 1;
3502 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (arguments.length >= 2) {
3503 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = arguments[1];
3504 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3505 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ do {
3506 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self) {
3507 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = self[i--];
3508 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ break;
3509 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3510 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (--i < 0) {
3511 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("reduceRight of empty array with no initial value");
3512 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3513 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } while (true);
3514 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3515  
3516 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ do {
3517 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in this) {
3518 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ result = fun.call(void 0, result, self[i], i, object);
3519 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3520 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } while (i--);
3521  
3522 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return result;
3523 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3524 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3525 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {
3526 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
3527 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var self = splitString && _toString(this) == "[object String]" ?
3528 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3529 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ toObject(this),
3530 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0;
3531  
3532 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!length) {
3533 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return -1;
3534 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3535  
3536 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var i = 0;
3537 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (arguments.length > 1) {
3538 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ i = toInteger(arguments[1]);
3539 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3540 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ i = i >= 0 ? i : Math.max(0, length + i);
3541 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (; i < length; i++) {
3542 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self && self[i] === sought) {
3543 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return i;
3544 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3545 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3546 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return -1;
3547 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3548 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3549 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {
3550 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
3551 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var self = splitString && _toString(this) == "[object String]" ?
3552 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ this.split("") :
3553 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ toObject(this),
3554 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ length = self.length >>> 0;
3555  
3556 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!length) {
3557 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return -1;
3558 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3559 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var i = length - 1;
3560 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (arguments.length > 1) {
3561 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ i = Math.min(i, toInteger(arguments[1]));
3562 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3563 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ i = i >= 0 ? i : length - Math.abs(i);
3564 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (; i >= 0; i--) {
3565 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (i in self && sought === self[i]) {
3566 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return i;
3567 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3568 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3569 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return -1;
3570 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3571 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3572 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.getPrototypeOf) {
3573 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.getPrototypeOf = function getPrototypeOf(object) {
3574 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object.__proto__ || (
3575 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object.constructor ?
3576 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object.constructor.prototype :
3577 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ prototypeOfObject
3578 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ );
3579 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3580 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3581 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.getOwnPropertyDescriptor) {
3582 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
3583 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "non-object: ";
3584 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
3585 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if ((typeof object != "object" && typeof object != "function") || object === null)
3586 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(ERR_NON_OBJECT + object);
3587 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!owns(object, property))
3588 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return;
3589  
3590 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var descriptor, getter, setter;
3591 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ descriptor = { enumerable: true, configurable: true };
3592 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (supportsAccessors) {
3593 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var prototype = object.__proto__;
3594 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object.__proto__ = prototypeOfObject;
3595  
3596 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var getter = lookupGetter(object, property);
3597 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var setter = lookupSetter(object, property);
3598 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object.__proto__ = prototype;
3599  
3600 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (getter || setter) {
3601 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (getter) descriptor.get = getter;
3602 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (setter) descriptor.set = setter;
3603 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return descriptor;
3604 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3605 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3606 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ descriptor.value = object[property];
3607 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return descriptor;
3608 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3609 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3610 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.getOwnPropertyNames) {
3611 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
3612 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return Object.keys(object);
3613 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3614 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3615 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.create) {
3616 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var createEmpty;
3617 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (Object.prototype.__proto__ === null) {
3618 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ createEmpty = function () {
3619 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return { "__proto__": null };
3620 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3621 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3622 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ createEmpty = function () {
3623 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var empty = {};
3624 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i in empty)
3625 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty[i] = null;
3626 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.constructor =
3627 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.hasOwnProperty =
3628 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.propertyIsEnumerable =
3629 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.isPrototypeOf =
3630 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.toLocaleString =
3631 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.toString =
3632 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.valueOf =
3633 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ empty.__proto__ = null;
3634 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return empty;
3635 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3636 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3637  
3638 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.create = function create(prototype, properties) {
3639 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var object;
3640 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (prototype === null) {
3641 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object = createEmpty();
3642 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3643 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (typeof prototype != "object")
3644 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
3645 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var Type = function () {};
3646 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Type.prototype = prototype;
3647 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object = new Type();
3648 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object.__proto__ = prototype;
3649 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3650 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (properties !== void 0)
3651 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.defineProperties(object, properties);
3652 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object;
3653 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3654 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3655  
3656 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function doesDefinePropertyWork(object) {
3657 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ try {
3658 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.defineProperty(object, "sentinel", {});
3659 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return "sentinel" in object;
3660 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } catch (exception) {
3661 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3662 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3663 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (Object.defineProperty) {
3664 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var definePropertyWorksOnObject = doesDefinePropertyWork({});
3665 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var definePropertyWorksOnDom = typeof document == "undefined" ||
3666 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ doesDefinePropertyWork(document.createElement("div"));
3667 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
3668 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var definePropertyFallback = Object.defineProperty;
3669 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3670 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3671  
3672 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.defineProperty || definePropertyFallback) {
3673 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
3674 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
3675 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
3676 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "on this javascript engine";
3677  
3678 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.defineProperty = function defineProperty(object, property, descriptor) {
3679 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if ((typeof object != "object" && typeof object != "function") || object === null)
3680 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(ERR_NON_OBJECT_TARGET + object);
3681 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
3682 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
3683 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (definePropertyFallback) {
3684 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ try {
3685 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return definePropertyFallback.call(Object, object, property, descriptor);
3686 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } catch (exception) {
3687 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3688 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3689 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (owns(descriptor, "value")) {
3690  
3691 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (supportsAccessors && (lookupGetter(object, property) ||
3692 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ lookupSetter(object, property)))
3693 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ {
3694 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var prototype = object.__proto__;
3695 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object.__proto__ = prototypeOfObject;
3696 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ delete object[property];
3697 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object[property] = descriptor.value;
3698 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object.__proto__ = prototype;
3699 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3700 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object[property] = descriptor.value;
3701 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3702 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3703 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (!supportsAccessors)
3704 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
3705 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (owns(descriptor, "get"))
3706 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ defineGetter(object, property, descriptor.get);
3707 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (owns(descriptor, "set"))
3708 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ defineSetter(object, property, descriptor.set);
3709 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3710  
3711 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object;
3712 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3713 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3714 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.defineProperties) {
3715 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.defineProperties = function defineProperties(object, properties) {
3716 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var property in properties) {
3717 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (owns(properties, property))
3718 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.defineProperty(object, property, properties[property]);
3719 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3720 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object;
3721 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3722 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3723 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.seal) {
3724 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.seal = function seal(object) {
3725 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object;
3726 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3727 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3728 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.freeze) {
3729 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.freeze = function freeze(object) {
3730 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object;
3731 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3732 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3733 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/try {
3734 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.freeze(function () {});
3735 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/} catch (exception) {
3736 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.freeze = (function freeze(freezeObject) {
3737 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return function freeze(object) {
3738 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (typeof object == "function") {
3739 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object;
3740 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else {
3741 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return freezeObject(object);
3742 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3743 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3744 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ })(Object.freeze);
3745 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3746 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.preventExtensions) {
3747 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.preventExtensions = function preventExtensions(object) {
3748 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return object;
3749 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3750 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3751 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.isSealed) {
3752 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.isSealed = function isSealed(object) {
3753 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return false;
3754 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3755 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3756 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.isFrozen) {
3757 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.isFrozen = function isFrozen(object) {
3758 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return false;
3759 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3760 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3761 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.isExtensible) {
3762 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.isExtensible = function isExtensible(object) {
3763 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (Object(object) === object) {
3764 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError(); // TODO message
3765 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3766 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var name = '';
3767 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ while (owns(object, name)) {
3768 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ name += '?';
3769 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3770 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object[name] = true;
3771 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var returnValue = owns(object, name);
3772 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ delete object[name];
3773 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return returnValue;
3774 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3775 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3776 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Object.keys) {
3777 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var hasDontEnumBug = true,
3778 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ dontEnums = [
3779 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "toString",
3780 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "toLocaleString",
3781 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "valueOf",
3782 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "hasOwnProperty",
3783 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "isPrototypeOf",
3784 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "propertyIsEnumerable",
3785 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "constructor"
3786 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ ],
3787 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ dontEnumsLength = dontEnums.length;
3788  
3789 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var key in {"toString": null}) {
3790 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ hasDontEnumBug = false;
3791 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3792  
3793 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Object.keys = function keys(object) {
3794  
3795 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (
3796 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ (typeof object != "object" && typeof object != "function") ||
3797 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ object === null
3798 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ ) {
3799 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("Object.keys called on a non-object");
3800 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3801  
3802 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var keys = [];
3803 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var name in object) {
3804 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (owns(object, name)) {
3805 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ keys.push(name);
3806 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3807 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3808  
3809 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (hasDontEnumBug) {
3810 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
3811 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var dontEnum = dontEnums[i];
3812 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (owns(object, dontEnum)) {
3813 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ keys.push(dontEnum);
3814 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3815 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3816 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3817 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return keys;
3818 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3819  
3820 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3821 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!Date.now) {
3822 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ Date.now = function now() {
3823 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return new Date().getTime();
3824 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3825 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3826 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
3827 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
3828 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ "\u2029\uFEFF";
3829 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/if (!String.prototype.trim || ws.trim()) {
3830 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ ws = "[" + ws + "]";
3831 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
3832 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ trimEndRegexp = new RegExp(ws + ws + "*$");
3833 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ String.prototype.trim = function trim() {
3834 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
3835 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ };
3836 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3837  
3838 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function toInteger(n) {
3839 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ n = +n;
3840 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (n !== n) { // isNaN
3841 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ n = 0;
3842 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {
3843 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ n = (n > 0 || -1) * Math.floor(Math.abs(n));
3844 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3845 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return n;
3846 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3847  
3848 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function isPrimitive(input) {
3849 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var type = typeof input;
3850 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return (
3851 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ input === null ||
3852 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ type === "undefined" ||
3853 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ type === "boolean" ||
3854 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ type === "number" ||
3855 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ type === "string"
3856 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ );
3857 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3858  
3859 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/function toPrimitive(input) {
3860 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ var val, valueOf, toString;
3861 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (isPrimitive(input)) {
3862 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return input;
3863 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3864 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ valueOf = input.valueOf;
3865 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (typeof valueOf === "function") {
3866 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ val = valueOf.call(input);
3867 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (isPrimitive(val)) {
3868 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return val;
3869 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3870 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3871 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ toString = input.toString;
3872 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (typeof toString === "function") {
3873 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ val = toString.call(input);
3874 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (isPrimitive(val)) {
3875 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return val;
3876 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3877 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3878 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError();
3879 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/}
3880 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/var toObject = function (o) {
3881 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ if (o == null) { // this matches both null and undefined
3882 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ throw new TypeError("can't convert "+o+" to object");
3883 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ }
3884 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/ return Object(o);
3885 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/};
3886  
3887 <]/<\?(\S*)\s*([\s\S]*?)\s*$/<><)/<&"]/<&]/});