Last active
May 9, 2020 07:16
-
-
Save hteumeuleu/d8748197b1783889f9fa29dfa3eb3bc5 to your computer and use it in GitHub Desktop.
com.google.android.apk Files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <!-- | |
| Arguments for this template: | |
| 1. Body HTML String | |
| 2. Signature | |
| 3. Elided text HTML String | |
| 4. Hint text String | |
| 5. Hint text color String | |
| 6. padding-top of the body in px | |
| 7. padding-bottom of the body in px | |
| 8. direction of hint. "ltr" or "rtl". | |
| 9. Whether the elided text should be expanded (e.g. when Forwarding). "true" or "false" | |
| 10. Whether the signature should be initialized. "true" or "false" | |
| 11. Wallet discoverability keyword sequences - literal JSON array of arrays of words | |
| 12. Size of font in body | |
| 13. Whether plus/at mention is enabled. "true" or "false" | |
| 14. Whether sc is enabled. "true" or "false". | |
| 15. Script tag to include dictation script. | |
| 16. Link tag to include dictation stylesheet. | |
| 17. Whether dictation is enabled. "true" or "false". | |
| --> | |
| <html> | |
| <head> | |
| <script type="text/javascript"> | |
| var SHOW_ELIDED=%9$s; | |
| var INIT_SIGNATURE=%10$s; | |
| var WALLET_DISCOVER_KEYWORD_HASHES=%11$s; | |
| var MENTION_ENABLED=%13$s; | |
| var SC_ENABLED=%14$s; | |
| var DICTATION_ENABLED=%17$s; | |
| </script> | |
| %15$s | |
| <script type="text/javascript" src="file:///android_asset/draft_editor_gmail_compiled.js"></script> | |
| <script type="text/javascript" src="file:///android_asset/wa_discover.js"></script> | |
| <link rel="stylesheet" type="text/css" href="file:///android_asset/compose.css"> | |
| %16$s | |
| <style> | |
| body { | |
| margin: 0; | |
| padding-top: %6$.1fpx; | |
| padding-bottom: %7$.1fpx; | |
| font-size: %12$s; | |
| } | |
| div.body:empty { | |
| direction: %8$s; | |
| } | |
| div.body:empty:before { | |
| color: %5$s; | |
| content: attr(hint); | |
| } | |
| span.money[uline] { | |
| border-bottom: dotted #4CAF50; | |
| border-width: 2px; | |
| } | |
| </style> | |
| </head> | |
| <body><div dir="auto" class="body" contenteditable="true" spellcheck="true" hint="%4$s">%1$s</div> | |
| <div class="signature_holder" style="display: none;">%2$s</div> | |
| <div class="elided_text" style="display: none;">%3$s</div></body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function() { | |
| /* | |
| Copyright The Closure Library Authors. | |
| SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| var aa = "function" == typeof Object.defineProperties ? Object.defineProperty : function(a, b, c) { | |
| a != Array.prototype && a != Object.prototype && (a[b] = c.value) | |
| }, | |
| ba = function(a) { | |
| a = ["object" == typeof globalThis && globalThis, "object" == typeof window && window, "object" == typeof self && self, "object" == typeof global && global, a]; | |
| for (var b = 0; b < a.length; ++b) { | |
| var c = a[b]; | |
| if (c && c.Math == Math) return c | |
| } | |
| throw Error("Cannot find global object"); | |
| }, | |
| t = ba(this), | |
| ca = function(a, b) { | |
| if (b) { | |
| var c = t; | |
| a = a.split("."); | |
| for (var d = 0; d < a.length - 1; d++) { | |
| var e = | |
| a[d]; | |
| e in c || (c[e] = {}); | |
| c = c[e] | |
| } | |
| a = a[a.length - 1]; | |
| d = c[a]; | |
| b = b(d); | |
| b != d && null != b && aa(c, a, { | |
| configurable: !0, | |
| writable: !0, | |
| value: b | |
| }) | |
| } | |
| }; | |
| ca("String.prototype.endsWith", function(a) { | |
| return a ? a : function(b, c) { | |
| if (null == this) throw new TypeError("The 'this' value for String.prototype.endsWith must not be null or undefined"); | |
| if (b instanceof RegExp) throw new TypeError("First argument to String.prototype.endsWith must not be a regular expression"); | |
| var d = this + ""; | |
| b += ""; | |
| void 0 === c && (c = d.length); | |
| c = Math.max(0, Math.min(c | 0, d.length)); | |
| for (var e = b.length; 0 < e && 0 < c;) | |
| if (d[--c] != b[--e]) return !1; | |
| return 0 >= e | |
| } | |
| }); | |
| var da = function(a) { | |
| var b = 0; | |
| return function() { | |
| return b < a.length ? { | |
| done: !1, | |
| value: a[b++] | |
| } : { | |
| done: !0 | |
| } | |
| } | |
| }, | |
| ea = function() { | |
| ea = function() {}; | |
| t.Symbol || (t.Symbol = fa) | |
| }, | |
| ha = function(a, b) { | |
| this.a = a; | |
| aa(this, "description", { | |
| configurable: !0, | |
| writable: !0, | |
| value: b | |
| }) | |
| }; | |
| ha.prototype.toString = function() { | |
| return this.a | |
| }; | |
| var fa = function() { | |
| function a(c) { | |
| if (this instanceof a) throw new TypeError("Symbol is not a constructor"); | |
| return new ha("jscomp_symbol_" + (c || "") + "_" + b++, c) | |
| } | |
| var b = 0; | |
| return a | |
| }(), | |
| ja = function() { | |
| ea(); | |
| var a = t.Symbol.iterator; | |
| a || (a = t.Symbol.iterator = t.Symbol("Symbol.iterator")); | |
| "function" != typeof Array.prototype[a] && aa(Array.prototype, a, { | |
| configurable: !0, | |
| writable: !0, | |
| value: function() { | |
| return ia(da(this)) | |
| } | |
| }); | |
| ja = function() {} | |
| }, | |
| ia = function(a) { | |
| ja(); | |
| a = { | |
| next: a | |
| }; | |
| a[t.Symbol.iterator] = function() { | |
| return this | |
| }; | |
| return a | |
| }; | |
| ca("Array.from", function(a) { | |
| return a ? a : function(b, c, d) { | |
| c = null != c ? c : function(f) { | |
| return f | |
| }; | |
| var e = [], | |
| g = "undefined" != typeof Symbol && Symbol.iterator && b[Symbol.iterator]; | |
| if ("function" == typeof g) { | |
| b = g.call(b); | |
| for (var k = 0; !(g = b.next()).done;) e.push(c.call(d, g.value, k++)) | |
| } else | |
| for (g = b.length, k = 0; k < g; k++) e.push(c.call(d, b[k], k)); | |
| return e | |
| } | |
| }); | |
| var ka = function(a) { | |
| var b = "undefined" != typeof Symbol && Symbol.iterator && a[Symbol.iterator]; | |
| return b ? b.call(a) : { | |
| next: da(a) | |
| } | |
| }, | |
| u = function(a, b) { | |
| return Object.prototype.hasOwnProperty.call(a, b) | |
| }; | |
| ca("WeakMap", function(a) { | |
| function b() {} | |
| function c(h) { | |
| var l = typeof h; | |
| return "object" === l && null !== h || "function" === l | |
| } | |
| function d(h) { | |
| if (!u(h, g)) { | |
| var l = new b; | |
| aa(h, g, { | |
| value: l | |
| }) | |
| } | |
| } | |
| function e(h) { | |
| var l = Object[h]; | |
| l && (Object[h] = function(m) { | |
| if (m instanceof b) return m; | |
| d(m); | |
| return l(m) | |
| }) | |
| } | |
| if (function() { | |
| if (!a || !Object.seal) return !1; | |
| try { | |
| var h = Object.seal({}), | |
| l = Object.seal({}), | |
| m = new a([ | |
| [h, 2], | |
| [l, 3] | |
| ]); | |
| if (2 != m.get(h) || 3 != m.get(l)) return !1; | |
| m.delete(h); | |
| m.set(l, 4); | |
| return !m.has(h) && 4 == m.get(l) | |
| } catch (r) { | |
| return !1 | |
| } | |
| }()) return a; | |
| var g = "$jscomp_hidden_" + Math.random(); | |
| e("freeze"); | |
| e("preventExtensions"); | |
| e("seal"); | |
| var k = 0, | |
| f = function(h) { | |
| this.a = (k += Math.random() + 1).toString(); | |
| if (h) { | |
| h = ka(h); | |
| for (var l; !(l = h.next()).done;) l = l.value, this.set(l[0], l[1]) | |
| } | |
| }; | |
| f.prototype.set = function(h, l) { | |
| if (!c(h)) throw Error("Invalid WeakMap key"); | |
| d(h); | |
| if (!u(h, g)) throw Error("WeakMap key fail: " + h); | |
| h[g][this.a] = l; | |
| return this | |
| }; | |
| f.prototype.get = function(h) { | |
| return c(h) && u(h, g) ? h[g][this.a] : void 0 | |
| }; | |
| f.prototype.has = function(h) { | |
| return c(h) && u(h, g) && u(h[g], this.a) | |
| }; | |
| f.prototype.delete = function(h) { | |
| return c(h) && u(h, g) && u(h[g], this.a) ? delete h[g][this.a] : !1 | |
| }; | |
| return f | |
| }); | |
| ca("Map", function(a) { | |
| if (function() { | |
| if (!a || "function" != typeof a || !a.prototype.entries || "function" != typeof Object.seal) return !1; | |
| try { | |
| var f = Object.seal({ | |
| x: 4 | |
| }), | |
| h = new a(ka([ | |
| [f, "s"] | |
| ])); | |
| if ("s" != h.get(f) || 1 != h.size || h.get({ | |
| x: 4 | |
| }) || h.set({ | |
| x: 4 | |
| }, "t") != h || 2 != h.size) return !1; | |
| var l = h.entries(), | |
| m = l.next(); | |
| if (m.done || m.value[0] != f || "s" != m.value[1]) return !1; | |
| m = l.next(); | |
| return m.done || 4 != m.value[0].x || "t" != m.value[1] || !l.next().done ? !1 : !0 | |
| } catch (r) { | |
| return !1 | |
| } | |
| }()) return a; | |
| ja(); | |
| var b = new WeakMap, | |
| c = function(f) { | |
| this.b = {}; | |
| this.a = | |
| g(); | |
| this.size = 0; | |
| if (f) { | |
| f = ka(f); | |
| for (var h; !(h = f.next()).done;) h = h.value, this.set(h[0], h[1]) | |
| } | |
| }; | |
| c.prototype.set = function(f, h) { | |
| f = 0 === f ? 0 : f; | |
| var l = d(this, f); | |
| l.list || (l.list = this.b[l.id] = []); | |
| l.g ? l.g.value = h : (l.g = { | |
| next: this.a, | |
| h: this.a.h, | |
| head: this.a, | |
| key: f, | |
| value: h | |
| }, l.list.push(l.g), this.a.h.next = l.g, this.a.h = l.g, this.size++); | |
| return this | |
| }; | |
| c.prototype.delete = function(f) { | |
| f = d(this, f); | |
| return f.g && f.list ? (f.list.splice(f.index, 1), f.list.length || delete this.b[f.id], f.g.h.next = f.g.next, f.g.next.h = f.g.h, f.g.head = null, | |
| this.size--, !0) : !1 | |
| }; | |
| c.prototype.clear = function() { | |
| this.b = {}; | |
| this.a = this.a.h = g(); | |
| this.size = 0 | |
| }; | |
| c.prototype.has = function(f) { | |
| return !!d(this, f).g | |
| }; | |
| c.prototype.get = function(f) { | |
| return (f = d(this, f).g) && f.value | |
| }; | |
| c.prototype.entries = function() { | |
| return e(this, function(f) { | |
| return [f.key, f.value] | |
| }) | |
| }; | |
| c.prototype.keys = function() { | |
| return e(this, function(f) { | |
| return f.key | |
| }) | |
| }; | |
| c.prototype.values = function() { | |
| return e(this, function(f) { | |
| return f.value | |
| }) | |
| }; | |
| c.prototype.forEach = function(f, h) { | |
| for (var l = this.entries(), m; !(m = l.next()).done;) m = | |
| m.value, f.call(h, m[1], m[0], this) | |
| }; | |
| c.prototype[Symbol.iterator] = c.prototype.entries; | |
| var d = function(f, h) { | |
| var l = h && typeof h; | |
| "object" == l || "function" == l ? b.has(h) ? l = b.get(h) : (l = "" + ++k, b.set(h, l)) : l = "p_" + h; | |
| var m = f.b[l]; | |
| if (m && u(f.b, l)) | |
| for (f = 0; f < m.length; f++) { | |
| var r = m[f]; | |
| if (h !== h && r.key !== r.key || h === r.key) return { | |
| id: l, | |
| list: m, | |
| index: f, | |
| g: r | |
| } | |
| } | |
| return { | |
| id: l, | |
| list: m, | |
| index: -1, | |
| g: void 0 | |
| } | |
| }, | |
| e = function(f, h) { | |
| var l = f.a; | |
| return ia(function() { | |
| if (l) { | |
| for (; l.head != f.a;) l = l.h; | |
| for (; l.next != l.head;) return l = l.next, { | |
| done: !1, | |
| value: h(l) | |
| }; | |
| l = null | |
| } | |
| return { | |
| done: !0, | |
| value: void 0 | |
| } | |
| }) | |
| }, | |
| g = function() { | |
| var f = {}; | |
| return f.h = f.next = f.head = f | |
| }, | |
| k = 0; | |
| return c | |
| }); | |
| var w = this || self, | |
| ma = function(a) { | |
| var b = typeof a; | |
| if ("object" == b) | |
| if (a) { | |
| if (a instanceof Array) return "array"; | |
| if (a instanceof Object) return b; | |
| var c = Object.prototype.toString.call(a); | |
| if ("[object Window]" == c) return "object"; | |
| if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array"; | |
| if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function" | |
| } else return "null"; | |
| else if ("function" == b && "undefined" == typeof a.call) return "object"; | |
| return b | |
| }, | |
| na = function(a, b, c) { | |
| return a.call.apply(a.bind, arguments) | |
| }, | |
| oa = function(a, b, c) { | |
| if (!a) throw Error(); | |
| if (2 < arguments.length) { | |
| var d = Array.prototype.slice.call(arguments, 2); | |
| return function() { | |
| var e = Array.prototype.slice.call(arguments); | |
| Array.prototype.unshift.apply(e, d); | |
| return a.apply(b, e) | |
| } | |
| } | |
| return function() { | |
| return a.apply(b, arguments) | |
| } | |
| }, | |
| pa = function(a, b, c) { | |
| Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? | |
| pa = na : pa = oa; | |
| return pa.apply(null, arguments) | |
| }, | |
| x = function(a, b) { | |
| var c = Array.prototype.slice.call(arguments, 1); | |
| return function() { | |
| var d = c.slice(); | |
| d.push.apply(d, arguments); | |
| return a.apply(this, d) | |
| } | |
| }, | |
| qa = Date.now || function() { | |
| return +new Date | |
| }, | |
| y = function(a, b) { | |
| a = a.split("."); | |
| var c = w; | |
| a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]); | |
| for (var d; a.length && (d = a.shift());) a.length || void 0 === b ? c[d] && c[d] !== Object.prototype[d] ? c = c[d] : c = c[d] = {} : c[d] = b | |
| }, | |
| ra = function(a, b) { | |
| function c() {} | |
| c.prototype = b.prototype; | |
| a.prototype = new c; | |
| a.prototype.constructor = a | |
| }; | |
| var z = function(a) { | |
| if (Error.captureStackTrace) Error.captureStackTrace(this, z); | |
| else { | |
| var b = Error().stack; | |
| b && (this.stack = b) | |
| } | |
| a && (this.message = String(a)) | |
| }; | |
| ra(z, Error); | |
| z.prototype.name = "CustomError"; | |
| var A = function(a, b) { | |
| a = a.split("%s"); | |
| for (var c = "", d = a.length - 1, e = 0; e < d; e++) c += a[e] + (e < b.length ? b[e] : "%s"); | |
| z.call(this, c + a[d]) | |
| }; | |
| ra(A, z); | |
| A.prototype.name = "AssertionError"; | |
| var sa = function() { | |
| return null | |
| }; | |
| var ta = Array.prototype.indexOf ? function(a, b) { | |
| return Array.prototype.indexOf.call(a, b, void 0) | |
| } : function(a, b) { | |
| if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.indexOf(b, 0); | |
| for (var c = 0; c < a.length; c++) | |
| if (c in a && a[c] === b) return c; | |
| return -1 | |
| }, | |
| B = Array.prototype.forEach ? function(a, b, c) { | |
| Array.prototype.forEach.call(a, b, c) | |
| } : function(a, b, c) { | |
| for (var d = a.length, e = "string" === typeof a ? a.split("") : a, g = 0; g < d; g++) g in e && b.call(c, e[g], g, a) | |
| }, | |
| ua = Array.prototype.filter ? function(a, b) { | |
| return Array.prototype.filter.call(a, | |
| b, void 0) | |
| } : function(a, b) { | |
| for (var c = a.length, d = [], e = 0, g = "string" === typeof a ? a.split("") : a, k = 0; k < c; k++) | |
| if (k in g) { | |
| var f = g[k]; | |
| b.call(void 0, f, k, a) && (d[e++] = f) | |
| } | |
| return d | |
| }, | |
| va = Array.prototype.map ? function(a, b, c) { | |
| return Array.prototype.map.call(a, b, c) | |
| } : function(a, b, c) { | |
| for (var d = a.length, e = Array(d), g = "string" === typeof a ? a.split("") : a, k = 0; k < d; k++) k in g && (e[k] = b.call(c, g[k], k, a)); | |
| return e | |
| }, | |
| wa = function(a) { | |
| return Array.prototype.concat.apply([], arguments) | |
| }, | |
| xa = function(a) { | |
| var b = a.length; | |
| if (0 < b) { | |
| for (var c = Array(b), | |
| d = 0; d < b; d++) c[d] = a[d]; | |
| return c | |
| } | |
| return [] | |
| }, | |
| ya = function(a, b) { | |
| return wa.apply([], va(a, b, void 0)) | |
| }; | |
| var za = function(a) { | |
| var b = [], | |
| c = 0, | |
| d; | |
| for (d in a) b[c++] = d; | |
| return b | |
| }, | |
| C = function(a) { | |
| var b = {}, | |
| c; | |
| for (c in a) b[c] = a[c]; | |
| return b | |
| }; | |
| var D = function(a, b) { | |
| this.c = a === Aa && b || ""; | |
| this.f = Ba | |
| }; | |
| D.prototype.b = !0; | |
| D.prototype.a = function() { | |
| return this.c | |
| }; | |
| var Ba = {}, | |
| Aa = {}; | |
| var E = String.prototype.trim ? function(a) { | |
| return a.trim() | |
| } : function(a) { | |
| return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1] | |
| }, | |
| F = function(a, b) { | |
| return -1 != a.indexOf(b) | |
| }, | |
| Ca = function(a, b) { | |
| return a < b ? -1 : a > b ? 1 : 0 | |
| }; | |
| var G = function(a, b) { | |
| this.c = a === Da && b || ""; | |
| this.f = Ea | |
| }; | |
| G.prototype.b = !0; | |
| G.prototype.a = function() { | |
| return this.c.toString() | |
| }; | |
| var H = function(a) { | |
| return a instanceof G && a.constructor === G && a.f === Ea ? a.c : "type_error:SafeUrl" | |
| }, | |
| Fa = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i, | |
| Ga = function(a) { | |
| if (a instanceof G) return a; | |
| a = "object" == typeof a && a.b ? a.a() : String(a); | |
| Fa.test(a) || (a = "about:invalid#zClosurez"); | |
| return new G(Da, a) | |
| }, | |
| Ea = {}, | |
| Da = {}; | |
| var I = function() { | |
| this.c = ""; | |
| this.f = Ha | |
| }; | |
| I.prototype.b = !0; | |
| var Ha = {}; | |
| I.prototype.a = function() { | |
| return this.c | |
| }; | |
| var Ia = function(a) { | |
| var b = new I; | |
| b.c = a; | |
| return b | |
| }, | |
| La = Ia(""), | |
| Sa = function(a) { | |
| if (a instanceof G) return 'url("' + H(a).replace(/</g, "%3c").replace(/[\\"]/g, "\\$&") + '")'; | |
| if (a instanceof D) a = a instanceof D && a.constructor === D && a.f === Ba ? a.c : "type_error:Const"; | |
| else { | |
| a = String(a); | |
| var b = a.replace(Ma, "$1").replace(Ma, "$1").replace(Na, "url"); | |
| if (Oa.test(b)) { | |
| if (b = !Pa.test(a)) { | |
| for (var c = b = !0, d = 0; d < a.length; d++) { | |
| var e = a.charAt(d); | |
| "'" == e && c ? b = !b : '"' == e && b && (c = !c) | |
| } | |
| b = b && c && Qa(a) | |
| } | |
| a = b ? Ra(a) : "zClosurez" | |
| } else a = "zClosurez" | |
| } | |
| if (/[{;}]/.test(a)) throw new A("Value does not allow [{;}], got: %s.", [a]); | |
| return a | |
| }, | |
| Qa = function(a) { | |
| for (var b = !0, c = /^[-_a-zA-Z0-9]$/, d = 0; d < a.length; d++) { | |
| var e = a.charAt(d); | |
| if ("]" == e) { | |
| if (b) return !1; | |
| b = !0 | |
| } else if ("[" == e) { | |
| if (!b) return !1; | |
| b = !1 | |
| } else if (!b && !c.test(e)) return !1 | |
| } | |
| return b | |
| }, | |
| Oa = /^[-,."'%_!# a-zA-Z0-9\[\]]+$/, | |
| Na = /\b(url\([ \t\n]*)('[ -&(-\[\]-~]*'|"[ !#-\[\]-~]*"|[!#-&*-\[\]-~]*)([ \t\n]*\))/g, | |
| Ma = /\b(calc|cubic-bezier|fit-content|hsl|hsla|linear-gradient|matrix|minmax|repeat|rgb|rgba|(rotate|scale|translate)(X|Y|Z|3d)?)\([-+*/0-9a-z.%\[\], ]+\)/g, | |
| Pa = /\/\*/, | |
| Ra = function(a) { | |
| return a.replace(Na, | |
| function(b, c, d, e) { | |
| var g = ""; | |
| d = d.replace(/^(['"])(.*)\1$/, function(k, f, h) { | |
| g = f; | |
| return h | |
| }); | |
| b = Ga(d).a(); | |
| return c + g + b + g + e | |
| }) | |
| }; | |
| var J = function() { | |
| this.c = ""; | |
| this.f = Ta | |
| }; | |
| J.prototype.b = !0; | |
| var Ta = {}, | |
| Va = function(a, b) { | |
| if (F(a, "<")) throw Error("Selector does not allow '<', got: " + a); | |
| var c = a.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g, ""); | |
| if (!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=^$|]+$/.test(c)) throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: " + a); | |
| a: { | |
| for (var d = { | |
| "(": ")", | |
| "[": "]" | |
| }, e = [], g = 0; g < c.length; g++) { | |
| var k = c[g]; | |
| if (d[k]) e.push(d[k]); | |
| else { | |
| b: { | |
| var f = void 0; | |
| for (f in d) | |
| if (d[f] == k) { | |
| f = !0; | |
| break b | |
| } | |
| f = !1 | |
| } | |
| if (f && e.pop() != k) { | |
| c = !1; | |
| break a | |
| } | |
| } | |
| } | |
| c = 0 == e.length | |
| } | |
| if (!c) throw Error("() and [] in selector must be balanced, got: " + | |
| a); | |
| if (!(b instanceof I)) { | |
| c = ""; | |
| for (var h in b) { | |
| if (!/^[-_a-zA-Z0-9]+$/.test(h)) throw Error("Name allows only [-_a-zA-Z0-9], got: " + h); | |
| d = b[h]; | |
| null != d && (d = Array.isArray(d) ? va(d, Sa).join(" ") : Sa(d), c += h + ":" + d + ";") | |
| } | |
| b = c ? Ia(c) : La | |
| } | |
| a = a + "{" + (b instanceof I && b.constructor === I && b.f === Ha ? b.c : "type_error:SafeStyle").replace(/</g, "\\3C ") + "}"; | |
| return Ua(a) | |
| }, | |
| Xa = function(a) { | |
| var b = "", | |
| c = function(d) { | |
| Array.isArray(d) ? B(d, c) : b += Wa(d) | |
| }; | |
| B(arguments, c); | |
| return Ua(b) | |
| }; | |
| J.prototype.a = function() { | |
| return this.c | |
| }; | |
| var Wa = function(a) { | |
| return a instanceof J && a.constructor === J && a.f === Ta ? a.c : "type_error:SafeStyleSheet" | |
| }, | |
| Ua = function(a) { | |
| var b = new J; | |
| b.c = a; | |
| return b | |
| }, | |
| Ya = Ua(""); | |
| var K; | |
| a: { | |
| var Za = w.navigator; | |
| if (Za) { | |
| var $a = Za.userAgent; | |
| if ($a) { | |
| K = $a; | |
| break a | |
| } | |
| } | |
| K = "" | |
| }; | |
| var L = function() { | |
| this.c = ""; | |
| this.f = ab | |
| }; | |
| L.prototype.b = !0; | |
| L.prototype.a = function() { | |
| return this.c.toString() | |
| }; | |
| var bb = function(a) { | |
| return a instanceof L && a.constructor === L && a.f === ab ? a.c : "type_error:SafeHtml" | |
| }, | |
| ab = {}, | |
| M = function(a) { | |
| var b = new L; | |
| b.c = a; | |
| return b | |
| }; | |
| M("<!DOCTYPE html>"); | |
| var cb = M(""); | |
| M("<br>"); | |
| var db = function(a) { | |
| var b = !1, | |
| c; | |
| return function() { | |
| b || (c = a(), b = !0); | |
| return c | |
| } | |
| }(function() { | |
| var a = document.createElement("div"), | |
| b = document.createElement("div"); | |
| b.appendChild(document.createElement("div")); | |
| a.appendChild(b); | |
| b = a.firstChild.firstChild; | |
| a.innerHTML = bb(cb); | |
| return !b.parentElement | |
| }), | |
| N = function(a, b) { | |
| if (db()) | |
| for (; a.lastChild;) a.removeChild(a.lastChild); | |
| a.innerHTML = bb(b) | |
| }; | |
| var fb = function(a, b) { | |
| var c = eb; | |
| return Object.prototype.hasOwnProperty.call(c, a) ? c[a] : c[a] = b(a) | |
| }; | |
| var gb = F(K, "Opera"), | |
| O = F(K, "Trident") || F(K, "MSIE"), | |
| hb = F(K, "Edge"), | |
| ib = F(K, "Gecko") && !(F(K.toLowerCase(), "webkit") && !F(K, "Edge")) && !(F(K, "Trident") || F(K, "MSIE")) && !F(K, "Edge"), | |
| jb = F(K.toLowerCase(), "webkit") && !F(K, "Edge"), | |
| kb = function() { | |
| var a = w.document; | |
| return a ? a.documentMode : void 0 | |
| }, | |
| lb; | |
| a: { | |
| var mb = "", | |
| nb = function() { | |
| var a = K; | |
| if (ib) return /rv:([^\);]+)(\)|;)/.exec(a); | |
| if (hb) return /Edge\/([\d\.]+)/.exec(a); | |
| if (O) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a); | |
| if (jb) return /WebKit\/(\S+)/.exec(a); | |
| if (gb) return /(?:Version)[ \/]?(\S+)/.exec(a) | |
| }();nb && (mb = nb ? nb[1] : ""); | |
| if (O) { | |
| var ob = kb(); | |
| if (null != ob && ob > parseFloat(mb)) { | |
| lb = String(ob); | |
| break a | |
| } | |
| } | |
| lb = mb | |
| } | |
| var pb = lb, | |
| eb = {}, | |
| qb = function(a) { | |
| return fb(a, function() { | |
| for (var b = 0, c = E(String(pb)).split("."), d = E(String(a)).split("."), e = Math.max(c.length, d.length), g = 0; 0 == b && g < e; g++) { | |
| var k = c[g] || "", | |
| f = d[g] || ""; | |
| do { | |
| k = /(\d*)(\D*)(.*)/.exec(k) || ["", "", "", ""]; | |
| f = /(\d*)(\D*)(.*)/.exec(f) || ["", "", "", ""]; | |
| if (0 == k[0].length && 0 == f[0].length) break; | |
| b = Ca(0 == k[1].length ? 0 : parseInt(k[1], 10), 0 == f[1].length ? 0 : parseInt(f[1], 10)) || Ca(0 == k[2].length, 0 == f[2].length) || Ca(k[2], f[2]); | |
| k = k[3]; | |
| f = f[3] | |
| } while (0 == b) | |
| } | |
| return 0 <= b | |
| }) | |
| }, | |
| rb; | |
| if (w.document && O) { | |
| var sb = kb(); | |
| rb = sb ? sb : parseInt(pb, 10) || void 0 | |
| } else rb = void 0; | |
| var tb = rb; | |
| var ub = function() { | |
| var a = document; | |
| var b = "SPAN"; | |
| "application/xhtml+xml" === a.contentType && (b = b.toLowerCase()); | |
| return a.createElement(b) | |
| }, | |
| vb = function(a) { | |
| return a && a.parentNode ? a.parentNode.removeChild(a) : null | |
| }; | |
| var wb = { | |
| "* ARIA-CHECKED": !0, | |
| "* ARIA-COLCOUNT": !0, | |
| "* ARIA-COLINDEX": !0, | |
| "* ARIA-DESCRIBEDBY": !0, | |
| "* ARIA-DISABLED": !0, | |
| "* ARIA-GOOG-EDITABLE": !0, | |
| "* ARIA-LABEL": !0, | |
| "* ARIA-LABELLEDBY": !0, | |
| "* ARIA-MULTILINE": !0, | |
| "* ARIA-MULTISELECTABLE": !0, | |
| "* ARIA-ORIENTATION": !0, | |
| "* ARIA-PLACEHOLDER": !0, | |
| "* ARIA-READONLY": !0, | |
| "* ARIA-REQUIRED": !0, | |
| "* ARIA-ROLEDESCRIPTION": !0, | |
| "* ARIA-ROWCOUNT": !0, | |
| "* ARIA-ROWINDEX": !0, | |
| "* ARIA-SELECTED": !0, | |
| "* ABBR": !0, | |
| "* ACCEPT": !0, | |
| "* ACCESSKEY": !0, | |
| "* ALIGN": !0, | |
| "* ALT": !0, | |
| "* AUTOCOMPLETE": !0, | |
| "* AXIS": !0, | |
| "* BGCOLOR": !0, | |
| "* BORDER": !0, | |
| "* CELLPADDING": !0, | |
| "* CELLSPACING": !0, | |
| "* CHAROFF": !0, | |
| "* CHAR": !0, | |
| "* CHECKED": !0, | |
| "* CLEAR": !0, | |
| "* COLOR": !0, | |
| "* COLSPAN": !0, | |
| "* COLS": !0, | |
| "* COMPACT": !0, | |
| "* COORDS": !0, | |
| "* DATETIME": !0, | |
| "* DIR": !0, | |
| "* DISABLED": !0, | |
| "* ENCTYPE": !0, | |
| "* FACE": !0, | |
| "* FRAME": !0, | |
| "* HEIGHT": !0, | |
| "* HREFLANG": !0, | |
| "* HSPACE": !0, | |
| "* ISMAP": !0, | |
| "* LABEL": !0, | |
| "* LANG": !0, | |
| "* MAX": !0, | |
| "* MAXLENGTH": !0, | |
| "* METHOD": !0, | |
| "* MULTIPLE": !0, | |
| "* NOHREF": !0, | |
| "* NOSHADE": !0, | |
| "* NOWRAP": !0, | |
| "* OPEN": !0, | |
| "* READONLY": !0, | |
| "* REQUIRED": !0, | |
| "* REL": !0, | |
| "* REV": !0, | |
| "* ROLE": !0, | |
| "* ROWSPAN": !0, | |
| "* ROWS": !0, | |
| "* RULES": !0, | |
| "* SCOPE": !0, | |
| "* SELECTED": !0, | |
| "* SHAPE": !0, | |
| "* SIZE": !0, | |
| "* SPAN": !0, | |
| "* START": !0, | |
| "* SUMMARY": !0, | |
| "* TABINDEX": !0, | |
| "* TITLE": !0, | |
| "* TYPE": !0, | |
| "* VALIGN": !0, | |
| "* VALUE": !0, | |
| "* VSPACE": !0, | |
| "* WIDTH": !0 | |
| }, | |
| xb = { | |
| "* USEMAP": !0, | |
| "* ACTION": !0, | |
| "* CITE": !0, | |
| "* HREF": !0, | |
| "* LONGDESC": !0, | |
| "* SRC": !0, | |
| "LINK HREF": !0, | |
| "* FOR": !0, | |
| "* HEADERS": !0, | |
| "* NAME": !0, | |
| "A TARGET": !0, | |
| "* CLASS": !0, | |
| "* ID": !0, | |
| "* STYLE": !0 | |
| }; | |
| var P = {}; | |
| function yb(a) { | |
| if (O && !qb(9)) return [0, 0, 0, 0]; | |
| var b = P.hasOwnProperty(a) ? P[a] : null; | |
| if (b) return b; | |
| 65536 < Object.keys(P).length && (P = {}); | |
| var c = [0, 0, 0, 0]; | |
| b = zb(a, /\\[0-9A-Fa-f]{6}\s?/g); | |
| b = zb(b, /\\[0-9A-Fa-f]{1,5}\s/g); | |
| b = zb(b, /\\./g); | |
| b = b.replace(/:not\(([^\)]*)\)/g, " $1 "); | |
| b = b.replace(/{[^]*/gm, ""); | |
| b = Q(b, c, /(\[[^\]]+\])/g, 2); | |
| b = Q(b, c, /(#[^\#\s\+>~\.\[:]+)/g, 1); | |
| b = Q(b, c, /(\.[^\s\+>~\.\[:]+)/g, 2); | |
| b = Q(b, c, /(::[^\s\+>~\.\[:]+|:first-line|:first-letter|:before|:after)/gi, 3); | |
| b = Q(b, c, /(:[\w-]+\([^\)]*\))/gi, 2); | |
| b = Q(b, c, /(:[^\s\+>~\.\[:]+)/g, 2); | |
| b = b.replace(/[\*\s\+>~]/g, " "); | |
| b = b.replace(/[#\.]/g, " "); | |
| Q(b, c, /([^\s\+>~\.\[:]+)/g, 3); | |
| b = c; | |
| return P[a] = b | |
| } | |
| function Q(a, b, c, d) { | |
| return a.replace(c, function(e) { | |
| b[d] += 1; | |
| return Array(e.length + 1).join(" ") | |
| }) | |
| } | |
| function zb(a, b) { | |
| return a.replace(b, function(c) { | |
| return Array(c.length + 1).join("A") | |
| }) | |
| }; | |
| var Ab = { | |
| rgb: !0, | |
| rgba: !0, | |
| alpha: !0, | |
| rect: !0, | |
| image: !0, | |
| "linear-gradient": !0, | |
| "radial-gradient": !0, | |
| "repeating-linear-gradient": !0, | |
| "repeating-radial-gradient": !0, | |
| "cubic-bezier": !0, | |
| matrix: !0, | |
| perspective: !0, | |
| rotate: !0, | |
| rotate3d: !0, | |
| rotatex: !0, | |
| rotatey: !0, | |
| steps: !0, | |
| rotatez: !0, | |
| scale: !0, | |
| scale3d: !0, | |
| scalex: !0, | |
| scaley: !0, | |
| scalez: !0, | |
| skew: !0, | |
| skewx: !0, | |
| skewy: !0, | |
| translate: !0, | |
| translate3d: !0, | |
| translatex: !0, | |
| translatey: !0, | |
| translatez: !0 | |
| }, | |
| Bb = /[\n\f\r"'()*<>]/g, | |
| Cb = { | |
| "\n": "%0a", | |
| "\f": "%0c", | |
| "\r": "%0d", | |
| '"': "%22", | |
| "'": "%27", | |
| "(": "%28", | |
| ")": "%29", | |
| "*": "%2a", | |
| "<": "%3c", | |
| ">": "%3e" | |
| }; | |
| function Db(a) { | |
| return Cb[a] | |
| } | |
| var Eb = function(a, b, c) { | |
| b = E(b); | |
| if ("" == b) return null; | |
| var d = String(b.substr(0, 4)).toLowerCase(); | |
| if (0 == ("url(" < d ? -1 : "url(" == d ? 0 : 1)) { | |
| if (!b.endsWith(")") || 1 < (b ? b.split("(").length - 1 : 0) || 1 < (b ? b.split(")").length - 1 : 0) || !c) a = null; | |
| else { | |
| a: for (b = b.substring(4, b.length - 1), d = 0; 2 > d; d++) { | |
| var e = "\"'".charAt(d); | |
| if (b.charAt(0) == e && b.charAt(b.length - 1) == e) { | |
| b = b.substring(1, b.length - 1); | |
| break a | |
| } | |
| } | |
| a = c ? (a = c(b, a)) && "about:invalid#zClosurez" != H(a) ? 'url("' + H(a).replace(Bb, Db) + '")' : null : null | |
| } | |
| return a | |
| } | |
| if (0 < b.indexOf("(")) { | |
| if (/"|'/.test(b)) return null; | |
| for (a = /([\-\w]+)\(/g; c = a.exec(b);) | |
| if (!(c[1].toLowerCase() in Ab)) return null | |
| } | |
| return b | |
| }; | |
| function R(a, b) { | |
| a = w[a]; | |
| return a && a.prototype ? (b = Object.getOwnPropertyDescriptor(a.prototype, b)) && b.get || null : null | |
| } | |
| function S(a, b) { | |
| return (a = w[a]) && a.prototype && a.prototype[b] || null | |
| } | |
| var Fb = R("Element", "attributes") || R("Node", "attributes"), | |
| Gb = S("Element", "hasAttribute"), | |
| Hb = S("Element", "getAttribute"), | |
| Ib = S("Element", "setAttribute"), | |
| Jb = S("Element", "removeAttribute"), | |
| Kb = S("Element", "getElementsByTagName"), | |
| Lb = S("Element", "matches") || S("Element", "msMatchesSelector"), | |
| Mb = R("Node", "nodeName"), | |
| Nb = R("Node", "nodeType"), | |
| Ob = R("Node", "parentNode"), | |
| Pb = R("HTMLElement", "style") || R("Element", "style"), | |
| Qb = R("HTMLStyleElement", "sheet"), | |
| Rb = S("CSSStyleDeclaration", "getPropertyValue"), | |
| Sb = S("CSSStyleDeclaration", | |
| "setProperty"); | |
| function T(a, b, c, d) { | |
| if (a) return a.apply(b); | |
| a = b[c]; | |
| if (!d(a)) throw Error("Clobbering detected"); | |
| return a | |
| } | |
| function U(a, b, c, d) { | |
| if (a) return a.apply(b, d); | |
| if (O && 10 > document.documentMode) { | |
| if (!b[c].call) throw Error("IE Clobbering detected"); | |
| } else if ("function" != typeof b[c]) throw Error("Clobbering detected"); | |
| return b[c].apply(b, d) | |
| } | |
| function Tb(a) { | |
| return T(Fb, a, "attributes", function(b) { | |
| return b instanceof NamedNodeMap | |
| }) | |
| } | |
| function Ub(a, b, c) { | |
| try { | |
| U(Ib, a, "setAttribute", [b, c]) | |
| } catch (d) { | |
| if (-1 == d.message.indexOf("A security problem occurred")) throw d; | |
| } | |
| } | |
| function Vb(a) { | |
| return T(Pb, a, "style", function(b) { | |
| return b instanceof CSSStyleDeclaration | |
| }) | |
| } | |
| function Wb(a) { | |
| return T(Qb, a, "sheet", function(b) { | |
| return b instanceof CSSStyleSheet | |
| }) | |
| } | |
| function V(a) { | |
| return T(Mb, a, "nodeName", function(b) { | |
| return "string" == typeof b | |
| }) | |
| } | |
| function Xb(a) { | |
| return T(Nb, a, "nodeType", function(b) { | |
| return "number" == typeof b | |
| }) | |
| } | |
| function W(a) { | |
| return T(Ob, a, "parentNode", function(b) { | |
| return !(b && "string" == typeof b.name && b.name && "parentnode" == b.name.toLowerCase()) | |
| }) | |
| } | |
| function Yb(a, b) { | |
| return U(Rb, a, a.getPropertyValue ? "getPropertyValue" : "getAttribute", [b]) || "" | |
| } | |
| function Zb(a, b, c) { | |
| U(Sb, a, a.setProperty ? "setProperty" : "setAttribute", [b, c]) | |
| }; | |
| var $b = O && 10 > document.documentMode ? null : /\s*([^\s'",]+[^'",]*(('([^'\r\n\f\\]|\\[^])*')|("([^"\r\n\f\\]|\\[^])*")|[^'",])*)/g, | |
| ac = { | |
| "-webkit-border-horizontal-spacing": !0, | |
| "-webkit-border-vertical-spacing": !0 | |
| }, | |
| dc = function(a, b, c) { | |
| var d = []; | |
| a = bc(xa(a.cssRules)); | |
| B(a, function(e) { | |
| if (b && !/[a-zA-Z][\w-:\.]*/.test(b)) throw Error("Invalid container id"); | |
| if (!(b && O && 10 == document.documentMode && /\\['"]/.test(e.selectorText))) { | |
| var g = b ? e.selectorText.replace($b, "#" + b + " $1") : e.selectorText; | |
| d.push(Va(g, cc(e.style, c))) | |
| } | |
| }); | |
| return Xa(d) | |
| }, | |
| bc = function(a) { | |
| return ua(a, function(b) { | |
| return b instanceof CSSStyleRule || b.type == CSSRule.STYLE_RULE | |
| }) | |
| }, | |
| fc = function(a, b, c) { | |
| a = ec("<style>" + a + "</style>"); | |
| return null == a || null == a.sheet ? Ya : dc(a.sheet, void 0 != b ? b : null, c) | |
| }, | |
| ec = function(a) { | |
| if (O && !qb(10) || "function" != typeof w.DOMParser) return null; | |
| a = M("<html><head></head><body>" + a + "</body></html>"); | |
| return (new DOMParser).parseFromString(bb(a), "text/html").body.children[0] | |
| }, | |
| cc = function(a, b) { | |
| if (!a) return La; | |
| var c = document.createElement("div").style, | |
| d = gc(a); | |
| B(d, function(e) { | |
| var g = jb && e in ac ? e : e.replace(/^-(?:apple|css|epub|khtml|moz|mso?|o|rim|wap|webkit|xv)-(?=[a-z])/i, ""); | |
| 0 != g.lastIndexOf("--", 0) && 0 != g.lastIndexOf("var", 0) && (e = Yb(a, e), e = Eb(g, e, b), null != e && Zb(c, g, e)) | |
| }); | |
| return Ia(c.cssText || "") | |
| }, | |
| ic = function(a) { | |
| var b = Array.from(U(Kb, a, "getElementsByTagName", ["STYLE"])), | |
| c = ya(b, function(e) { | |
| return xa(Wb(e).cssRules) | |
| }); | |
| c = bc(c); | |
| c.sort(function(e, g) { | |
| e = yb(e.selectorText); | |
| a: { | |
| g = yb(g.selectorText); | |
| for (var k = Math.min(e.length, g.length), f = 0; f < k; f++) { | |
| var h = | |
| e[f]; | |
| var l = g[f]; | |
| h = h > l ? 1 : h < l ? -1 : 0; | |
| if (0 != h) { | |
| e = h; | |
| break a | |
| } | |
| } | |
| e = e.length;g = g.length;e = e > g ? 1 : e < g ? -1 : 0 | |
| } | |
| return -e | |
| }); | |
| a = document.createTreeWalker(a, NodeFilter.SHOW_ELEMENT, null, !1); | |
| for (var d; d = a.nextNode();) B(c, function(e) { | |
| U(Lb, d, d.matches ? "matches" : "msMatchesSelector", [e.selectorText]) && e.style && hc(d, e.style) | |
| }); | |
| B(b, vb) | |
| }, | |
| hc = function(a, b) { | |
| var c = gc(a.style), | |
| d = gc(b); | |
| B(d, function(e) { | |
| if (!(0 <= c.indexOf(e))) { | |
| var g = Yb(b, e); | |
| Zb(a.style, e, g) | |
| } | |
| }) | |
| }, | |
| gc = function(a) { | |
| var b = ma(a); | |
| "array" == b || "object" == b && "number" == typeof a.length ? | |
| a = xa(a) : (a = za(a), b = ta(a, "cssText"), 0 <= b && Array.prototype.splice.call(a, b, 1)); | |
| return a | |
| }; | |
| var jc = "undefined" != typeof WeakMap && -1 != WeakMap.toString().indexOf("[native code]"), | |
| kc = 0, | |
| lc = function() { | |
| this.c = []; | |
| this.b = []; | |
| this.a = "data-elementweakmap-index-" + kc++ | |
| }; | |
| lc.prototype.set = function(a, b) { | |
| if (U(Gb, a, "hasAttribute", [this.a])) { | |
| var c = parseInt(U(Hb, a, "getAttribute", [this.a]) || null, 10); | |
| this.b[c] = b | |
| } else c = this.b.push(b) - 1, Ub(a, this.a, c.toString()), this.c.push(a); | |
| return this | |
| }; | |
| lc.prototype.get = function(a) { | |
| if (U(Gb, a, "hasAttribute", [this.a])) return a = parseInt(U(Hb, a, "getAttribute", [this.a]) || null, 10), this.b[a] | |
| }; | |
| lc.prototype.clear = function() { | |
| this.c.forEach(function(a) { | |
| U(Jb, a, "removeAttribute", [this.a]) | |
| }, this); | |
| this.c = []; | |
| this.b = [] | |
| }; | |
| var mc; | |
| (mc = !O) || (mc = 10 <= Number(tb)); | |
| var nc = mc, | |
| oc = !O || null == document.documentMode, | |
| pc = function() {}; | |
| var qc = { | |
| APPLET: !0, | |
| AUDIO: !0, | |
| BASE: !0, | |
| BGSOUND: !0, | |
| EMBED: !0, | |
| FORM: !0, | |
| IFRAME: !0, | |
| ISINDEX: !0, | |
| KEYGEN: !0, | |
| LAYER: !0, | |
| LINK: !0, | |
| META: !0, | |
| OBJECT: !0, | |
| SCRIPT: !0, | |
| SVG: !0, | |
| STYLE: !0, | |
| TEMPLATE: !0, | |
| VIDEO: !0 | |
| }; | |
| var rc = { | |
| A: !0, | |
| ABBR: !0, | |
| ACRONYM: !0, | |
| ADDRESS: !0, | |
| AREA: !0, | |
| ARTICLE: !0, | |
| ASIDE: !0, | |
| B: !0, | |
| BDI: !0, | |
| BDO: !0, | |
| BIG: !0, | |
| BLOCKQUOTE: !0, | |
| BR: !0, | |
| BUTTON: !0, | |
| CAPTION: !0, | |
| CENTER: !0, | |
| CITE: !0, | |
| CODE: !0, | |
| COL: !0, | |
| COLGROUP: !0, | |
| DATA: !0, | |
| DATALIST: !0, | |
| DD: !0, | |
| DEL: !0, | |
| DETAILS: !0, | |
| DFN: !0, | |
| DIALOG: !0, | |
| DIR: !0, | |
| DIV: !0, | |
| DL: !0, | |
| DT: !0, | |
| EM: !0, | |
| FIELDSET: !0, | |
| FIGCAPTION: !0, | |
| FIGURE: !0, | |
| FONT: !0, | |
| FOOTER: !0, | |
| FORM: !0, | |
| H1: !0, | |
| H2: !0, | |
| H3: !0, | |
| H4: !0, | |
| H5: !0, | |
| H6: !0, | |
| HEADER: !0, | |
| HGROUP: !0, | |
| HR: !0, | |
| I: !0, | |
| IMG: !0, | |
| INPUT: !0, | |
| INS: !0, | |
| KBD: !0, | |
| LABEL: !0, | |
| LEGEND: !0, | |
| LI: !0, | |
| MAIN: !0, | |
| MAP: !0, | |
| MARK: !0, | |
| MENU: !0, | |
| METER: !0, | |
| NAV: !0, | |
| NOSCRIPT: !0, | |
| OL: !0, | |
| OPTGROUP: !0, | |
| OPTION: !0, | |
| OUTPUT: !0, | |
| P: !0, | |
| PRE: !0, | |
| PROGRESS: !0, | |
| Q: !0, | |
| S: !0, | |
| SAMP: !0, | |
| SECTION: !0, | |
| SELECT: !0, | |
| SMALL: !0, | |
| SOURCE: !0, | |
| SPAN: !0, | |
| STRIKE: !0, | |
| STRONG: !0, | |
| STYLE: !0, | |
| SUB: !0, | |
| SUMMARY: !0, | |
| SUP: !0, | |
| TABLE: !0, | |
| TBODY: !0, | |
| TD: !0, | |
| TEXTAREA: !0, | |
| TFOOT: !0, | |
| TH: !0, | |
| THEAD: !0, | |
| TIME: !0, | |
| TR: !0, | |
| TT: !0, | |
| U: !0, | |
| UL: !0, | |
| VAR: !0, | |
| WBR: !0 | |
| }; | |
| var sc = { | |
| "ANNOTATION-XML": !0, | |
| "COLOR-PROFILE": !0, | |
| "FONT-FACE": !0, | |
| "FONT-FACE-SRC": !0, | |
| "FONT-FACE-URI": !0, | |
| "FONT-FACE-FORMAT": !0, | |
| "FONT-FACE-NAME": !0, | |
| "MISSING-GLYPH": !0 | |
| }, | |
| wc = function(a) { | |
| a = a || new tc; | |
| uc(a); | |
| this.a = C(a.a); | |
| this.i = C(a.w); | |
| this.c = C(a.C); | |
| this.m = a.u; | |
| B(a.l, function(b) { | |
| if (0 != b.lastIndexOf("data-", 0)) throw new A('Only "data-" attributes allowed, got: %s.', [b]); | |
| if (0 == b.lastIndexOf("data-sanitizer-", 0)) throw new A('Attributes with "%s" prefix are not allowed, got: %s.', ["data-sanitizer-", b]); | |
| this.a["* " + | |
| b.toUpperCase()] = vc | |
| }, this); | |
| B(a.j, function(b) { | |
| b = b.toUpperCase(); | |
| if (!F(b, "-") || sc[b]) throw new A("Only valid custom element tag names allowed, got: %s.", [b]); | |
| this.c[b] = !0 | |
| }, this); | |
| this.l = a.c; | |
| this.f = a.v; | |
| this.b = null; | |
| this.j = a.m | |
| }; | |
| ra(wc, pc); | |
| var xc = function(a) { | |
| return function(b, c) { | |
| return (b = a(E(b), c)) && "about:invalid#zClosurez" != H(b) ? H(b) : null | |
| } | |
| }, | |
| tc = function() { | |
| this.a = {}; | |
| B([wb, xb], function(a) { | |
| B(za(a), function(b) { | |
| this.a[b] = vc | |
| }, this) | |
| }, this); | |
| this.b = {}; | |
| this.l = []; | |
| this.j = []; | |
| this.w = C(qc); | |
| this.C = C(rc); | |
| this.u = !1; | |
| this.G = Ga; | |
| this.F = this.i = this.D = this.c = sa; | |
| this.v = null; | |
| this.f = this.m = !1 | |
| }, | |
| yc = function(a, b) { | |
| return function(c, d, e, g) { | |
| c = a(c, d, e, g); | |
| return null == c ? null : b(c, d, e, g) | |
| } | |
| }, | |
| X = function(a, b, c, d) { | |
| a[c] && !b[c] && (a[c] = yc(a[c], d)) | |
| }, | |
| zc = function() { | |
| var a = new tc; | |
| return new wc(a) | |
| }, | |
| uc = function(a) { | |
| if (a.f) throw Error("HtmlSanitizer.Builder.build() can only be used once."); | |
| X(a.a, a.b, "* USEMAP", Ac); | |
| var b = xc(a.G); | |
| B(["* ACTION", "* CITE", "* HREF"], function(d) { | |
| X(this.a, this.b, d, b) | |
| }, a); | |
| var c = xc(a.c); | |
| B(["* LONGDESC", "* SRC", "LINK HREF"], function(d) { | |
| X(this.a, this.b, d, c) | |
| }, a); | |
| B(["* FOR", "* HEADERS", "* NAME"], function(d) { | |
| X(this.a, this.b, d, x(Bc, this.D)) | |
| }, a); | |
| X(a.a, a.b, "A TARGET", x(Cc, ["_blank", "_self"])); | |
| X(a.a, a.b, "* CLASS", x(Dc, a.i)); | |
| X(a.a, a.b, "* ID", x(Ec, a.i)); | |
| X(a.a, a.b, | |
| "* STYLE", x(a.F, c)); | |
| a.f = !0 | |
| }, | |
| Fc = function(a, b) { | |
| a || (a = "*"); | |
| return (a + " " + b).toUpperCase() | |
| }, | |
| vc = function(a) { | |
| return E(a) | |
| }, | |
| Cc = function(a, b) { | |
| b = E(b); | |
| return 0 <= ta(a, b.toLowerCase()) ? b : null | |
| }, | |
| Ac = function(a) { | |
| return (a = E(a)) && "#" == a.charAt(0) ? a : null | |
| }, | |
| Bc = function(a, b, c) { | |
| return a(E(b), c) | |
| }, | |
| Dc = function(a, b, c) { | |
| b = b.split(/(?:\s+)/); | |
| for (var d = [], e = 0; e < b.length; e++) { | |
| var g = a(b[e], c); | |
| g && d.push(g) | |
| } | |
| return 0 == d.length ? null : d.join(" ") | |
| }, | |
| Ec = function(a, b, c) { | |
| return a(E(b), c) | |
| }, | |
| Hc = function(a, b) { | |
| var c = !("STYLE" in a.i) && "STYLE" in a.c; | |
| c = "*" == a.f && c ? "sanitizer-" + (Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ qa()).toString(36)) : a.f; | |
| a.b = c; | |
| if (nc) { | |
| c = b; | |
| if (nc) { | |
| b = ub(); | |
| a.b && "*" == a.f && (b.id = a.b); | |
| a.j && (c = ec("<div>" + c + "</div>"), ic(c), c = c.innerHTML); | |
| c = M(c); | |
| var d = document.createElement("template"); | |
| if (oc && "content" in d) N(d, c), d = d.content; | |
| else { | |
| var e = document.implementation.createHTMLDocument("x"); | |
| d = e.body; | |
| N(e.body, c) | |
| } | |
| c = document.createTreeWalker(d, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, !1); | |
| for (d = jc ? new WeakMap : new lc; e = c.nextNode();) { | |
| c: { | |
| var g = a; | |
| var k = e; | |
| switch (Xb(k)) { | |
| case 3: | |
| g = Gc(g, k); | |
| break c; | |
| case 1: | |
| if ("TEMPLATE" == V(k).toUpperCase()) g = null; | |
| else { | |
| var f = V(k).toUpperCase(); | |
| if (f in g.i) var h = null; | |
| else g.c[f] ? h = document.createElement(f) : (h = ub(), g.m && Ub(h, "data-sanitizer-original-tag", f.toLowerCase())); | |
| if (h) { | |
| var l = h, | |
| m = Tb(k); | |
| if (null != m) | |
| for (var r = 0; f = m[r]; r++) | |
| if (f.specified) { | |
| var n = g; | |
| var p = k, | |
| q = f, | |
| v = q.name; | |
| if (0 == v.lastIndexOf("data-sanitizer-", 0)) n = null; | |
| else { | |
| var la = V(p); | |
| q = q.value; | |
| var Ja = { | |
| tagName: E(la).toLowerCase(), | |
| attributeName: E(v).toLowerCase() | |
| }, | |
| Ka = { | |
| o: void 0 | |
| }; | |
| "style" == Ja.attributeName && (Ka.o = Vb(p)); | |
| p = Fc(la, v); | |
| p in n.a ? (n = n.a[p], n = n(q, Ja, Ka)) : (v = Fc(null, v), v in n.a ? (n = n.a[v], n = n(q, Ja, Ka)) : n = null) | |
| } | |
| null !== n && Ub(l, f.name, n) | |
| } | |
| g = h | |
| } else g = null | |
| } | |
| break c; | |
| default: | |
| g = null | |
| } | |
| } | |
| if (g) { | |
| if (1 == Xb(g) && d.set(e, g), e = W(e), k = !1, e) f = Xb(e), h = V(e).toLowerCase(), l = W(e), 11 != f || l ? "body" == h && l && (f = W(l)) && !W(f) && (k = !0) : k = !0, f = null, k || !e ? f = b : 1 == Xb(e) && (f = d.get(e)), f.content && (f = f.content), f.appendChild(g) | |
| } else | |
| for (g = e; e = g.firstChild;) g.removeChild(e) | |
| } | |
| d.clear && | |
| d.clear(); | |
| a = b | |
| } else a = ub(); | |
| 0 < Tb(a).length && (b = ub(), b.appendChild(a), a = b); | |
| a = (new XMLSerializer).serializeToString(a); | |
| a = a.slice(a.indexOf(">") + 1, a.lastIndexOf("</")) | |
| } else a = ""; | |
| return M(a) | |
| }, | |
| Gc = function(a, b) { | |
| var c = b.data; | |
| (b = W(b)) && "style" == V(b).toLowerCase() && !("STYLE" in a.i) && "STYLE" in a.c && (c = Wa(fc(c, a.b, pa(function(d, e) { | |
| return this.l(d, { | |
| H: e | |
| }) | |
| }, a)))); | |
| return document.createTextNode(c) | |
| }; | |
| var Ic = [], | |
| Jc = 0, | |
| Kc = new Map; | |
| function Lc(a) { | |
| for (var b = { | |
| left: 0, | |
| top: 0 | |
| }; a;) b.left += a.offsetLeft, b.top += a.offsetTop, a = a.offsetParent; | |
| return b | |
| } | |
| function Mc(a, b) { | |
| for (; a && (!a.classList || !a.classList.contains(b));) a = a.parentNode; | |
| return a || null | |
| } | |
| function Nc(a) { | |
| Oc(a.target, !1); | |
| Y(!1) | |
| } | |
| function Pc(a) { | |
| Oc(a.target, !0); | |
| Y(!1) | |
| } | |
| function Oc(a, b) { | |
| var c = a.nextSibling, | |
| d = "none" == getComputedStyle(c).display; | |
| b = b ? d ? MSG_HIDE_ELIDED : MSG_SHOW_ELIDED : d ? MSG_HIDE_ORIGINAL : MSG_SHOW_ORIGINAL; | |
| b = Hc(zc(), b); | |
| N(a, b); | |
| c.style.display = d ? "block" : "none"; | |
| d && Qc([c]) | |
| } | |
| function Rc(a) { | |
| a = a.getElementsByClassName("mail-message-toggle"); | |
| for (var b = 0, c; c = a[b]; b++) { | |
| var d = Hc(zc(), MSG_SHOW_ORIGINAL); | |
| N(c, d); | |
| c.onclick = Nc | |
| } | |
| } | |
| function Sc(a, b) { | |
| a = a.getElementsByClassName("elided-text"); | |
| for (var c, d = 0, e; e = a[d]; d++) { | |
| c = document.createElement("div"); | |
| c.className = "mail-elided-text"; | |
| var g = Hc(zc(), MSG_SHOW_ELIDED); | |
| N(c, g); | |
| c.setAttribute("dir", "auto"); | |
| c.onclick = Pc; | |
| e.style.display = "none"; | |
| e.parentNode.insertBefore(c, e); | |
| b && Oc(c, !0) | |
| } | |
| } | |
| function Qc(a) { | |
| var b, c; | |
| var d = document.body.offsetWidth; | |
| for (b = 0; b < a.length; b++) { | |
| var e = a[b]; | |
| if (c = e.style.zoom) e.style.zoom = 1; | |
| if (!Tc(e, d, e.scrollWidth) && NORMALIZE_MESSAGE_WIDTHS) { | |
| c = e.scrollWidth; | |
| c = c > d ? d / c : 1; | |
| var g = e.classList.contains("mail-message-content") ? 1 : (g = Mc(e, "mail-message-content")) ? g.style.zoom : 1; | |
| e.style.zoom = c / g | |
| } | |
| } | |
| } | |
| function Tc(a, b, c) { | |
| var d = c; | |
| var e = [], | |
| g = [], | |
| k = !1, | |
| f = []; | |
| if (c <= b) return !0; | |
| var h = Date.now(); | |
| if (a.parentElement.classList.contains("mail-message")) var l = a.parentElement.id; | |
| d = !1; | |
| d = ENABLE_MUNGE_TABLES ? a.querySelectorAll("div[style], textarea[style]") : []; | |
| if (d = Uc(d, b, e)) d = a.scrollWidth, console.log("ran div-width munger on el=" + a + " oldW=" + c + " newW=" + d + " docW=" + b), d <= b && (k = !0); | |
| !k && (d = ENABLE_MUNGE_IMAGES ? a.querySelectorAll("img") : [], d = Vc(d, b, e)) && (d = a.scrollWidth, console.log("ran img munger on el=" + a + " oldW=" + c + | |
| " newW=" + d + " docW=" + b), d <= b && (k = !0)); | |
| !k && (d = ENABLE_MUNGE_TABLES ? a.querySelectorAll("table") : [], d = Wc(d, Xc, g)) && (d = a.scrollWidth, console.log("ran table munger on el=" + a + " oldW=" + c + " newW=" + d + " docW=" + b), d <= b && (k = !0)); | |
| !k && (d = ENABLE_MUNGE_TABLES ? a.querySelectorAll("td") : [], d = Wc(d, null, g)) && (d = a.scrollWidth, console.log("ran td munger on el=" + a + " oldW=" + c + " newW=" + d + " docW=" + b), d <= b ? k = !0 : (console.log("Revert table and td munger because it didn't help"), Yc(g))); | |
| !k && NORMALIZE_MESSAGE_WIDTHS && (f = Zc(b, e), 0 < | |
| f.length && (f.forEach(function(m) { | |
| m.node.style.display = "none" | |
| }), d = a.scrollWidth, console.log("ran table zoom on el=" + a + " oldW=" + c + " newW=" + d + " docW=" + b), d <= b && (k = !0), f.forEach(function(m) { | |
| m.node.style.display = m.s | |
| }))); | |
| if (k) { | |
| if (l) ConversationView.onMessageTransform(JS_TOKEN, l); | |
| console.log("munger(s) succeeded, elapsed time=" + (Date.now() - h)); | |
| return !0 | |
| } | |
| Yc(e); | |
| 0 < e.length && console.log("all mungers failed, changes reversed. elapsed time=" + (Date.now() - h)); | |
| return !1 | |
| } | |
| function Yc(a) { | |
| for (var b = 0, c; c = a[b]; b++) c[0].apply(c[1], c[2]) | |
| } | |
| function Wc(a, b, c) { | |
| var d, e = !1; | |
| var g = 0; | |
| for (d = a.length; g < d; g++) { | |
| var k = a[g]; | |
| b && !b(k) || k.classList.contains("munged") || (k.classList.add("munged"), e = !0, c.push([k.classList.remove, k.classList, ["munged"]])) | |
| } | |
| return e | |
| } | |
| function Uc(a, b, c) { | |
| var d, e, g = !1; | |
| var k = 0; | |
| for (d = a.length; k < d; k++) { | |
| var f = a[k]; | |
| var h = (e = f.style.width || f.style.minWidth) ? e.indexOf("px") : -1; | |
| 0 <= h && e.slice(0, h) > b && (Z(f, "width", c), Z(f, "minWidth", c), Z(f, "maxWidth", c), f.style.width = "100%", f.style.minWidth = "", f.style.maxWidth = e, g = !0) | |
| } | |
| return g | |
| } | |
| function Vc(a, b, c) { | |
| var d, e, g, k = !1, | |
| f = []; | |
| var h = 0; | |
| for (d = a.length; h < d; h++) { | |
| for (g = e = a[h]; g && (!g.tagName || "table" !== g.tagName.toLowerCase());) g = g.parentNode; | |
| if (!g) { | |
| g = e.offsetWidth; | |
| var l = e.offsetHeight; | |
| var m = e.getAttribute("blocked-src"); | |
| var r = e.style.marginLeft; | |
| var n = e.style.marginRight; | |
| var p = 0 <= (r ? r.indexOf("px") : -1) ? parseInt(r, 10) : 0; | |
| p += 0 <= (n ? n.indexOf("px") : -1) ? parseInt(n, 10) : 0; | |
| console.log("nodeOffsetWidth is " + e.offsetWidth + ", marginL is " + r + ", marginR is " + n + ", total margin is " + p); | |
| n = m ? 2 : 0; | |
| g + p > b && (m ? | |
| (Z(e, "maxWidth", f), Z(e, "width", f), Kc.set(e, f)) : (Z(e, "maxWidth", c), Z(e, "width", c), Z(e, "height", c)), e.style.maxWidth = b - p - n + "px", e.style.width = "100%", null == m && (e.style.height = 5 > l ? l : "auto"), k = !0) | |
| } | |
| } | |
| return k | |
| } | |
| function Zc(a, b) { | |
| var c = document.querySelectorAll("table"), | |
| d = []; | |
| c = [].slice.call(c); | |
| c.forEach(function(e) { | |
| e.classList.remove("zoom-out"); | |
| e.style.zoom = 1 | |
| }); | |
| c.forEach(function(e) { | |
| if (!Mc(e, "zoom-out")) { | |
| var g = a / e.scrollWidth; | |
| 1 > g && (Z(e, "zoom", b), b.push([e.classList.remove, e.classList, ["zoom-out"]]), e.style.zoom = g, e.classList.add("zoom-out"), console.log("zoomed out the table"), d.push({ | |
| node: e, | |
| s: e.style.display | |
| })) | |
| } | |
| }); | |
| return d | |
| } | |
| function Z(a, b, c) { | |
| var d = "data-" + b; | |
| a.setAttribute(d, a.style[b]); | |
| c.push([$c, null, [a, b, d]]) | |
| } | |
| function $c(a, b, c) { | |
| a.style[b] = c ? a.getAttribute(c) : "" | |
| } | |
| function Xc(a) { | |
| return a.hasAttribute("width") || a.style.width | |
| } | |
| function ad(a) { | |
| var b, c, d = 0, | |
| e = [], | |
| g = []; | |
| var k = 0; | |
| for (b = a.length; k < b; k++) { | |
| var f = a[k]; | |
| var h = f.classList.contains("mail-show-images"); | |
| var l = f.classList.contains(REWRITE_IMAGE_URL_CLASS_NAME); | |
| var m = f.getElementsByTagName("img"); | |
| Jc = m.length; | |
| var r = 0; | |
| for (c = m.length; r < c; r++) { | |
| var n = m[r]; | |
| var p = n; | |
| var q = l, | |
| v = p.getAttribute("blocked-src"); | |
| q = q && v ? v : p.src; | |
| p.src = q; | |
| 0 == q.indexOf(DOC_BASE_URI) && DOC_BASE_URI != CONVERSATION_BASE_URI ? (q = CONVERSATION_BASE_URI + q.substring(DOC_BASE_URI.length), p = p.src = q) : p = SAPI_INLINE_IMAGE_URL_PATTERN && | |
| q.match(SAPI_INLINE_IMAGE_URL_PATTERN) ? q : SAPI_IMAP_INLINE_IMAGE_URL_PATTERN && q.match(SAPI_IMAP_INLINE_IMAGE_URL_PATTERN) ? bd(q) : "cid:" == q.substring(0, 4) ? q : null; | |
| q = !1; | |
| if (p) { | |
| e[d] = p; | |
| if (0 == p.indexOf("https://mail.google.com") || 0 == p.indexOf("https://" + IMAP_INLINE_ATTACHMENT_AUTHORITY)) cd(n), q = !0; | |
| g[d] = f.parentNode.id; | |
| d++ | |
| } | |
| v = n; | |
| var la = v.src; | |
| v.src = ""; | |
| v.onload = dd; | |
| v.src = la; | |
| q || h && (!p || "cid:" != p.substring(0, 4)) || cd(n) | |
| } | |
| } | |
| ConversationView.onInlineAttachmentsParsed(JS_TOKEN, e, g); | |
| if (0 < e.length) ConversationView.onImageLoadRequestsCreated(JS_TOKEN, | |
| e.length) | |
| } | |
| function dd(a) { | |
| Jc--; | |
| if (0 === Jc) { | |
| for (var b = document.getElementsByClassName("gmail-ads-delayed-elements"), c = 0; c < b.length; c++) b[c].style.visibility = "visible"; | |
| ConversationView.onAllContentLoaded(JS_TOKEN) | |
| } | |
| if (a && a.target && void 0 !== a.target.src) ConversationView.onImageLoadFinished(JS_TOKEN, a.target.src); | |
| if (a = Mc(a.target, "elided-text") || Mc(a.target, "mail-message-content")) 0 == Ic.length && window.setTimeout(ed, 0), -1 == Ic.indexOf(a) && Ic.push(a) | |
| } | |
| function ed() { | |
| Qc(Ic); | |
| Y(!1); | |
| ConversationView.onAllImagesLoadFinished(JS_TOKEN); | |
| Ic = [] | |
| } | |
| function cd(a) { | |
| var b = a.src; | |
| 0 == b.indexOf("http://") || 0 == b.indexOf("https://") || 0 == b.indexOf("content://") || 0 == b.indexOf("cid:") ? (a.setAttribute("blocked-src", b), a.src = "blocked") : 0 == b.indexOf("btdimap://attachment") && (a.setAttribute("blocked-src", bd(b)), a.src = "blocked") | |
| } | |
| function Y(a) { | |
| var b, c = 0, | |
| d = document.querySelectorAll(".expanded > .mail-message-content"); | |
| var e = Array(d.length + 1); | |
| var g = Array(d.length + 1); | |
| var k = 0; | |
| for (b = d.length; k < b; k++) { | |
| var f = d[k]; | |
| var h = f.previousElementSibling; | |
| e[k] = c; | |
| g[k] = Lc(h).top + h.offsetHeight; | |
| c = Lc(f.nextElementSibling).top | |
| } | |
| e[k] = c; | |
| g[k] = document.documentElement.scrollHeight; | |
| a && console.log("overlayTops: " + e.toString() + "; overlayBottoms: " + g.toString()); | |
| ConversationView.onWebContentGeometryChange(JS_TOKEN, e, g) | |
| } | |
| function fd(a, b) { | |
| var c; | |
| if (c = a.getAttribute("blocked-src")) { | |
| var d = !1; | |
| if (0 == c.indexOf("https://mail.google.com") || 0 == c.indexOf("https://" + IMAP_INLINE_ATTACHMENT_AUTHORITY)) d = ConversationView.downloadInlineAttachment(JS_TOKEN, c, b); | |
| d || (a.src = c, a.removeAttribute("blocked-src"), gd(a)) | |
| } | |
| } | |
| function gd(a) { | |
| var b = Kc.get(a); | |
| b && (Yc(b), Kc.delete(a)) | |
| } | |
| function hd(a, b) { | |
| a = document.querySelector("#" + id(a) + " > .mail-message-header"); | |
| jd(a, b) | |
| } | |
| function jd(a, b) { | |
| a ? (a.style.height = b + "px", Y(!1)) : console.log("can't set spacer height") | |
| } | |
| function kd(a) { | |
| Rc(a); | |
| Sc(a, !0); | |
| ad([a]); | |
| ld(a); | |
| Mc(a, "mail-message").classList.contains("expanded") && Qc([a]) | |
| } | |
| function md() { | |
| var a = document.getElementsByTagName("FORM"), | |
| b, c; | |
| for (b = 0; b < a.length; ++b) | |
| if ("POST" === a[b].method.toUpperCase()) { | |
| a[b].onsubmit = function() { | |
| alert(MSG_FORMS_ARE_DISABLED); | |
| return !1 | |
| }; | |
| var d = a[b].elements; | |
| for (c = 0; c < d.length; ++c) "submit" != d[c].type && (d[c].disabled = !0) | |
| } | |
| } | |
| function ld(a) { | |
| a = a.getElementsByTagName("A"); | |
| for (var b = 0; b < a.length; ++b) { | |
| var c = a[b], | |
| d = c.getAttribute("href"); | |
| d && "#" != d[0] && c.addEventListener("click", nd, !0) | |
| } | |
| } | |
| function nd(a) { | |
| var b = a.currentTarget, | |
| c; | |
| for (c = b; | |
| (c = c.parentElement) && !c.classList.contains("mail-message");); | |
| var d = b.getAttribute("href"); | |
| if (d) { | |
| var e = b.getAttribute("data-saferedirecturl") || ""; | |
| b = b.getAttribute("data-saferedirectreason") || ""; | |
| d = "gmail-link://?url=" + encodeURIComponent(d); | |
| e && (d += "&safeRedirectUrl=" + encodeURIComponent(e)); | |
| b && (d += "&safeRedirectReason=" + encodeURIComponent(b)); | |
| null != c && (d += "&msgId=" + encodeURIComponent(c.id)); | |
| e = d | |
| } else e = null; | |
| e && (window.location = e); | |
| a.preventDefault(); | |
| ConversationView.recordLinkClickForDynamicMailHoldbackGroup(JS_TOKEN, | |
| c.id) | |
| } | |
| function id(a) { | |
| a = a.replace(/#/g, "\\#"); | |
| a = a.replace(/:/g, "\\:"); | |
| return a = a.replace(/=/g, "\\=") | |
| } | |
| function bd(a) { | |
| return 0 == !a.indexOf("btdimap://attachment") ? null : "https://" + IMAP_INLINE_ATTACHMENT_AUTHORITY + "/" + a.substring(20) | |
| } | |
| y("setConversationPromotionSpacerHeight", function(a) { | |
| var b = document.getElementById("conversation-promotion"); | |
| b ? (b.style.height = a + "px", Y(!1)) : console.log("can't set spacer for conversation promotion") | |
| }); | |
| y("setConversationFooterSpacerHeight", function(a) { | |
| var b = document.getElementById("conversation-footer"); | |
| b ? (b.style.height = a + "px", Y(!1)) : console.log("can't set spacer for conversation footer") | |
| }); | |
| y("setMessageHeaderSpacerHeight", hd); | |
| y("setMessageFooterSpacerHeight", function(a, b) { | |
| a = document.querySelector("#" + id(a) + " > .mail-message-footer"); | |
| jd(a, b) | |
| }); | |
| y("setMessageBodyVisible", function(a, b, c, d) { | |
| var e, g = c ? "block" : "none"; | |
| var k = id(a); | |
| var f = document.querySelector("#" + k), | |
| h = document.querySelectorAll("#" + k + " > .collapsible"); | |
| if (f && 0 != h.length) { | |
| f.classList.toggle("expanded"); | |
| k = 0; | |
| for (e = h.length; k < e; k++) { | |
| var l = h[k]; | |
| b ? c ? (l.style.display = "block", l.style.position = "", l.style.visibility = "", l.style.top = "", l.style.bottom = "", l.style.zIndex = "", l.style.left = "") : (l.style.position = "absolute", l.style.visibility = "hidden", l.style.top = "0", l.style.bottom = "0", l.style.zIndex = | |
| "-999999999", l.style.left = "-99999px") : l.style.display = g | |
| } | |
| c && Qc(f.getElementsByClassName("mail-message-content")); | |
| hd(a, d) | |
| } else console.log("can't set body visibility for message with id: " + a) | |
| }); | |
| y("unblockImages", function(a) { | |
| for (var b, c, d = c = 0, e; e = a[d]; d++) | |
| if (b = document.getElementById(e)) { | |
| var g = b.getElementsByClassName("mail-message-content")[0]; | |
| g && g.classList.add("mail-show-images"); | |
| b = b.getElementsByTagName("img"); | |
| c += b.length; | |
| g = 0; | |
| for (var k; k = b[g]; g++) fd(k, e) | |
| } else console.log("can't unblock, no matching message for id: " + e); | |
| if (0 < c) ConversationView.onImageLoadRequestsCreated(JS_TOKEN, c) | |
| }); | |
| y("replaceSuperCollapsedBlock", function(a) { | |
| var b; | |
| if (b = document.querySelector(".mail-super-collapsed-block[index='" + a + "']")) { | |
| a = b.parentNode; | |
| var c = M(ConversationView.getSuperCollapseBlockHtml(JS_TOKEN)); | |
| N(b, c); | |
| Rc(b); | |
| Sc(b, !1); | |
| ad(b.getElementsByClassName("mail-message-content")); | |
| ld(b); | |
| for (c = b.firstChild; c;) a.insertBefore(c, b), c = b.firstChild; | |
| a.removeChild(b); | |
| md(); | |
| Y(!1) | |
| } else console.log("can't expand super collapsed block at index: " + a) | |
| }); | |
| y("measurePositions", Y); | |
| y("setConversationHeaderSpacerHeight", function(a) { | |
| var b = document.getElementById("conversation-header"); | |
| b ? (b.style.height = a + "px", Y(!1)) : console.log("can't set spacer for conversation header") | |
| }); | |
| y("setSmartMailCardSpacerHeight", function(a, b) { | |
| (a = document.getElementById(a)) ? (a.style.height = b + "px", Y(!1)) : console.log("can't set spacer for smartmail card") | |
| }); | |
| y("unblockAllTemporarilyHiddenImages", function() { | |
| var a, b; | |
| var c = document.getElementsByClassName("mail-message-content"); | |
| var d = 0; | |
| for (a = c.length; d < a; d++) { | |
| var e = c[d]; | |
| if (b = e.classList.contains("mail-show-images")) { | |
| var g = e.getElementsByTagName("img"); | |
| e = 0; | |
| for (b = g.length; e < b; e++) fd(g[e], "") | |
| } | |
| } | |
| }); | |
| y("replaceMessageBodies", function(a) { | |
| for (var b, c = 0, d; d = a[c]; c++)(b = document.querySelector("#" + id(d) + " > .mail-message-content")) ? (d = M(ConversationView.getMessageBody(JS_TOKEN, d)), N(b, d), kd(b)) : console.log("Mail message content for msg " + d + " to replace not found."); | |
| md(); | |
| Y(!1) | |
| }); | |
| y("appendMessageHtml", function() { | |
| var a = document.createElement("div"), | |
| b = M(ConversationView.getNewMessageHtml(JS_TOKEN)); | |
| N(a, b); | |
| a = a.children[0]; | |
| document.body.insertBefore(a, document.getElementById("conversation-footer")); | |
| kd(a.querySelector(".mail-message-content")); | |
| md(); | |
| Y(!1) | |
| }); | |
| y("refreshInlineAttachment", function(a) { | |
| for (var b = document.getElementsByTagName("img"), c = 0; c < b.length; ++c) { | |
| var d = b[c], | |
| e = d.getAttribute("blocked-src"); | |
| e && e == a && (d.removeAttribute("blocked-src"), d.src = "" !== ATTACHMENT_DOWNLOAD_FINISH_POSTFIX ? e + "/" + ATTACHMENT_DOWNLOAD_FINISH_POSTFIX : e, gd(d)) | |
| } | |
| }); | |
| y("reloadImage", function(a) { | |
| a = document.querySelectorAll('img[src="' + a + '"]'); | |
| for (var b = 0; b < a.length; b++) a[b].src = a[b].src | |
| }); | |
| document.addEventListener("DOMContentLoaded", function() { | |
| ConversationView.createTracingInstant(JS_TOKEN, "DOMContentLoaded"); | |
| console.log("Measure positions upon DOMContentLoaded"); | |
| Y(!0); | |
| if (ENABLE_CONTENT_READY) { | |
| var a = ConversationView.getScrollYPercent(JS_TOKEN); | |
| a && document.body.offsetHeight > window.innerHeight && (document.body.scrollTop = Math.floor(a * document.body.offsetHeight)); | |
| ConversationView.onContentReady(JS_TOKEN) | |
| } | |
| }); | |
| for (var od = document.getElementsByClassName("gmail-ads-delayed-elements"), pd = 0; pd < od.length; pd++) od[pd].style.visibility = "hidden"; | |
| Rc(document.documentElement); | |
| Sc(document.documentElement, !1); | |
| ad(document.getElementsByClassName("mail-message-content")); | |
| var qd, rd, sd, td; | |
| qd = document.querySelectorAll(".expanded > .mail-message-content"); | |
| a: { | |
| var ud, vd, wd, xd;ud = 0; | |
| for (vd = qd.length; ud < vd; ud++) | |
| if (wd = qd[ud], xd = wd.textContent || wd.innerText, 0 < xd.trim().length) { | |
| td = !1; | |
| break a | |
| } | |
| td = !0 | |
| } | |
| Qc(qd); | |
| rd = document.getElementById("meta-viewport"); | |
| sd = [rd.getAttribute("content")]; | |
| td ? sd.push(rd.getAttribute("data-zoom-off")) : sd.push(rd.getAttribute("data-zoom-on")); | |
| rd.setAttribute("content", sd.join(",")); | |
| md(); | |
| console.log("Measure positions in script.js"); | |
| Y(!0); | |
| ld(document.documentElement); | |
| }).call(this); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment