(function () { var j, n = this; function o() {} function p(a) { var b = typeof a; if (b == "object") if (a) { if (a instanceof Array || !(a instanceof Object) && Object.prototype.toString.call(a) == "[object Array]" || typeof a.length == "number" && typeof a.splice != "undefined" && typeof a.propertyIsEnumerable != "undefined" && !a.propertyIsEnumerable("splice")) return "array"; if (!(a instanceof Object) && (Object.prototype.toString.call(a) == "[object Function]" || typeof a.call != "undefined" && typeof a.propertyIsEnumerable != "undefined" && !a.propertyIsEnumerable("call"))) return "function" } else return "null"; else if (b == "function" && typeof a.call == "undefined") return "object"; return b } function aa(a) { var b = p(a); return b == "array" || b == "object" && typeof a.length == "number" } function s(a) { if (a.hasOwnProperty && a.hasOwnProperty(t)) return a[t]; a[t] || (a[t] = ++ba); return a[t] } var t = "closure_uid_" + Math.floor(Math.random() * 2147483648).toString(36), ba = 0, ca = Date.now || function () { return +new Date }; function u(a, b) { function c() {} c.prototype = b.prototype; a.L = b.prototype; a.prototype = new c }; var v = Array.prototype, w = v.indexOf ? function (a, b, c) { return v.indexOf.call(a, b, c) } : function (a, b, c) { c = c == null ? 0 : c < 0 ? Math.max(0, a.length + c) : c; if (typeof a == "string") { if (typeof b != "string" || b.length != 1) return -1; return a.indexOf(b, c) } for (c = c; c < a.length; c++) if (c in a && a[c] === b) return c; return -1 }, da = v.forEach ? function (a, b, c) { v.forEach.call(a, b, c) } : function (a, b, c) { for (var d = a.length, f = typeof a == "string" ? a.split("") : a, e = 0; e < d; e++) e in f && b.call(c, f[e], e, a) }; function x(a, b) { for (var c = 0, d = String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), f = String(b).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), e = Math.max(d.length, f.length), g = 0; c == 0 && g < e; g++) { var h = d[g] || "", i = f[g] || "", k = new RegExp("(\\d*)(\\D*)", "g"), r = new RegExp("(\\d*)(\\D*)", "g"); do { var m = k.exec(h) || ["", "", ""], l = r.exec(i) || ["", "", ""]; if (m[0].length == 0 && l[0].length == 0) break; c = y(m[1].length == 0 ? 0 : parseInt(m[1], 10), l[1].length == 0 ? 0 : parseInt(l[1], 10)) || y(m[2].length == 0, l[2].length == 0) || y(m[2], l[2]) } while (c == 0) } return c } function y(a, b) { if (a < b) return -1; else if (a > b) return 1; return 0 }; var z, A, B, C; function ea() { return n.navigator ? n.navigator.userAgent : null } C = B = A = z = false; var D; if (D = ea()) { var fa = n.navigator; z = D.indexOf("Opera") == 0; A = !z && D.indexOf("MSIE") != -1; B = !z && D.indexOf("WebKit") != -1; C = !z && !B && fa.product == "Gecko" } var ga = z, E = A, ha = C, ia = B, ja = n.navigator, ka = (ja && ja.platform || "").indexOf("Mac") != -1, F, G = "", H; if (ga && n.opera) { var la = n.opera.version; G = typeof la == "function" ? la() : la } else { if (ha) H = /rv\:([^\);]+)(\)|;)/; else if (E) H = /MSIE\s+([^\);]+)(\)|;)/; else if (ia) H = /WebKit\/(\S+)/; if (H) { var ma = H.exec(ea()); G = ma ? ma[1] : "" } } F = G; var I = {}; function na(a, b, c, d) { d = d || a; b = b && b != "*" ? b.toUpperCase() : ""; if (d.querySelectorAll && (b || c) && (!ia || a.compatMode == "CSS1Compat" || I["528"] || (I["528"] = x(F, "528") >= 0))) return d.querySelectorAll(b + (c ? "." + c : "")); if (c && d.getElementsByClassName) { a = d.getElementsByClassName(c); if (b) { d = {}; for (var f = 0, e = 0, g; g = a[e]; e++) if (b == g.nodeName) d[f++] = g; d.length = f; return d } else return a } a = d.getElementsByTagName(b || "*"); if (c) { d = {}; for (e = f = 0; g = a[e]; e++) { b = g.className; if (typeof b.split == "function" && w(b.split(/\s+/), c) >= 0) d[f++] = g } d.length = f; return d } else return a } function oa(a, b) { var c = []; pa(a, b, c, false); return c } function pa(a, b, c, d) { if (a != null) for (var f = 0, e; e = a.childNodes[f]; f++) { if (b(e)) { c.push(e); if (d) return true } if (pa(e, b, c, d)) return true } return false }; function J(a) { var b = new RegExp("(^|[\\(\\s\"-])'([\\s\\S]*?)'($|[\\)\\s\".,;:?!-])", "g"), c; do { c = a; a = a.replace(b, "$1\u2018$2\u2019$3") } while (c != a); c = [{ g: "\\.\\.\\.", replace: "\u2026" }, { g: "'", replace: "\u2019" }, { g: '"($|[\\)\\s/.,;:?!\\u2019])', replace: "\u201d$1" }, { g: '(^|[\\(\\s-/\\u2018])"', replace: "$1\u201c" }, { g: "---", replace: "\u2014" }, { g: "--", replace: "\u2013" }]; for (var d = 0, f = c.length; d < f; ++d) { var e = c[d]; b = new RegExp(e.g, "g"); a = a.replace(b, e.replace) } return a }; function K(a, b) { var c = b || {}, d = c.uglyTags || []; c = c.uglyClass || ""; if (a == null) return null; if (a.nodeType == 3) a.data = J(a.data); else if (!(w(d, a.nodeName.toLowerCase()) >= 0) && !(a.className && a.className == c)) { d = a.childNodes; for (c = 0; c < d.length; c++) { var f = K(d[c], b), e = d[c], g = e.parentNode; g && g.replaceChild(f, e) } } return a }; function qa() { for (var a = na(document, null, "prettify", void 0), b = { uglyTags: ["code", "kbd", "pre", "script"], uglyClass: "keepugly" }, c = 0; c < a.length; c++) K(a[c], b) }; function L() {} L.prototype.w = false; L.prototype.k = function () { if (!this.w) { this.w = true; this.f() } }; L.prototype.f = function () {}; function M(a, b) { this.type = a; this.currentTarget = this.target = b } u(M, L); M.prototype.f = function () { delete this.type; delete this.target; delete this.currentTarget }; M.prototype.r = false; M.prototype.T = true; function N(a, b) { a && this.l(a, b) } u(N, M); j = N.prototype; j.target = null; j.relatedTarget = null; j.offsetX = 0; j.offsetY = 0; j.clientX = 0; j.clientY = 0; j.screenX = 0; j.screenY = 0; j.button = 0; j.keyCode = 0; j.charCode = 0; j.ctrlKey = false; j.altKey = false; j.shiftKey = false; j.metaKey = false; j.S = false; j.A = null; j.l = function (a, b) { var c = this.type = a.type; this.target = a.target || a.srcElement; this.currentTarget = b; var d = a.relatedTarget; if (d) { if (ha) try { d = d.nodeName && d } catch (f) { d = null } } else if (c == "mouseover") d = a.fromElement; else if (c == "mouseout") d = a.toElement; this.relatedTarget = d; this.offsetX = a.offsetX !== undefined ? a.offsetX : a.layerX; this.offsetY = a.offsetY !== undefined ? a.offsetY : a.layerY; this.clientX = a.clientX !== undefined ? a.clientX : a.pageX; this.clientY = a.clientY !== undefined ? a.clientY : a.pageY; this.screenX = a.screenX || 0; this.screenY = a.screenY || 0; this.button = a.button; this.keyCode = a.keyCode || 0; this.charCode = a.charCode || (c == "keypress" ? a.keyCode : 0); this.ctrlKey = a.ctrlKey; this.altKey = a.altKey; this.shiftKey = a.shiftKey; this.metaKey = a.metaKey; this.S = ka ? a.metaKey : a.ctrlKey; this.A = a; delete this.T; delete this.r }; E && (I["8"] || (I["8"] = x(F, "8") >= 0)); N.prototype.f = function () { N.L.f.call(this); this.relatedTarget = this.currentTarget = this.target = this.A = null }; function ra() {} var sa = 0; j = ra.prototype; j.key = 0; j.i = false; j.t = false; j.l = function (a, b, c, d, f, e) { if (p(a) == "function") this.F = true; else if (a && a.handleEvent && p(a.handleEvent) == "function") this.F = false; else throw Error("Invalid listener argument"); this.m = a; this.J = b; this.src = c; this.type = d; this.capture = !! f; this.C = e; this.t = false; this.key = ++sa; this.i = false }; j.handleEvent = function (a) { if (this.F) return this.m.call(this.C || this.src, a); return this.m.handleEvent.call(this.m, a) }; function O(a, b) { this.G = b; this.d = []; if (a > this.G) throw Error("[goog.structs.SimplePool] Initial cannot be greater than max"); for (var c = 0; c < a; c++) this.d.push(this.j()) } u(O, L); O.prototype.c = null; O.prototype.v = null; function P(a) { if (a.d.length) return a.d.pop(); return a.j() } function Q(a, b) { a.d.length < a.G ? a.d.push(b) : a.p(b) } O.prototype.j = function () { return this.c ? this.c() : {} }; O.prototype.p = function (a) { if (this.v) this.v(a); else if (p(a.k) == "function") a.k(); else for (var b in a) delete a[b] }; O.prototype.f = function () { O.L.f.call(this); for (var a = this.d; a.length;) this.p(a.pop()); delete this.d }; var ta; var ua = (ta = "ScriptEngine" in n && n.ScriptEngine() == "JScript") ? n.ScriptEngineMajorVersion() + "." + n.ScriptEngineMinorVersion() + "." + n.ScriptEngineBuildVersion() : "0"; var R, S, T, U, va, wa, xa, ya, za, Aa, Ba; (function () { function a() { return { b: 0, h: 0 } } function b() { return [] } function c() { function l(q) { return g.call(l.src, l.key, q) } return l } function d() { return new ra } function f() { return new N } var e = ta && !(x(ua, "5.7") >= 0), g; wa = function (l) { g = l }; if (e) { R = function () { return P(h) }; S = function (l) { Q(h, l) }; T = function () { return P(i) }; U = function (l) { Q(i, l) }; va = function () { return P(k) }; xa = function () { Q(k, c()) }; ya = function () { return P(r) }; za = function (l) { Q(r, l) }; Aa = function () { return P(m) }; Ba = function (l) { Q(m, l) }; var h = new O(0, 600); h.c = a; var i = new O(0, 600); i.c = b; var k = new O(0, 600); k.c = c; var r = new O(0, 600); r.c = d; var m = new O(0, 600); m.c = f } else { R = a; S = o; T = b; U = o; va = c; xa = o; ya = d; za = o; Aa = f; Ba = o } })(); var V = {}, W = {}, X = {}, Ca = {}; function Da(a, b, c, d, f) { if (b) if (p(b) == "array") { for (var e = 0; e < b.length; e++) Da(a, b[e], c, d, f); return null } else { d = !! d; var g = W; b in g || (g[b] = R()); g = g[b]; if (!(d in g)) { g[d] = R(); g.b++ } g = g[d]; var h = s(a), i; g.h++; if (g[h]) { i = g[h]; for (e = 0; e < i.length; e++) { g = i[e]; if (g.m == c && g.C == f) { if (g.i) break; return i[e].key } } } else { i = g[h] = T(); g.b++ } e = va(); e.src = a; g = ya(); g.l(c, e, a, b, d, f); c = g.key; e.key = c; i.push(g); V[c] = g; X[h] || (X[h] = T()); X[h].push(g); if (a.addEventListener) { if (a == n || !a.P) a.addEventListener(b, e, d) } else a.attachEvent(Ea(b), e); return c } else throw Error("Invalid event type"); } function Fa(a, b, c, d) { if (!d.n) if (d.H) { for (var f = 0, e = 0; f < d.length; f++) if (d[f].i) { var g = d[f].J; g.src = null; xa(g); za(d[f]) } else { if (f != e) d[e] = d[f]; e++ } d.length = e; d.H = false; if (e == 0) { U(d); delete W[a][b][c]; W[a][b].b--; if (W[a][b].b == 0) { S(W[a][b]); delete W[a][b]; W[a].b-- } if (W[a].b == 0) { S(W[a]); delete W[a] } } } } function Ea(a) { if (a in Ca) return Ca[a]; return Ca[a] = "on" + a } function Ga(a, b, c, d, f) { var e = 1; b = s(b); if (a[b]) { a.h--; a = a[b]; if (a.n) a.n++; else a.n = 1; try { for (var g = a.length, h = 0; h < g; h++) { var i = a[h]; if (i && !i.i) e &= Ha(i, f) !== false } } finally { a.n--; Fa(c, d, b, a) } } return Boolean(e) } function Ha(a, b) { var c = a.handleEvent(b); if (a.t) { var d = a.key; if (V[d]) { var f = V[d]; if (!f.i) { var e = f.src, g = f.type, h = f.J, i = f.capture; if (e.removeEventListener) { if (e == n || !e.P) e.removeEventListener(g, h, i) } else e.detachEvent && e.detachEvent(Ea(g), h); e = s(e); h = W[g][i][e]; if (X[e]) { var k = X[e], r = w(k, f); r >= 0 && v.splice.call(k, r, 1); k.length == 0 && delete X[e] } f.i = true; h.H = true; Fa(g, i, e, h); delete V[d] } } } return c } wa(function (a, b) { if (!V[a]) return true; var c = V[a], d = c.type, f = W; if (!(d in f)) return true; f = f[d]; var e, g; if (E) { var h; if (!(h = b)) a: { h = "window.event".split("."); for (var i = n; e = h.shift();) if (i[e]) i = i[e]; else { h = null; break a } h = i } e = h; h = true in f; i = false in f; if (h) { if (e.keyCode < 0 || e.returnValue != undefined) return true; a: { var k = false; if (e.keyCode == 0) try { e.keyCode = -1; break a } catch (r) { k = true } if (k || e.returnValue == undefined) e.returnValue = true } } k = Aa(); k.l(e, this); e = true; try { if (h) { for (var m = T(), l = k.currentTarget; l; l = l.parentNode) m.push(l); g = f[true]; g.h = g.b; for (var q = m.length - 1; !k.r && q >= 0 && g.h; q--) { k.currentTarget = m[q]; e &= Ga(g, m[q], d, true, k) } if (i) { g = f[false]; g.h = g.b; for (q = 0; !k.r && q < m.length && g.h; q++) { k.currentTarget = m[q]; e &= Ga(g, m[q], d, false, k) } } } else e = Ha(c, k) } finally { if (m) { m.length = 0; U(m) } k.k(); Ba(k) } return e } d = new N(b, this); try { e = Ha(c, d) } finally { d.k() } return e }); var Y = "StopIteration" in n ? n.StopIteration : Error("StopIteration"); function Z() {} Z.prototype.next = function () { throw Y; }; Z.prototype.o = function () { return this }; function Ia(a) { if (a instanceof Z) return a; if (typeof a.o == "function") return a.o(false); if (aa(a)) { var b = 0, c = new Z; c.next = function () { for (;;) { if (b >= a.length) throw Y; if (b in a) return a[b++]; else b++ } }; return c } throw Error("Not implemented"); } function Ja(a, b, c) { if (aa(a)) try { da(a, b, c) } catch (d) { if (d !== Y) throw d; } else { a = Ia(a); try { for (;;) b.call(c, a.next(), undefined, a) } catch (f) { if (f !== Y) throw f; } } }; function $(a) { this.e = {}; this.a = []; var b = arguments.length; if (b > 1) { if (b % 2) throw Error("Uneven number of arguments"); for (var c = 0; c < b; c += 2) Ka(this, arguments[c], arguments[c + 1]) } else if (a) { var d; if (a instanceof $) { c = La(a); Ma(a); d = []; for (b = 0; b < a.a.length; b++) d.push(a.e[a.a[b]]); d = d } else { b = []; var f = 0; for (c in a) b[f++] = c; c = b; b = []; f = 0; for (d in a) b[f++] = a[d]; d = b } for (b = 0; b < c.length; b++) Ka(this, c[b], d[b]) } } $.prototype.b = 0; $.prototype.s = 0; function La(a) { Ma(a); return a.a.concat() } function Ma(a) { if (a.b != a.a.length) { for (var b = 0, c = 0; b < a.a.length;) { var d = a.a[b]; if (Object.prototype.hasOwnProperty.call(a.e, d)) a.a[c++] = d; b++ } a.a.length = c } if (a.b != a.a.length) { var f = {}; for (c = b = 0; b < a.a.length;) { d = a.a[b]; if (!Object.prototype.hasOwnProperty.call(f, d)) { a.a[c++] = d; f[d] = 1 } b++ } a.a.length = c } } function Na(a, b, c) { if (Object.prototype.hasOwnProperty.call(a.e, b)) return a.e[b]; return c } function Ka(a, b, c) { if (!Object.prototype.hasOwnProperty.call(a.e, b)) { a.b++; a.a.push(b); a.s++ } a.e[b] = c } $.prototype.o = function (a) { Ma(this); var b = 0, c = this.a, d = this.e, f = this.s, e = this, g = new Z; g.next = function () { for (;;) { if (f != e.s) throw Error("The map has changed since the iterator was created"); if (b >= c.length) throw Y; var h = c[b++]; return a ? h : d[h] } }; return g }; function Oa() { this.B = []; this.I = new $; this.Z = this.$ = this.aa = this.U = 0; this.K = new $; this.O = this.Y = 0; this.R = 1; this.Q = new O(0, 4E3); this.Q.j = function () { return new Pa }; this.V = new O(0, 50); this.V.j = function () { return new Qa }; var a = this; this.D = new O(0, 2E3); this.D.j = function () { return String(a.R++) }; this.D.p = function () {}; this.ba = 3 } function Qa() { this.M = this.W = this.u = 0 } Qa.prototype.toString = function () { var a = []; a.push(this.type, " ", this.u, " (", Math.round(this.W * 10) / 10, " ms)"); this.M && a.push(" [VarAlloc = ", this.M, "]"); return a.join("") }; function Pa() {} function Ra(a, b, c, d) { var f = []; c == -1 ? f.push(" ") : f.push(Sa(a.z - c)); f.push(" ", Ta(a.z - b)); if (a.q == 0) f.push(" Start "); else if (a.q == 1) { f.push(" Done "); f.push(Sa(a.ca - a.startTime), " ms ") } else f.push(" Comment "); f.push(d, a); a.X > 0 && f.push("[VarAlloc ", a.X, "] "); return f.join("") } Pa.prototype.toString = function () { return this.type == null ? this.N : "[" + this.type + "] " + this.N }; Oa.prototype.toString = function () { for (var a = [], b = -1, c = [], d = 0; d < this.B.length; d++) { var f = this.B[d]; f.q == 1 && c.pop(); a.push(" ", Ra(f, this.U, b, c.join(""))); b = f.z; a.push("\n"); f.q == 0 && c.push("| ") } if (this.I.b != 0) { var e = ca(); a.push(" Unstopped timers:\n"); Ja(this.I, function (g) { a.push(" ", g, " (", e - g.startTime, " ms, started at ", Ta(g.startTime), ")\n") }) } b = La(this.K); for (d = 0; d < b.length; d++) { c = Na(this.K, b[d]); c.u > 1 && a.push(" TOTAL ", c, "\n") } a.push("Total tracers created ", this.Y, "\n", "Total comments created ", this.O, "\n", "Overhead start: ", this.aa, " ms\n", "Overhead end: ", this.$, " ms\n", "Overhead comment: ", this.Z, " ms\n"); return a.join("") }; function Sa(a) { a = Math.round(a); var b = ""; if (a < 1E3) b = " "; if (a < 100) b = " "; if (a < 10) b = " "; return b + a } function Ta(a) { a = Math.round(a); return String(100 + a / 1E3 % 60).substring(1, 3) + "." + String(1E3 + a % 1E3).substring(1, 4) } new Oa; new O(0, 100); window.jsprettify = { prettify: qa, prettifyHtml: K, prettifyStr: J, prettifyTextInputs: function () { for (var a = na(document, "textarea", void 0, void 0), b = 0, c = a.length; b < c; ++b) { var d = a[b]; d.value = J(d.value) } a = na(document, "input", void 0, void 0); b = 0; for (c = a.length; b < c; ++b) { d = a[b]; if (d.type == "text") d.value = J(d.value) } a = oa(document.body, function (f) { return f.contentEditable == "true" }); b = 0; for (c = a.length; b < c; ++b) K(a[b]) }, run: function () { Da(window, "load", function () { qa() }) } }; for (var Ua in window.jsprettify) window[Ua] = function () { alert("WARNING: this page is calling jsprettify in a deprecated manner. The correct, current way to call jsprettify is through window.jsprettify.*, not window.*. Sorry for the inconvenience."); window.jsprettify[Ua]() }; window.prettifyTextInputs = function () { alert("You appear to be using an out-of-date version of the jsprettify bookmarklet. It may go away at some point. Meanwhile, go to http://code.google.com/p/jsprettify/wiki/MakingInputsPretty to get the updated bookmarklet.") }; })()