jspdf-autotable
Version:
Generate pdf tables with javascript (jsPDF plugin)
4,433 lines • 326 kB
JavaScript
!function (t, e) {"object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.jspdf = e()}(this, function () {
"use strict";
var t = {};
t["typeof"] = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {return typeof t} : function (t) {return t && "function" == typeof Symbol && t.constructor === Symbol ? "symbol" : typeof t};
/** @preserve
* jsPDF - PDF Document creation from JavaScript
* Version 1.2.61-bundler-ready Built on 2016-05-24T11:29:13.019Z
* CommitID f895888cdf
*
* Copyright (c) 2010-2014 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
* 2010 Aaron Spike, https://github.com/acspike
* 2012 Willow Systems Corporation, willow-systems.com
* 2012 Pablo Hess, https://github.com/pablohess
* 2012 Florian Jenett, https://github.com/fjenett
* 2013 Warren Weckesser, https://github.com/warrenweckesser
* 2013 Youssef Beddad, https://github.com/lifof
* 2013 Lee Driscoll, https://github.com/lsdriscoll
* 2013 Stefan Slonevskiy, https://github.com/stefslon
* 2013 Jeremy Morel, https://github.com/jmorel
* 2013 Christoph Hartmann, https://github.com/chris-rock
* 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
* 2014 James Makes, https://github.com/dollaruw
* 2014 Diego Casorran, https://github.com/diegocr
* 2014 Steven Spungin, https://github.com/Flamenco
* 2014 Kenneth Glassey, https://github.com/Gavvers
*
* Licensed under the MIT License
*
* Contributor(s):
* siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
* kim3er, mfo, alnorth, Flamenco
*/
var e = function (e) {
function n(t) {
var n = {};
this.subscribe = function (t, e, r) {
if ("function" != typeof e)return !1;
n.hasOwnProperty(t) || (n[t] = {});
var i = Math.random().toString(35);
return n[t][i] = [e, !!r], i
}, this.unsubscribe = function (t) {
for (var e in n)if (n[e][t])return delete n[e][t], !0;
return !1
}, this.publish = function (r) {
if (n.hasOwnProperty(r)) {
var i = Array.prototype.slice.call(arguments, 1), o = [];
for (var a in n[r]) {
var s = n[r][a];
try {s[0].apply(t, i)} catch (c) {e.console && console.error("jsPDF PubSub Error", c.message, c)}
s[1] && o.push(a)
}
o.length && o.forEach(this.unsubscribe)
}
}
}
function o(u, l, h, f) {
var d = {};
"object" === ("undefined" == typeof u ? "undefined" : t["typeof"](u)) && (d = u, u = d.orientation, l = d.unit || l, h = d.format || h, f = d.compress || d.compressPdf || f), l = l || "mm", h = h || "a4", u = ("" + (u || "P")).toLowerCase();
var p, m, g, w, y, v, b, x, k, A = (("" + h).toLowerCase(), !!f && "function" == typeof Uint8Array), C = d.textColor || "0 g", _ = d.drawColor || "0 G", q = d.fontSize || 16, S = d.lineHeight || 1.15, T = d.lineWidth || .200025, E = 2, P = !1, I = [], F = {}, O = {}, B = 0, R = [], D = [], j = [], z = [], N = [], L = 0, M = 0, U = 0, H = {
title: "",
subject: "",
author: "",
keywords: "",
creator: ""
}, W = {}, X = new n(W), V = function (t) {return t.toFixed(2)}, Y = function (t) {return t.toFixed(3)}, G = function (t) {return ("0" + parseInt(t)).slice(-2)}, J = function (t) {P ? R[w].push(t) : (U += t.length + 1, z.push(t))}, Q = function () {return E++, I[E] = U, J(E + " 0 obj"), E}, K = function () {
var t = 2 * R.length + 1;
t += N.length;
var e = {objId: t, content: ""};
return N.push(e), e
}, Z = function () {return E++, I[E] = function () {return U}, E}, $ = function (t) {I[t] = U}, tt = function (t) {J("stream"), J(t), J("endstream")}, et = function () {
var t, n, r, i, s, c, u, l, h;
for (u = e.adler32cs || o.adler32cs, A && "undefined" == typeof u && (A = !1), t = 1; B >= t; t++) {
if (Q(), l = (y = j[t].width) * m, h = (v = j[t].height) * m, J("<</Type /Page"), J("/Parent 1 0 R"), J("/Resources 2 0 R"), J("/MediaBox [0 0 " + V(l) + " " + V(h) + "]"), X.publish("putPage", {
pageNumber: t,
page: R[t]
}), J("/Contents " + (E + 1) + " 0 R"), J(">>"), J("endobj"), n = R[t].join("\n"), Q(), A) {
for (r = [], i = n.length; i--;)r[i] = n.charCodeAt(i);
c = u.from(n), s = new a(6), s.append(new Uint8Array(r)), n = s.flush(), r = new Uint8Array(n.length + 6), r.set(new Uint8Array([120, 156])), r.set(n, 2), r.set(new Uint8Array([255 & c, c >> 8 & 255, c >> 16 & 255, c >> 24 & 255]), n.length + 2), n = String.fromCharCode.apply(null, r), J("<</Length " + n.length + " /Filter [/FlateDecode]>>")
} else J("<</Length " + n.length + ">>");
tt(n), J("endobj")
}
I[1] = U, J("1 0 obj"), J("<</Type /Pages");
var f = "/Kids [";
for (i = 0; B > i; i++)f += 3 + 2 * i + " 0 R ";
J(f + "]"), J("/Count " + B), J(">>"), J("endobj"), X.publish("postPutPages")
}, nt = function (t) {t.objectNumber = Q(), J("<</BaseFont/" + t.PostScriptName + "/Type/Font"), "string" == typeof t.encoding && J("/Encoding/" + t.encoding), J("/Subtype/Type1>>"), J("endobj")}, rt = function () {for (var t in F)F.hasOwnProperty(t) && nt(F[t])}, it = function () {X.publish("putXobjectDict")}, ot = function () {
J("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), J("/Font <<");
for (var t in F)F.hasOwnProperty(t) && J("/" + t + " " + F[t].objectNumber + " 0 R");
J(">>"), J("/XObject <<"), it(), J(">>")
}, at = function () {rt(), X.publish("putResources"), I[2] = U, J("2 0 obj"), J("<<"), ot(), J(">>"), J("endobj"), X.publish("postPutResources")}, st = function () {
X.publish("putAdditionalObjects");
for (var t = 0; t < N.length; t++) {
var e = N[t];
I[e.objId] = U, J(e.objId + " 0 obj"), J(e.content), J("endobj")
}
E += N.length, X.publish("postPutAdditionalObjects")
}, ct = function (t, e, n) {O.hasOwnProperty(e) || (O[e] = {}), O[e][n] = t}, ut = function (t, e, n, r) {
var i = "F" + (Object.keys(F).length + 1).toString(10), o = F[i] = {
id: i,
PostScriptName: t,
fontName: e,
fontStyle: n,
encoding: r,
metadata: {}
};
return ct(i, e, n), X.publish("addFont", o), i
}, lt = function () {
for (var t = "helvetica", e = "times", n = "courier", r = "normal", i = "bold", o = "italic", a = "bolditalic", s = "StandardEncoding", c = "zapfdingbats", u = [["Helvetica", t, r], ["Helvetica-Bold", t, i], ["Helvetica-Oblique", t, o], ["Helvetica-BoldOblique", t, a], ["Courier", n, r], ["Courier-Bold", n, i], ["Courier-Oblique", n, o], ["Courier-BoldOblique", n, a], ["Times-Roman", e, r], ["Times-Bold", e, i], ["Times-Italic", e, o], ["Times-BoldItalic", e, a], ["ZapfDingbats", c]], l = 0, h = u.length; h > l; l++) {
var f = ut(u[l][0], u[l][1], u[l][2], s), d = u[l][0].split("-");
ct(f, d[0], d[1] || "")
}
X.publish("addFonts", {fonts: F, dictionary: O})
}, ht = function (t) {
return t.foo = function () {
try {return t.apply(this, arguments)} catch (n) {
var r = n.stack || "";
~r.indexOf(" at ") && (r = r.split(" at ")[1]);
var i = "Error in function " + r.split("\n")[0].split("<")[0] + ": " + n.message;
if (!e.console)throw new Error(i);
e.console.error(i, n), e.alert && alert(i)
}
}, t.foo.bar = t, t.foo
}, ft = function (t, e) {
var n, r, i, o, a, s, c, u, l;
if (e = e || {}, i = e.sourceEncoding || "Unicode", a = e.outputEncoding, (e.autoencode || a) && F[p].metadata && F[p].metadata[i] && F[p].metadata[i].encoding && (o = F[p].metadata[i].encoding, !a && F[p].encoding && (a = F[p].encoding), !a && o.codePages && (a = o.codePages[0]), "string" == typeof a && (a = o[a]), a)) {
for (c = !1, s = [], n = 0, r = t.length; r > n; n++)u = a[t.charCodeAt(n)], u ? s.push(String.fromCharCode(u)) : s.push(t[n]), s[n].charCodeAt(0) >> 8 && (c = !0);
t = s.join("")
}
for (n = t.length; void 0 === c && 0 !== n;)t.charCodeAt(n - 1) >> 8 && (c = !0), n--;
if (!c)return t;
for (s = e.noBOM ? [] : [254, 255], n = 0, r = t.length; r > n; n++) {
if (u = t.charCodeAt(n), l = u >> 8, l >> 8)throw new Error("Character at position " + n + " of string '" + t + "' exceeds 16bits. Cannot be encoded into UCS-2 BE");
s.push(l), s.push(u - (l << 8))
}
return String.fromCharCode.apply(void 0, s)
}, dt = function (t, e) {return ft(t, e).replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)")}, pt = function () {
J("/Producer (jsPDF " + o.version + ")");
for (var t in H)H.hasOwnProperty(t) && H[t] && J("/" + t.substr(0, 1).toUpperCase() + t.substr(1) + " (" + dt(H[t]) + ")");
var e = new Date, n = e.getTimezoneOffset(), r = 0 > n ? "+" : "-", i = Math.floor(Math.abs(n / 60)), a = Math.abs(n % 60), s = [r, G(i), "'", G(a), "'"].join("");
J(["/CreationDate (D:", e.getFullYear(), G(e.getMonth() + 1), G(e.getDate()), G(e.getHours()), G(e.getMinutes()), G(e.getSeconds()), s, ")"].join(""))
}, mt = function () {
switch (J("/Type /Catalog"), J("/Pages 1 0 R"), x || (x = "fullwidth"), x) {
case"fullwidth":
J("/OpenAction [3 0 R /FitH null]");
break;
case"fullheight":
J("/OpenAction [3 0 R /FitV null]");
break;
case"fullpage":
J("/OpenAction [3 0 R /Fit]");
break;
case"original":
J("/OpenAction [3 0 R /XYZ null null 1]");
break;
default:
var t = "" + x;
"%" === t.substr(t.length - 1) && (x = parseInt(x) / 100), "number" == typeof x && J("/OpenAction [3 0 R /XYZ null null " + V(x) + "]")
}
switch (k || (k = "continuous"), k) {
case"continuous":
J("/PageLayout /OneColumn");
break;
case"single":
J("/PageLayout /SinglePage");
break;
case"two":
case"twoleft":
J("/PageLayout /TwoColumnLeft");
break;
case"tworight":
J("/PageLayout /TwoColumnRight")
}
b && J("/PageMode /" + b), X.publish("putCatalog")
}, gt = function () {J("/Size " + (E + 1)), J("/Root " + E + " 0 R"), J("/Info " + (E - 1) + " 0 R")}, wt = function (t, e) {
var n = "string" == typeof e && e.toLowerCase();
if ("string" == typeof t) {
var r = t.toLowerCase();
c.hasOwnProperty(r) && (t = c[r][0] / m, e = c[r][1] / m)
}
if (Array.isArray(t) && (e = t[1], t = t[0]), n) {
switch (n.substr(0, 1)) {
case"l":
e > t && (n = "s");
break;
case"p":
t > e && (n = "s")
}
"s" === n && (g = t, t = e, e = g)
}
P = !0, R[++B] = [], j[B] = {width: Number(t) || y, height: Number(e) || v}, D[B] = {}, bt(B)
}, yt = function () {wt.apply(this, arguments), J(V(T * m) + " w"), J(_), 0 !== L && J(L + " J"), 0 !== M && J(M + " j"), X.publish("addPage", {pageNumber: B})}, vt = function (t) {t > 0 && B >= t && (R.splice(t, 1), j.splice(t, 1), B--, w > B && (w = B), this.setPage(w))}, bt = function (t) {t > 0 && B >= t && (w = t, y = j[t].width, v = j[t].height)}, xt = function (t, e) {
var n;
switch (t = void 0 !== t ? t : F[p].fontName, e = void 0 !== e ? e : F[p].fontStyle, void 0 !== t && (t = t.toLowerCase()), t) {
case"sans-serif":
case"verdana":
case"arial":
case"helvetica":
t = "helvetica";
break;
case"fixed":
case"monospace":
case"terminal":
case"courier":
t = "courier";
break;
case"serif":
case"cursive":
case"fantasy":
default:
t = "times"
}
try {n = O[t][e]} catch (r) {}
return n || (n = O.times[e], null == n && (n = O.times.normal)), n
}, kt = function () {
P = !1, E = 2, z = [], I = [], N = [], X.publish("buildDocument"), J("%PDF-" + s), et(), st(), at(), Q(), J("<<"), pt(), J(">>"), J("endobj"), Q(), J("<<"), mt(), J(">>"), J("endobj");
var t, e = U, n = "0000000000";
for (J("xref"), J("0 " + (E + 1)), J(n + " 65535 f "), t = 1; E >= t; t++) {
var r = I[t];
J("function" == typeof r ? (n + I[t]()).slice(-10) + " 00000 n " : (n + I[t]).slice(-10) + " 00000 n ")
}
return J("trailer"), J("<<"), gt(), J(">>"), J("startxref"), J(e), J("%%EOF"), P = !0, z.join("\n")
}, At = function (t) {
var e = "S";
return "F" === t ? e = "f" : "FD" === t || "DF" === t ? e = "B" : "f" !== t && "f*" !== t && "B" !== t && "B*" !== t || (e = t), e
}, Ct = function () {
for (var t = kt(), e = t.length, n = new ArrayBuffer(e), r = new Uint8Array(n); e--;)r[e] = t.charCodeAt(e);
return n
}, _t = function () {return new Blob([Ct()], {type: "application/pdf"})}, qt = ht(function (t, n) {
var i = "dataur" === ("" + t).substr(0, 6) ? "data:application/pdf;base64," + btoa(kt()) : 0;
switch (t) {
case void 0:
return kt();
case"save":
if (navigator.getUserMedia && (void 0 === e.URL || void 0 === e.URL.createObjectURL))return W.output("dataurlnewwindow");
r(_t(), n), "function" == typeof r.unload && e.setTimeout && setTimeout(r.unload, 911);
break;
case"arraybuffer":
return Ct();
case"blob":
return _t();
case"bloburi":
case"bloburl":
return e.URL && e.URL.createObjectURL(_t()) || void 0;
case"datauristring":
case"dataurlstring":
return i;
case"dataurlnewwindow":
var o = e.open(i);
if (o || "undefined" == typeof safari)return o;
case"datauri":
case"dataurl":
return e.document.location.href = i;
default:
throw new Error('Output type "' + t + '" is not supported.')
}
});
switch (l) {
case"pt":
m = 1;
break;
case"mm":
m = 72 / 25.4000508;
break;
case"cm":
m = 72 / 2.54000508;
break;
case"in":
m = 72;
break;
case"px":
m = 96 / 72;
break;
case"pc":
m = 12;
break;
case"em":
m = 12;
break;
case"ex":
m = 6;
break;
default:
throw"Invalid unit: " + l
}
W.internal = {
pdfEscape: dt,
getStyle: At,
getFont: function () {return F[xt.apply(W, arguments)]},
getFontSize: function () {return q},
getLineHeight: function () {return q * S},
write: function (t) {J(1 === arguments.length ? t : Array.prototype.join.call(arguments, " "))},
getCoordinateString: function (t) {return V(t * m)},
getVerticalCoordinateString: function (t) {return V((v - t) * m)},
collections: {},
newObject: Q,
newAdditionalObject: K,
newObjectDeferred: Z,
newObjectDeferredBegin: $,
putStream: tt,
events: X,
scaleFactor: m,
pageSize: {get width() {return y}, get height() {return v}},
output: function (t, e) {return qt(t, e)},
getNumberOfPages: function () {return R.length - 1},
pages: R,
out: J,
f2: V,
getPageInfo: function (t) {
var e = 2 * (t - 1) + 3;
return {objId: e, pageNumber: t, pageContext: D[t]}
},
getCurrentPageInfo: function () {
var t = 2 * (w - 1) + 3;
return {objId: t, pageNumber: w, pageContext: D[w]}
},
getPDFVersion: function () {return s}
}, W.addPage = function () {return yt.apply(this, arguments), this}, W.setPage = function () {return bt.apply(this, arguments), this}, W.insertPage = function (t) {return this.addPage(), this.movePage(w, t), this}, W.movePage = function (t, e) {
if (t > e) {
for (var n = R[t], r = j[t], i = D[t], o = t; o > e; o--)R[o] = R[o - 1], j[o] = j[o - 1], D[o] = D[o - 1];
R[e] = n, j[e] = r, D[e] = i, this.setPage(e)
} else if (e > t) {
for (var n = R[t], r = j[t], i = D[t], o = t; e > o; o++)R[o] = R[o + 1], j[o] = j[o + 1], D[o] = D[o + 1];
R[e] = n, j[e] = r, D[e] = i, this.setPage(e)
}
return this
}, W.deletePage = function () {return vt.apply(this, arguments), this}, W.setDisplayMode = function (t, e, n) {return x = t, k = e, b = n, this}, W.text = function (t, e, n, r, o, a) {
function s(t) {return t = t.split(" ").join(Array(d.TabLen || 9).join(" ")), dt(t, r)}
"number" == typeof t && (g = n, n = e, e = t, t = g), "string" == typeof t && (t = t.match(/[\n\r]/) ? t.split(/\r\n|\r|\n/g) : [t]), "string" == typeof o && (a = o, o = null), "string" == typeof r && (a = r, r = null), "number" == typeof r && (o = r, r = null);
var c, u = "", l = "Td";
if (o) {
o *= Math.PI / 180;
var h = Math.cos(o), f = Math.sin(o);
u = [V(h), V(f), V(-1 * f), V(h), ""].join(" "), l = "Tm"
}
r = r || {}, "noBOM" in r || (r.noBOM = !0), "autoencode" in r || (r.autoencode = !0);
var w = "", y = this.internal.getCurrentPageInfo().pageContext;
if (!0 === r.stroke ? y.lastTextWasStroke !== !0 && (w = "1 Tr\n", y.lastTextWasStroke = !0) : (y.lastTextWasStroke && (w = "0 Tr\n"), y.lastTextWasStroke = !1), "undefined" == typeof this._runningPageHeight && (this._runningPageHeight = 0), "string" == typeof t)t = s(t); else {
if ("[object Array]" !== Object.prototype.toString.call(t))throw new Error('Type of text must be string or Array. "' + t + '" is not recognized.');
for (var b = t.concat(), x = [], k = b.length; k--;)x.push(s(b.shift()));
var A = Math.ceil((v - n - this._runningPageHeight) * m / (q * S));
if (A >= 0 && A < x.length + 1, a) {
var _, T, E, P = q * S, I = t.map(function (t) {return this.getStringUnitWidth(t) * q / m}, this);
if (E = Math.max.apply(Math, I), "center" === a)_ = e - E / 2, e -= I[0] / 2; else {
if ("right" !== a)throw new Error('Unrecognized alignment option, use "center" or "right".');
_ = e - E, e -= I[0]
}
for (T = e, t = x[0] + ") Tj\n", i = 1, k = x.length; i < k; i++) {
var F = E - I[i];
"center" === a && (F /= 2), t += _ - T + F + " -" + P + " Td (" + x[i], T = _ + F, i < k - 1 && (t += ") Tj\n")
}
} else t = x.join(") Tj\nT* (")
}
var O;
return c || (O = V((v - n) * m)), J("BT\n/" + p + " " + q + " Tf\n" + q * S + " TL\n" + w + C + "\n" + u + V(e * m) + " " + O + " " + l + "\n(" + t + ") Tj\nET"), c && this.text(c, e, n), this
}, W.lstext = function (t, e, n, r) {for (var i = 0, o = t.length; o > i; i++, e += r)this.text(t[i], e, n)}, W.line = function (t, e, n, r) {return this.lines([[n - t, r - e]], t, e)}, W.clip = function () {J("W"), J("S")}, W.lines = function (t, e, n, r, i, o) {
var a, s, c, u, l, h, f, d, p, w, y;
for ("number" == typeof t && (g = n, n = e, e = t, t = g), r = r || [1, 1], J(Y(e * m) + " " + Y((v - n) * m) + " m "), a = r[0], s = r[1], u = t.length, w = e, y = n, c = 0; u > c; c++)l = t[c], 2 === l.length ? (w = l[0] * a + w, y = l[1] * s + y, J(Y(w * m) + " " + Y((v - y) * m) + " l")) : (h = l[0] * a + w, f = l[1] * s + y, d = l[2] * a + w, p = l[3] * s + y, w = l[4] * a + w, y = l[5] * s + y, J(Y(h * m) + " " + Y((v - f) * m) + " " + Y(d * m) + " " + Y((v - p) * m) + " " + Y(w * m) + " " + Y((v - y) * m) + " c"));
return o && J(" h"), null !== i && J(At(i)), this
}, W.rect = function (t, e, n, r, i) {
At(i);
return J([V(t * m), V((v - e) * m), V(n * m), V(-r * m), "re"].join(" ")), null !== i && J(At(i)), this
}, W.triangle = function (t, e, n, r, i, o, a) {return this.lines([[n - t, r - e], [i - n, o - r], [t - i, e - o]], t, e, [1, 1], a, !0), this}, W.roundedRect = function (t, e, n, r, i, o, a) {
var s = 4 / 3 * (Math.SQRT2 - 1);
return this.lines([[n - 2 * i, 0], [i * s, 0, i, o - o * s, i, o], [0, r - 2 * o], [0, o * s, -(i * s), o, -i, o], [-n + 2 * i, 0], [-(i * s), 0, -i, -(o * s), -i, -o], [0, -r + 2 * o], [0, -(o * s), i * s, -o, i, -o]], t + i, e, [1, 1], a), this
}, W.ellipse = function (t, e, n, r, i) {
var o = 4 / 3 * (Math.SQRT2 - 1) * n, a = 4 / 3 * (Math.SQRT2 - 1) * r;
return J([V((t + n) * m), V((v - e) * m), "m", V((t + n) * m), V((v - (e - a)) * m), V((t + o) * m), V((v - (e - r)) * m), V(t * m), V((v - (e - r)) * m), "c"].join(" ")), J([V((t - o) * m), V((v - (e - r)) * m), V((t - n) * m), V((v - (e - a)) * m), V((t - n) * m), V((v - e) * m), "c"].join(" ")), J([V((t - n) * m), V((v - (e + a)) * m), V((t - o) * m), V((v - (e + r)) * m), V(t * m), V((v - (e + r)) * m), "c"].join(" ")), J([V((t + o) * m), V((v - (e + r)) * m), V((t + n) * m), V((v - (e + a)) * m), V((t + n) * m), V((v - e) * m), "c"].join(" ")), null !== i && J(At(i)), this
}, W.circle = function (t, e, n, r) {return this.ellipse(t, e, n, n, r)}, W.setProperties = function (t) {
for (var e in H)H.hasOwnProperty(e) && t[e] && (H[e] = t[e]);
return this
}, W.setFontSize = function (t) {return q = t, this}, W.setFont = function (t, e) {return p = xt(t, e), this}, W.setFontStyle = W.setFontType = function (t) {return p = xt(void 0, t), this}, W.getFontList = function () {
var t, e, n, r = {};
for (t in O)if (O.hasOwnProperty(t)) {
r[t] = n = [];
for (e in O[t])O[t].hasOwnProperty(e) && n.push(e)
}
return r
}, W.addFont = function (t, e, n) {ut(t, e, n, "StandardEncoding")}, W.setLineWidth = function (t) {return J((t * m).toFixed(2) + " w"), this}, W.setDrawColor = function (t, e, n, r) {
var i;
return i = void 0 === e || void 0 === r && t === e === n ? "string" == typeof t ? t + " G" : V(t / 255) + " G" : void 0 === r ? "string" == typeof t ? [t, e, n, "RG"].join(" ") : [V(t / 255), V(e / 255), V(n / 255), "RG"].join(" ") : "string" == typeof t ? [t, e, n, r, "K"].join(" ") : [V(t), V(e), V(n), V(r), "K"].join(" "), J(i), this
}, W.setFillColor = function (e, n, r, i) {
var o;
return void 0 === n || void 0 === i && e === n === r ? o = "string" == typeof e ? e + " g" : V(e / 255) + " g" : void 0 === i || "object" === ("undefined" == typeof i ? "undefined" : t["typeof"](i)) ? (o = "string" == typeof e ? [e, n, r, "rg"].join(" ") : [V(e / 255), V(n / 255), V(r / 255), "rg"].join(" "), i && 0 === i.a && (o = ["255", "255", "255", "rg"].join(" "))) : o = "string" == typeof e ? [e, n, r, i, "k"].join(" ") : [V(e), V(n), V(r), V(i), "k"].join(" "), J(o), this
}, W.setTextColor = function (t, e, n) {
if ("string" == typeof t && /^#[0-9A-Fa-f]{6}$/.test(t)) {
var r = parseInt(t.substr(1), 16);
t = r >> 16 & 255, e = r >> 8 & 255, n = 255 & r
}
return C = 0 === t && 0 === e && 0 === n || "undefined" == typeof e ? Y(t / 255) + " g" : [Y(t / 255), Y(e / 255), Y(n / 255), "rg"].join(" "), this
}, W.CapJoinStyles = {
0: 0,
butt: 0,
but: 0,
miter: 0,
1: 1,
round: 1,
rounded: 1,
circle: 1,
2: 2,
projecting: 2,
project: 2,
square: 2,
bevel: 2
}, W.setLineCap = function (t) {
var e = this.CapJoinStyles[t];
if (void 0 === e)throw new Error("Line cap style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
return L = e, J(e + " J"), this
}, W.setLineJoin = function (t) {
var e = this.CapJoinStyles[t];
if (void 0 === e)throw new Error("Line join style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
return M = e, J(e + " j"), this
}, W.output = qt, W.save = function (t) {W.output("save", t)};
for (var St in o.API)o.API.hasOwnProperty(St) && ("events" === St && o.API.events.length ? !function (t, e) {
var n, r, i;
for (i = e.length - 1; -1 !== i; i--)n = e[i][0], r = e[i][1], t.subscribe.apply(t, [n].concat("function" == typeof r ? [r] : r))
}(X, o.API.events) : W[St] = o.API[St]);
return lt(), p = "F1", yt(h, u), X.publish("initialized"), W
}
var s = "1.3", c = {
a0: [2383.94, 3370.39],
a1: [1683.78, 2383.94],
a2: [1190.55, 1683.78],
a3: [841.89, 1190.55],
a4: [595.28, 841.89],
a5: [419.53, 595.28],
a6: [297.64, 419.53],
a7: [209.76, 297.64],
a8: [147.4, 209.76],
a9: [104.88, 147.4],
a10: [73.7, 104.88],
b0: [2834.65, 4008.19],
b1: [2004.09, 2834.65],
b2: [1417.32, 2004.09],
b3: [1000.63, 1417.32],
b4: [708.66, 1000.63],
b5: [498.9, 708.66],
b6: [354.33, 498.9],
b7: [249.45, 354.33],
b8: [175.75, 249.45],
b9: [124.72, 175.75],
b10: [87.87, 124.72],
c0: [2599.37, 3676.54],
c1: [1836.85, 2599.37],
c2: [1298.27, 1836.85],
c3: [918.43, 1298.27],
c4: [649.13, 918.43],
c5: [459.21, 649.13],
c6: [323.15, 459.21],
c7: [229.61, 323.15],
c8: [161.57, 229.61],
c9: [113.39, 161.57],
c10: [79.37, 113.39],
dl: [311.81, 623.62],
letter: [612, 792],
"government-letter": [576, 756],
legal: [612, 1008],
"junior-legal": [576, 360],
ledger: [1224, 792],
tabloid: [792, 1224],
"credit-card": [153, 243]
};
return o.API = {events: []}, o.version = "1.2.61-bundler-ready 2016-05-24T11:29:13.019Z:simonbengtsson", "function" == typeof define && define.amd ? define("jsPDF", function () {return o}) : "undefined" != typeof module && module.exports ? module.exports = o : e.jsPDF = o, o
}("undefined" != typeof self && self || "undefined" != typeof window && window || this);
/**
* jsPDF AcroForm Plugin
* Copyright (c) 2016 Alexander Weidt, https://github.com/BiggA94
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
(window.AcroForm = function (t) {
var n = window.AcroForm;
n.scale = function (t) {return t * (r.internal.scaleFactor / 1)}, n.antiScale = function (t) {return 1 / r.internal.scaleFactor * t};
var r = {fields: [], xForms: [], acroFormDictionaryRoot: null, printedOut: !1, internal: null};
e.API.acroformPlugin = r;
var i = function () {
for (var t in this.acroformPlugin.acroFormDictionaryRoot.Fields) {
var e = this.acroformPlugin.acroFormDictionaryRoot.Fields[t];
e.hasAnnotation && a.call(this, e)
}
}, o = function () {
if (this.acroformPlugin.acroFormDictionaryRoot)throw new Error("Exception while creating AcroformDictionary");
this.acroformPlugin.acroFormDictionaryRoot = new n.AcroFormDictionary, this.acroformPlugin.internal = this.internal, this.acroformPlugin.acroFormDictionaryRoot._eventID = this.internal.events.subscribe("postPutResources", u), this.internal.events.subscribe("buildDocument", i), this.internal.events.subscribe("putCatalog", c), this.internal.events.subscribe("postPutPages", l)
}, a = function (t) {
var n = {type: "reference", object: t};
e.API.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push(n)
}, s = function (t) {this.acroformPlugin.printedOut && (this.acroformPlugin.printedOut = !1, this.acroformPlugin.acroFormDictionaryRoot = null), this.acroformPlugin.acroFormDictionaryRoot || o.call(this), this.acroformPlugin.acroFormDictionaryRoot.Fields.push(t)}, c = function () {"undefined" != typeof this.acroformPlugin.acroFormDictionaryRoot ? this.internal.write("/AcroForm " + this.acroformPlugin.acroFormDictionaryRoot.objId + " 0 R") : console.log("Root missing...")}, u = function () {this.internal.events.unsubscribe(this.acroformPlugin.acroFormDictionaryRoot._eventID), delete this.acroformPlugin.acroFormDictionaryRoot._eventID, this.acroformPlugin.printedOut = !0}, l = function (t) {
var e = !t;
t || (this.internal.newObjectDeferredBegin(this.acroformPlugin.acroFormDictionaryRoot.objId), this.internal.out(this.acroformPlugin.acroFormDictionaryRoot.getString()));
var t = t || this.acroformPlugin.acroFormDictionaryRoot.Kids;
for (var r in t) {
var i = t[r], o = i.Rect;
i.Rect && (i.Rect = n.internal.calculateCoordinates.call(this, i.Rect)), this.internal.newObjectDeferredBegin(i.objId);
var a = "";
if (a += i.objId + " 0 obj\n", a += "<<\n" + i.getContent(), i.Rect = o, i.hasAppearanceStream && !i.appearanceStreamContent) {
var s = n.internal.calculateAppearanceStream.call(this, i);
a += "/AP << /N " + s + " >>\n", this.acroformPlugin.xForms.push(s)
}
if (i.appearanceStreamContent) {
a += "/AP << ";
for (var c in i.appearanceStreamContent) {
var u = i.appearanceStreamContent[c];
if (a += "/" + c + " ", a += "<< ", Object.keys(u).length >= 1 || Array.isArray(u))for (var r in u) {
var l = u[r];
"function" == typeof l && (l = l.call(this, i)), a += "/" + r + " " + l + " ", this.acroformPlugin.xForms.indexOf(l) >= 0 || this.acroformPlugin.xForms.push(l)
} else {
var l = u;
"function" == typeof l && (l = l.call(this, i)), a += "/" + r + " " + l + " \n", this.acroformPlugin.xForms.indexOf(l) >= 0 || this.acroformPlugin.xForms.push(l)
}
a += " >>\n"
}
a += ">>\n"
}
a += ">>\nendobj\n", this.internal.out(a)
}
e && h.call(this, this.acroformPlugin.xForms)
}, h = function (t) {
for (var e in t) {
var n = e, r = t[e];
this.internal.newObjectDeferredBegin(r && r.objId);
var i = "";
i += r ? r.getString() : "", this.internal.out(i), delete t[n]
}
};
t.addField = function (t) {return t instanceof n.TextField ? d.call(this, t) : t instanceof n.ChoiceField ? p.call(this, t) : t instanceof n.Button ? f.call(this, t) : t instanceof n.ChildClass ? s.call(this, t) : t && s.call(this, t), this};
var f = function (t) {
var t = t || new n.Field;
t.FT = "/Btn";
var e = t.Ff || 0;
t.pushbutton && (e = n.internal.setBitPosition(e, 17), delete t.pushbutton), t.radio && (e = n.internal.setBitPosition(e, 16), delete t.radio), t.noToggleToOff && (e = n.internal.setBitPosition(e, 15)), t.Ff = e, s.call(this, t)
}, d = function (t) {
var t = t || new n.Field;
t.FT = "/Tx";
var e = t.Ff || 0;
t.multiline && (e = 4096 | e), t.password && (e = 8192 | e), t.fileSelect && (e |= 1 << 20), t.doNotSpellCheck && (e |= 1 << 22), t.doNotScroll && (e |= 1 << 23), t.Ff = t.Ff || e, s.call(this, t)
}, p = function (t) {
var e = t || new n.Field;
e.FT = "/Ch";
var r = e.Ff || 0;
e.combo && (r = n.internal.setBitPosition(r, 18), delete e.combo), e.edit && (r = n.internal.setBitPosition(r, 19), delete e.edit), e.sort && (r = n.internal.setBitPosition(r, 20), delete e.sort), e.multiSelect && this.internal.getPDFVersion() >= 1.4 && (r = n.internal.setBitPosition(r, 22), delete e.multiSelect), e.doNotSpellCheck && this.internal.getPDFVersion() >= 1.4 && (r = n.internal.setBitPosition(r, 23), delete e.doNotSpellCheck), e.Ff = r, s.call(this, e)
}
})(e.API);
var n = window.AcroForm;
n.internal = {}, n.createFormXObject = function (t) {
var e = new n.FormXObject, r = n.Appearance.internal.getHeight(t) || 0, i = n.Appearance.internal.getWidth(t) || 0;
return e.BBox = [0, 0, i, r], e
}, n.Appearance = {
CheckBox: {
createAppearanceStream: function () {
var t = {
N: {On: n.Appearance.CheckBox.YesNormal},
D: {On: n.Appearance.CheckBox.YesPushDown, Off: n.Appearance.CheckBox.OffPushDown}
};
return t
}, createMK: function () {return "<< /CA (3)>>"}, YesPushDown: function (t) {
var e = n.createFormXObject(t), r = "";
t.Q = 1;
var i = n.internal.calculateX(t, "3", "ZapfDingbats", 50);
return r += "0.749023 g\n 0 0 " + n.Appearance.internal.getWidth(t) + " " + n.Appearance.internal.getHeight(t) + " re\n f\n BMC\n q\n 0 0 1 rg\n /F13 " + i.fontSize + " Tf 0 g\n BT\n", r += i.text, r += "ET\n Q\n EMC\n", e.stream = r, e
}, YesNormal: function (t) {
var e = n.createFormXObject(t), r = "";
t.Q = 1;
var i = n.internal.calculateX(t, "3", "ZapfDingbats", .9 * n.Appearance.internal.getHeight(t));
return r += "1 g\n0 0 " + n.Appearance.internal.getWidth(t) + " " + n.Appearance.internal.getHeight(t) + " re\nf\nq\n0 0 1 rg\n0 0 " + (n.Appearance.internal.getWidth(t) - 1) + " " + (n.Appearance.internal.getHeight(t) - 1) + " re\nW\nn\n0 g\nBT\n/F13 " + i.fontSize + " Tf 0 g\n", r += i.text, r += "ET\n Q\n", e.stream = r, e
}, OffPushDown: function (t) {
var e = n.createFormXObject(t), r = "";
return r += "0.749023 g\n 0 0 " + n.Appearance.internal.getWidth(t) + " " + n.Appearance.internal.getHeight(t) + " re\n f\n", e.stream = r, e
}
},
RadioButton: {
Circle: {
createAppearanceStream: function (t) {
var e = {
D: {Off: n.Appearance.RadioButton.Circle.OffPushDown},
N: {}
};
return e.N[t] = n.Appearance.RadioButton.Circle.YesNormal, e.D[t] = n.Appearance.RadioButton.Circle.YesPushDown, e
},
createMK: function () {return "<< /CA (l)>>"},
YesNormal: function (t) {
var e = n.createFormXObject(t), r = "", i = n.Appearance.internal.getWidth(t) <= n.Appearance.internal.getHeight(t) ? n.Appearance.internal.getWidth(t) / 4 : n.Appearance.internal.getHeight(t) / 4;
i *= .9;
var o = n.Appearance.internal.Bezier_C;
return r += "q\n1 0 0 1 " + n.Appearance.internal.getWidth(t) / 2 + " " + n.Appearance.internal.getHeight(t) / 2 + " cm\n" + i + " 0 m\n" + i + " " + i * o + " " + i * o + " " + i + " 0 " + i + " c\n-" + i * o + " " + i + " -" + i + " " + i * o + " -" + i + " 0 c\n-" + i + " -" + i * o + " -" + i * o + " -" + i + " 0 -" + i + " c\n" + i * o + " -" + i + " " + i + " -" + i * o + " " + i + " 0 c\nf\nQ\n", e.stream = r, e
},
YesPushDown: function (t) {
var e = n.createFormXObject(t), r = "", i = n.Appearance.internal.getWidth(t) <= n.Appearance.internal.getHeight(t) ? n.Appearance.internal.getWidth(t) / 4 : n.Appearance.internal.getHeight(t) / 4;
i *= .9;
var o = n.Appearance.internal.Bezier_C;
return r += "0.749023 g\n q\n 1 0 0 1 " + n.Appearance.internal.getWidth(t) / 2 + " " + n.Appearance.internal.getHeight(t) / 2 + " cm\n" + 2 * i + " 0 m\n" + 2 * i + " " + 2 * i * o + " " + 2 * i * o + " " + 2 * i + " 0 " + 2 * i + " c\n-" + 2 * i * o + " " + 2 * i + " -" + 2 * i + " " + 2 * i * o + " -" + 2 * i + " 0 c\n-" + 2 * i + " -" + 2 * i * o + " -" + 2 * i * o + " -" + 2 * i + " 0 -" + 2 * i + " c\n" + 2 * i * o + " -" + 2 * i + " " + 2 * i + " -" + 2 * i * o + " " + 2 * i + " 0 c\n f\n Q\n 0 g\n q\n 1 0 0 1 " + n.Appearance.internal.getWidth(t) / 2 + " " + n.Appearance.internal.getHeight(t) / 2 + " cm\n" + i + " 0 m\n" + i + " " + i * o + " " + i * o + " " + i + " 0 " + i + " c\n-" + i * o + " " + i + " -" + i + " " + i * o + " -" + i + " 0 c\n-" + i + " -" + i * o + " -" + i * o + " -" + i + " 0 -" + i + " c\n" + i * o + " -" + i + " " + i + " -" + i * o + " " + i + " 0 c\n f\n Q\n", e.stream = r, e
},
OffPushDown: function (t) {
var e = n.createFormXObject(t), r = "", i = n.Appearance.internal.getWidth(t) <= n.Appearance.internal.getHeight(t) ? n.Appearance.internal.getWidth(t) / 4 : n.Appearance.internal.getHeight(t) / 4;
i *= .9;
var o = n.Appearance.internal.Bezier_C;
return r += "0.749023 g\n q\n 1 0 0 1 " + n.Appearance.internal.getWidth(t) / 2 + " " + n.Appearance.internal.getHeight(t) / 2 + " cm\n" + 2 * i + " 0 m\n" + 2 * i + " " + 2 * i * o + " " + 2 * i * o + " " + 2 * i + " 0 " + 2 * i + " c\n-" + 2 * i * o + " " + 2 * i + " -" + 2 * i + " " + 2 * i * o + " -" + 2 * i + " 0 c\n-" + 2 * i + " -" + 2 * i * o + " -" + 2 * i * o + " -" + 2 * i + " 0 -" + 2 * i + " c\n" + 2 * i * o + " -" + 2 * i + " " + 2 * i + " -" + 2 * i * o + " " + 2 * i + " 0 c\n f\n Q\n", e.stream = r, e
}
},
Cross: {
createAppearanceStream: function (t) {
var e = {
D: {Off: n.Appearance.RadioButton.Cross.OffPushDown},
N: {}
};
return e.N[t] = n.Appearance.RadioButton.Cross.YesNormal, e.D[t] = n.Appearance.RadioButton.Cross.YesPushDown, e
},
createMK: function () {return "<< /CA (8)>>"},
YesNormal: function (t) {
var e = n.createFormXObject(t), r = "", i = n.Appearance.internal.calculateCross(t);
return r += "q\n 1 1 " + (n.Appearance.internal.getWidth(t) - 2) + " " + (n.Appearance.internal.getHeight(t) - 2) + " re\n W\n n\n " + i.x1.x + " " + i.x1.y + " m\n " + i.x2.x + " " + i.x2.y + " l\n " + i.x4.x + " " + i.x4.y + " m\n " + i.x3.x + " " + i.x3.y + " l\n s\n Q\n", e.stream = r, e
},
YesPushDown: function (t) {
var e = n.createFormXObject(t), r = n.Appearance.internal.calculateCross(t), i = "";
return i += "0.749023 g\n 0 0 " + n.Appearance.internal.getWidth(t) + " " + n.Appearance.internal.getHeight(t) + " re\n f\n q\n 1 1 " + (n.Appearance.internal.getWidth(t) - 2) + " " + (n.Appearance.internal.getHeight(t) - 2) + " re\n W\n n\n " + r.x1.x + " " + r.x1.y + " m\n " + r.x2.x + " " + r.x2.y + " l\n " + r.x4.x + " " + r.x4.y + " m\n " + r.x3.x + " " + r.x3.y + " l\n s\n Q\n", e.stream = i, e
},
OffPushDown: function (t) {
var e = n.createFormXObject(t), r = "";
return r += "0.749023 g\n 0 0 " + n.Appearance.internal.getWidth(t) + " " + n.Appearance.internal.getHeight(t) + " re\n f\n", e.stream = r, e
}
}
},
createDefaultAppearanceStream: function (t) {
var e = "";
return e += "/Helv 12 Tf 0 g"
}
}, n.Appearance.internal = {
Bezier_C: .551915024494,
calculateCross: function (t) {
var e = function (t, e) {return t > e ? e : t}, r = n.Appearance.internal.getWidth(t), i = n.Appearance.internal.getHeight(t), o = e(r, i), a = {
x1: {
x: (r - o) / 2,
y: (i - o) / 2 + o
},
x2: {x: (r - o) / 2 + o, y: (i - o) / 2},
x3: {x: (r - o) / 2, y: (i - o) / 2},
x4: {x: (r - o) / 2 + o, y: (i - o) / 2 + o}
};
return a
}
}, n.Appearance.internal.getWidth = function (t) {return t.Rect[2]}, n.Appearance.internal.getHeight = function (t) {return t.Rect[3]}, n.internal.inherit = function (t, e) {
Object.create || function (t) {
var e = function () {};
return e.prototype = t, new e
};
t.prototype = Object.create(e.prototype), t.prototype.constructor = t
}, n.internal.arrayToPdfArray = function (t) {
if (Array.isArray(t)) {
var e = " [";
for (var n in t) {
var r = t[n].toString();
e += r, e += n < t.length - 1 ? " " : ""
}
return e += "]"
}
}, n.internal.toPdfString = function (t) {return t = t || "", 0 !== t.indexOf("(") && (t = "(" + t), ")" != t.substring(t.length - 1) && (t += "("), t}, n.PDFObject = function () {
var t;
Object.defineProperty(this, "objId", {
get: function () {return t || (this.internal ? t = this.internal.newObjectDeferred() : e.API.acroformPlugin.internal && (t = e.API.acroformPlugin.internal.newObjectDeferred())), t || console.log("Couldn't create Object ID"), t},
configurable: !1
})
}, n.PDFObject.prototype.toString = function () {return this.objId + " 0 R"}, n.PDFObject.prototype.getString = function () {
var t = this.objId + " 0 obj\n<<", e = this.getContent();
return t += e + ">>\n", this.stream && (t += "stream\n", t += this.stream, t += "endstream\n"), t += "endobj\n"
}, n.PDFObject.prototype.getContent = function () {
var t = function (t) {
var e = "", r = Object.keys(t).filter(function (t) {return "content" != t && "appearanceStreamContent" != t && "_" != t.substring(0, 1)});
for (var i in r) {
var o = r[i], a = t[o];
a && (e += Array.isArray(a) ? "/" + o + " " + n.internal.arrayToPdfArray(a) + "\n" : a instanceof n.PDFObject ? "/" + o + " " + a.objId + " 0 R\n" : "/" + o + " " + a + "\n")
}
return e
}, e = "";
return e += t(this)
}, n.FormXObject = function () {
n.PDFObject.call(this), this.Type = "/XObject", this.Subtype = "/Form", this.FormType = 1, this.BBox, this.Matrix, this.Resources = "2 0 R", this.PieceInfo;
var t;
Object.defineProperty(this, "Length", {
enumerable: !0,
get: function () {return void 0 !== t ? t.length : 0}
}), Object.defineProperty(this, "stream", {
enumerable: !1,
set: function (e) {t = e},
get: function () {return t ? t : null}
})
}, n.internal.inherit(n.FormXObject, n.PDFObject), n.AcroFormDictionary = function () {
n.PDFObject.call(this);
var t = [];
Object.defineProperty(this, "Kids", {
enumerable: !1,
configurable: !0,
get: function () {return t.length > 0 ? t : void 0}
}), Object.defineProperty(this, "Fields", {
enumerable: !0,
configurable: !0,
get: function () {return t}
}), this.DA
}, n.internal.inherit(n.AcroFormDictionary, n.PDFObject), n.Field = function () {
n.PDFObject.call(this);
var t;
Object.defineProperty(this, "Rect", {
enumerable: !0, configurable: !1, get: function () {
if (t) {
var e = t;
return e
}
}, set: function (e) {t = e}
});
var e = "";
Object.defineProperty(this, "FT", {enumerable: !0, set: function (t) {e = t}, get: function () {return e}});
var r;
Object.defineProperty(this, "T", {
enumerable: !0,
configurable: !1,
set: function (t) {r = t},
get: function () {
if (!r || r.length < 1) {
if (this instanceof n.ChildClass)return;
return "(FieldObject" + n.Field.FieldNum++ + ")"
}
return "(" == r.substring(0, 1) && r.substring(r.length - 1) ? r : "(" + r + ")"
}
});
var i;
Object.defineProperty(this, "DA", {
enumerable: !0,
get: function () {return i ? "(" + i + ")" : void 0},
set: function (t) {i = t}
});
var o;
Object.defineProperty(this, "DV", {
enumerable: !0,
configurable: !0,
get: function () {return o ? o : void 0},
set: function (t) {o = t}
}), Object.defineProperty(this, "Type", {
enumerable: !0,
get: function () {return this.hasAnnotation ? "/Annot" : null}
}), Object.defineProperty(this, "Subtype", {
enumerable: !0,
get: function () {return this.hasAnnotation ? "/Widget" : null}
}), this.BG, Object.defineProperty(this, "hasAnnotation", {
enumerable: !1,
get: function () {return !!(this.Rect || this.BC || this.BG)}
}), Object.defineProperty(this, "hasAppearanceStream", {enumerable: !1, configurable: !0, writable: !0})
}, n.Field.FieldNum = 0, n.internal.inherit(n.Field, n.PDFObject), n.ChoiceField = function () {
n.Field.call(this), this.FT = "/Ch", this.Opt = [], this.V = "()", this.TI = 0, this.combo = !1, Object.defineProperty(this, "edit", {
enumerable: !0,
set: function (t) {1 == t ? (this._edit = !0, this.combo = !0) : this._edit = !1},
get: function () {return this._edit ? this._edit : !1},
configurable: !1
}), this.hasAppearanceStream = !0, Object.defineProperty(this, "V", {get: function () {n.internal.toPdfString()}})
}, n.internal.inherit(n.ChoiceField, n.Field), window.ChoiceField = n.ChoiceField, n.ListBox = function () {n.ChoiceField.call(this)}, n.internal.inherit(n.ListBox, n.ChoiceField), window.ListBox = n.ListBox, n.ComboBox = function () {n.ListBox.call(this), this.combo = !0}, n.internal.inherit(n.ComboBox, n.ListBox), window.ComboBox = n.ComboBox, n.EditBox = function () {n.ComboBox.call(this), this.edit = !0}, n.internal.inherit(n.EditBox, n.ComboBox), window.EditBox = n.EditBox, n.Button = function () {n.Field.call(this), this.FT = "/Btn"}, n.internal.inherit(n.Button, n.Field), window.Button = n.Button, n.PushButton = function () {n.Button.call(this), this.pushbutton = !0}, n.internal.inherit(n.PushButton, n.Button), window.PushButton = n.PushButton, n.RadioButton = function () {
n.Button.call(this), this.radio = !0;
var t = [];
Object.defineProperty(this, "Kids", {
enumerable: !0,
get: function () {return t.length > 0 ? t : void 0}
}), Object.defineProperty(this, "__Kids", {get: function () {return t}});
var e;
Object.defineProperty(this, "noToggleToOff", {
enumerable: !1,
get: function () {return e},
set: function (t) {e = t}
})
}, n.internal.inherit(n.RadioButton, n.Button), window.RadioButton = n.RadioButton, n.ChildClass = function (t, e) {n.Field.call(this), this.Parent = t, this._AppearanceType = n.Appearance.RadioButton.Circle, this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(e), this.F = n.internal.setBitPosition(this.F, 3, 1), this.MK = this._AppearanceType.createMK(), this.AS = "/Off", this._Name = e}, n.internal.inherit(n.ChildClass, n.Field), n.RadioButton.prototype.setAppearance = function (t) {
if (!("createAppearanceStream" in t && "createMK" in t))return void console.log("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");
for (var e in this.__Kids) {
var n = this.__Kids[e];
n.appearanceStreamContent = t.createAppearanceStream(n._Name), n.MK = t.createMK()
}
}, n.RadioButton.prototype.createOption = function (t) {
var r = this, i = (this.__Kids.length, new n.ChildClass(r, t));
return this.__Kids.push(i), e.API.addField(i), i
}, n.CheckBox = function () {Button.call(this), this.appearanceStreamContent = n.Appearance.CheckBox.createAppearanceStream(), this.MK = n.Appearance.CheckBox.createMK(), this.AS = "/On", this.V = "/On"}, n.internal.inherit(n.CheckBox, n.Button), window.CheckBox = n.CheckBox, n.TextField = function () {
n.Field.call(this);
var t;
Object.defineProperty(this, "V", {
get: function () {return t ? "(" + t + ")" : t},
enumerable: !0,
set: function (e) {t = e}
});
var e;
Object.defineProperty(this, "DV", {
get: function () {return e ? "(" + e + ")" : e},
enumerable: !0,
set: function (t) {e = t}
});
var r = !1;
Object.defineProperty(this, "multiline", {
enumerable: !1,
get: function () {return r},
set: function (t) {r = t}
}), Object.defineProperty(this, "hasAppearanceStream", {
enumerable: !1,
get: function () {return this.V || this.DV}
})
}, n.internal.inherit(n.TextField, n.Field), window.TextField = n.TextField, n.PasswordField = function () {
TextField.call(this), Object.defineProperty(this, "password", {
value: !0,
enumerable: !1,
configurable: !1,
writable: !1
})
}, n.internal.inherit(n.PasswordField, n.TextField), window.PasswordField = n.PasswordField, n.internal.calculateFontSpace = function (t, e, r) {
var r = r || "helvetica", i = n.internal.calculateFontSpace.canvas || (n.internal.calculateFontSpace.canvas = document.createElement("canvas")), o = i.getContext("2d");
o.save();
var a = e + " " + r;
o.font = a;
var s = o.measureText(t);
o.fontcolor = "black";
var o = i.getContext("2d");
s.height = 1.5 * o.measureText("3").width, o.restore();
s.width;
return s
}, n.internal.calculateX = function (t, e, r, i) {
var i = i || 12, r = r || "helvetica", o = {
text: "",
fontSize: ""
};
e = "(" == e.substr(0, 1) ? e.substr(1) : e, e = ")" == e.substr(e.length - 1) ? e.substr(0, e.length - 1) : e;
var a = e.split(" "), s = i, c = 2, u = 2, l = n.Appearance.internal.getHeight(t) || 0;
l = 0 > l ? -l : l;
var h = n.Appearance.internal.getWidth(t) || 0;
h = 0 > h ? -h : h;
var f = function (t, e, i) {
if (t + 1 < a.length) {
var o = e + " " + a[t + 1], s = n.internal.calculateFontSpace(o, i + "px", r).width, c = h - 2 * u;
return c >= s
}
return !1
};
s++;
t:for (; ;) {
var e = "";
s--;
var d = n.internal.calculateFontSpace("3", s + "px", r).height, p = t.multiline ? l - s : (l - d) / 2;
p += c;
var m = -u, g = m, w = p, y = 0, v = 0, b = 0;
if (0 == s) {
s = 12, e = "(...) Tj\n", e += "% Width of Text: " + n.internal.calculateFontSpace(e, "1px").width + ", FieldWidth:" + h + "\n";
break
}
b = n.internal.calculateFontSpace(a[0] + " ", s + "px", r).width;
var x = "", k = 0;
for (var A in a) {
x += a[A] + " ", x = " " == x.substr(x.length - 1) ? x.substr(0, x.length - 1) : x;
var C = parseInt(A);
b = n.internal.calculateFontSpace(x + " ", s + "px", r).width;
var _ = f(C, x, s), q = A >= a.length - 1;
if (!_ || q) {
if (_ || q) {if (q)v = C; else if (t.multiline && (d + c) * (k + 2) + c > l)continue t} else {
if (!t.multiline)continue t;
if ((d + c) * (k + 2) + c > l)continue t;
v = C
}
for (var S = "", T = y; v >= T; T++)S += a[T] + " ";
switch (S = " " == S.substr(S.length - 1) ? S.substr(0, S.length - 1) : S, b = n.internal.calculateFontSpace(S, s + "px", r).width, t.Q) {
case 2:
m = h - b - u;
break;
case 1:
m = (h - b) / 2;
break;
case 0:
default:
m = u
}
e += m + " " + w + " Td\n", e += "(" + S + ") Tj\n", e += -m + " 0 Td\n", w = -(s + c), g = m, b = 0, y = v + 1, k++, x = ""
} else x += " "
}
break
}
return o.text = e, o.fontSize = s, o
}, n.internal.calculateAppearanceStream = function (t) {
if (t.appearanceStreamContent)return t.appearanceStreamContent;
if (t.V || t.DV) {
var e = "", r = t.V || t.DV, i = n.internal.calculateX(t, r);
e += "/Tx BMC\nq\n/F1 " + i.fontSize + " Tf\n1 0 0 1 0 0 Tm\n", e += "BT\n", e += i.text, e += "ET\n", e += "Q\nEMC\n";
var o = new n.createFormXObject(t);
o.stream = e;
return o
}
}, n.internal.calculateCoordinates = function (t, e, r, i) {
var o = {};
if (this.internal) {
var a = function (t) {return t * this.internal.scaleFactor};
Array.isArray(t) ? (t[0] = n.scale(t[0]), t[1] = n.scale(t[1]), t[2] = n.scale(t[2]), t[3] = n.scale(t[3]), o.lowerLeft_X = 0 | t[0], o.lowerLeft_Y = a.call(this, this.internal.pageSize.height) - t[3] - t[1] | 0, o.upperRight_X = t[0] + t[2] | 0, o.upperRight_Y = a.call(this, this.internal.pageSize.height) - t[1] | 0) : (t = n.scale(t), e = n.scale(e), r = n.scale(r), i = n.scale(i), o.lowerLeft_X = 0 | t, o.lowerLeft_Y = this.internal.pageSize.height - e | 0, o.upperRight_X = t + r | 0, o.upperRight_Y = this.internal.pageSize.height - e + i | 0)
} else Array.isArray(t) ? (o.lowerLeft_X = 0 | t[0], o.lowerLeft_Y = 0 | t[1], o.upperRight_X = t[0] + t[2] | 0, o.upperRight_Y = t[1] + t[3] | 0) : (o.lowerLeft_X = 0 | t, o.lowerLeft_Y = 0 | e, o.upperRight_X = t + r | 0, o.upperRight_Y = e + i | 0);
return [o.lowerLeft_X, o.lowerLeft_Y, o.upperRight_X, o.upperRight_Y]
}, n.internal.calculateColor = function (t, e, n) {
var r = new Array(3);
return r.r = 0 | t, r.g = 0 | e, r.b = 0 | n, r
}, n.internal.getBitPosition = function (t, e) {
t = t || 0;
var n = 1;
return n <<= e - 1, t | n
}, n.internal.setBitPosition = function (t, e, n) {
t = t || 0, n = n || 1;
var r = 1;
if (r <<= e - 1, 1 == n)var t = t | r; else var t = t & ~r;
return t
}, /**
* jsPDF addHTML PlugIn
* Copyright (c) 2014 Diego Casorran
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function (t) {
t.addHTML = function (t, e, n, r, i) {
if ("undefined" == typeof html2canvas && "undefined" == typeof rasterizeHTML)throw new Error("You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js");
"number" != typeof e && (r = e, i = n), "function" == typeof r && (i = r, r = null);
var o = this.internal, a = o.scaleFactor, s = o.pageSize.width, c = o.pageSize.height;
if (r = r || {}, r.onrendered = function (t) {
e = parseInt(e) || 0, n = parseInt(n) || 0;
var o = r.dim || {}, u = o.h || 0, l = o.w || Math.min(s, t.width / a) - e, h = "JPEG";
if (r.format && (h = r.format), t.height > c && r.pagesplit) {
var f = function () {
for (var r = 0; ;) {
var o = document.createElement("canvas");
o.width = Math.min(s * a, t.width), o.height = Math.min(c * a, t.height - r);
var u = o.getContext("2d");
u.drawImage(t, 0, r, t.width, o.height, 0, 0, o.width, o.height);
var f = [o, e, r ? 0 : n, o.width / a, o.height / a, h, null, "SLOW"];
if (this.addImage.apply(this, f), r += o.height, r >= t.height)break;
this.addPage()
}
i(l, r, null, f)
}.bind(this);
if ("CANVAS" === t.nodeName) {
var d = new Image;
d.onload = f, d.src = t.toDataURL("image/png"), t = d
} else f()
} else {
var p = Math.random().toString(35), m = [t, e, n, l, u, h, p, "SLOW"];
this.addImage.apply(this, m), i(l, u, p, m)
}
}.bind(this), "undefined" != typeof html2canvas && !r.rstz)return html2canvas(t, r);
if ("undefined" != typeof rasterizeHTML) {
var u = "drawDocument";
return "string" == typeof t && (u = /^http/.test(t) ? "drawURL" : "drawHTML"), r.width = r.width || s * a, rasterizeHTML[u](t, void 0, r).then(function (t) {r.onrendered(t.image)}, function (t) {i(null, t)})
}
return null
}
}(e.API), function (e) {
var n = "addImage_", r = ["jpeg", "jpg", "png"], i = function k(t) {
var e = this.internal.newObject(), n = this.internal.write, r = this.internal.putStream;
if (t.n = e, n("<</Type /XObject"), n("/Subtype /Image"), n("/Width " + t.w), n("/Height " + t.h), t.cs === this.color_spaces.INDEXED ? n("/ColorSpace [/Indexed /DeviceRGB " + (t.pal.length / 3 - 1) + " " + ("smask" in t ? e + 2 : e + 1) + " 0 R]") : (n("/ColorSpace /" + t.cs), t.cs === this.color_spaces.DEVICE_CMYK && n("/Decode [1 0 1 0 1 0 1 0]")), n("/BitsPerComponent " + t.bpc), "f" in t && n("/Filter /" + t.f), "dp" in t && n("/DecodeParms <<" + t.dp + ">>"), "trns" in t && t.trns.constructor == Array) {
for (var i = "", o = 0, a = t.trns.length; a > o; o++)i += t.trns[o] + " " + t.trns[o] + " ";
n("/Mask [" + i + "]")
}
if ("smask" in t && n("/SMask " + (e + 1) + " 0 R"), n("/Length " + t.data.length + ">>"), r(t.data), n("endobj"), "smask" in t) {
var s = "/Predictor 15 /Colors 1 /BitsPerComponent " + t.bpc + " /Columns " + t.w, c = {
w: t.w,
h: t.h,
cs: "DeviceGray",
bpc: t.bpc,
dp: s,
data: t.smask
};
"f" in t && (c.f = t.f), k.call(this, c)
}
t.cs === this.color_spaces.INDEXED && (this.internal.newObject(), n("<< /Length " + t.pal.length + ">>"), r(this.arrayBufferToBinaryString(new Uint8Array(t.pal))), n("endobj"))
}, o = function () {
var t = this.internal.collections[n + "images"];
for (var e in t)i.call(this, t[e])
}, a = function () {
var t, e = this.internal.collections[n + "images"], r = this.internal.write;
for (var i in e)t = e[i], r("/I" + t.i, t.n, "0", "R")
}, s = function (t) {return t && "string" == typeof t && (t = t.toUpperCase()), t in e.image_compression ? t : e.image_compression.NONE}, c = function () {
var t = this.internal.collections[n + "images"];
return t || (this.internal.collections[n + "images"] = t = {}, this.internal.events.subscribe("putResources", o), this.internal.events.subscribe("putXobjectDict", a)), t
}, u = function (t) {
var e = 0;
return t && (e = Object.keys ? Object.keys(t).length : function (t) {
var e = 0;
for (var n in t)t.hasOwnProperty(n) && e++;
return e
}(t)), e
}, l = function (t) {return "undefined" == typeof t || null === t}, h = function (t) {return "string" == typeof t && e.sHashCode(t)}, f = function (t) {return -1 === r.indexOf(t)}, d = function (t) {return "function" != typeof e["process" + t.toUpperCase()]}, p = function (e) {return "object" === ("undefined" == typeof e ? "undefined" : t["typeof"](e)) && 1 === e.nodeType}, m = function (e, n, r) {
if ("IMG" === e.nodeName && e.hasAttribute("src")) {
var i = "" + e.getAttribute("src");
if (!r && 0 === i.indexOf("data:image/"))return i;
!n && /\.png(?:[?#].*)?$/i.test(i) && (n = "png")
}
if ("CANVAS" === e.nodeName)var o = e; else {
var o = document.createElement("canvas");
o.width = e.clientWidth || e.width, o.height = e.clientHeight || e.height;
var a = o.getContext("2d");
if (!a)throw"addImage requires canvas to be supported by browser.";
if (r) {
var s, c, u, l, h, f, d, p, m = Math.PI / 180;
"object" === ("undefined" == typeof r ? "undefined" : t["typeof"](r)) && (s = r.x, c = r.y, u = r.bg, r = r.angle), p = r * m, l = Math.abs(Math.cos(p)), h = Math.abs(Math.sin(p)), f = o.width, d = o.height, o.width = d * h + f * l, o.height = d * l + f * h, isNaN(s) && (s = o.width / 2), isNaN(c) && (c = o.height / 2), a.clearRect(0, 0, o.width, o.height), a.fillStyle = u || "white", a.fillRect(0, 0, o.width, o.height), a.save(), a.translate(s, c), a.rotate(p), a.drawImage(e, -(f / 2), -(d / 2)), a.rotate(-p), a.translate(-s, -c), a.restore()
} else a.drawImage(e, 0, 0, o.width, o.height)
}
return o.toDataURL("png" == ("" + n).toLowerCase() ? "image/png" : "image/jpeg")
}, g = function (t, e) {
var n;
if (e)for (var r in e)if (t === e[r].alias) {
n = e[r];
break
}
return n
}, w = function (t, e, n) {return t || e || (t = -96, e = -96), 0 > t && (t = -1 * n.w * 72 / t / this.internal.scaleFactor), 0 > e && (e = -1 * n.h * 72 / e / this.internal.scaleFactor), 0 === t && (t = e * n.w / n.h), 0 === e && (e = t * n.h / n.w), [t, e]}, y = function (t, e, n, r, i, o, a) {
var s = w.call(this, n, r, i), c = this.internal.getCoordinateString, u = this.internal.getVerticalCoordinateString;
n = s[0], r = s[1], a[o] = i, this.internal.write("q", c(n), "0 0", c(r), c(t), u(e + r), "cm /I" + i.i, "Do Q")
};
e.color_spaces = {
DEVICE_RGB: "DeviceRGB",
DEVICE_GRAY: "DeviceGray",
DEVICE_CMYK: "DeviceCMYK",
CAL_GREY: "CalGray",
CAL_RGB: "CalRGB",
LAB: "Lab",
ICC_BASED: "ICCBased",
INDEXED: "Indexed",
PATTERN: "Pattern",
SEPERATION: "Seperation",
DEVICE_N: "DeviceN"
}, e.decode = {
DCT_DECODE: "DCTDecode",
FLATE_DECODE: "FlateDecode",
LZW_DECODE: "LZWDecode",
JPX_DECODE: "JPXDecode",
JBIG2_DECODE: "JBIG2Decode",
ASCII85_DECODE: "ASCII85Decode",
ASCII_HEX_DECODE: "ASCIIHexDecode",
RUN_LENGTH_DECODE: "RunLengthDecode",
CCITT_FAX_DECODE: "CCITTFaxDecode"
}, e.image_compression = {
NONE: "NONE",
FAST: "FAST",
MEDIUM: "MEDIUM",
SLOW: "SLOW"
}, e.sHashCode = function (t) {return Array.prototype.reduce && t.split("").reduce(function (t, e) {return t = (t << 5) - t + e.charCodeAt(0), t & t}, 0)}, e.isString = function (t) {return "string" == typeof t}, e.extractInfoFromBase64DataURI = function (t) {return /^data:([\w]+?\/([\w]+?));base64,(.+?)$/g.exec(t)}, e.supportsArrayBuffer = function () {return "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array}, e.isArrayBuffer = function (t) {return this.supportsArrayBuffer() ? t instanceof ArrayBuffer : !1}, e.isArrayBufferView = function (t) {return this.supportsArrayBuffer() ? "undefined" == typeof Uint32Array ? !1 : t instanceof Int8Array || t instanceof Uint8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array : !1}, e.binaryStringToUint8Array = function (t) {
for (var e = t.length, n = new Uint8Array(e), r = 0; e > r; r++)n[r] = t.charCodeAt(r);
return n
}, e.arrayBufferToBinaryString = function (t) {
if ("TextDecoder" in window) {
var e = new TextDecoder("ascii");
return e.decode(t)
}
this.isArrayBuffer(t) && (t = new Uint8Array(t));
for (var n = "", r = t.byteLength, i = 0; r > i; i++)n += String.fromCharCode(t[i]);
return n
}, e.arrayBufferToBase64 = function (t) {
for (var e, n, r, i, o, a = "", s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", c = new Uint8Array(t), u = c.byteLength, l = u % 3, h = u - l, f = 0; h > f; f += 3)o = c[f] << 16 | c[f + 1] << 8 | c[f + 2], e = (16515072 & o) >> 18, n = (258048 & o) >> 12, r = (4032 & o) >> 6, i = 63 & o, a += s[e] + s[n] + s[r] + s[i];
return 1 == l ? (o = c[h], e = (252 & o) >> 2, n = (3 & o) << 4, a += s[e] + s[n] + "==") : 2 == l && (o = c[h] << 8 | c[h + 1], e = (64512 & o) >> 10, n = (1008 & o) >> 4, r = (15 & o) << 2, a += s[e] + s[n] + s[r] + "="), a
}, e.createImageInfo = function (t, e, n, r, i, o, a, s, c, u, l, h) {
var f = {
alias: s,
w: e,
h: n,
cs: r,
bpc: i,
i: a,
data: t
};
return o && (f.f = o), c && (f.dp = c), u && (f.trns = u), l && (f.pal = l), h && (f.smask = h), f
}, e.addImage = function (e, n, i, o, a, w, v, b, x) {
if ("string" != typeof n) {
var k = w;
w = a, a = o, o = i, i = n, n = k
}
if ("object" === ("undefined" == typeof e ? "undefined" : t["typeof"](e)) && !p(e) && "imageData" in e) {
var A = e;
e = A.imageData, n = A.format || n, i = A.x || i || 0, o = A.y || o || 0, a = A.w || a, w = A.h || w, v = A.alias || v, b = A.compression || b, x = A.rotation || A.angle || x
}
if (isNaN(i) || isNaN(o))throw console.error("jsPDF.addImage: Invalid coordinates", arguments), new Error("Invalid coordinates passed to jsPDF.addImage");
var C, _ = c.call(this);
if (!(C = g(e, _))) {
var q;
if (p(e) && (e = m(e, n, x)), l(v) && (v = h(e)), !(C = g(v, _))) {
if (this.isString(e)) {
var S = this.extractInfoFromBase64DataURI(e);
S ? (n = S[2], e = atob(S[3])) : 137 === e.charCodeAt(0) && 80 === e.charCodeAt(1) && 78 === e.charCodeAt(2) && 71 === e.charCodeAt(3) && (n = "png")
}
if (n = (n || "JPEG").toLowerCase(), f(n))throw new Error("addImage currently only supports formats " + r + ", not '" + n + "'");
if (d(n))throw new Error("please ensure that the plugin for '" + n + "' support is added");
if (this.supportsArrayBuffer() && (e instanceof Uint8Array || (q = e, e = this.binaryStringToUint8Array(e))), C = this["process" + n.toUpperCase()](e, u(_), v, s(b), q), !C)throw new Error("An unkwown error occurred whilst processing the image")
}
}
return y.call(this, i, o, a, w, C, C.i, _), this
};
var v = function (t) {
var e, n, r;
if (255 === !t.charCodeAt(0) || 216 === !t.charCodeAt(1) || 255 === !t.charCodeAt(2) || 224 === !t.charCodeAt(3) || !t.charCodeAt(6) === "J".charCodeAt(0) || !t.charCodeAt(7) === "F".charCodeAt(0) || !t.charCodeAt(8) === "I".charCodeAt(0) || !t.charCodeAt(9) === "F".charCodeAt(0) || 0 === !t.charCodeAt(10))throw new Error("getJpegSize requires a binary string jpeg file");
for (var i = 256 * t.charCodeAt(4) + t.charCodeAt(5), o = 4, a = t.length; a > o;) {
if (o += i, 255 !== t.charCodeAt(o))throw new Error("getJpegSize could not find the size of the image");
if (192 === t.charCodeAt(o + 1) || 193 === t.charCodeAt(o + 1) || 194 === t.charCodeAt(o + 1) || 195 === t.charCodeAt(o + 1) || 196 === t.charCodeAt(o + 1) || 197 === t.charCodeAt(o + 1) || 198 === t.charCodeAt(o + 1) || 199 === t.charCodeAt(o + 1))return n = 256 * t.charCodeAt(o + 5) + t.charCodeAt(o + 6), e = 256 * t.charCodeAt(o + 7) + t.charCodeAt(o + 8), r = t.charCodeAt(o + 9), [e, n, r];
o += 2, i = 256 * t.charCodeAt(o) + t.charCodeAt(o + 1)
}
}, b = function (t) {
var e = t[0] << 8 | t[1];
if (65496 !== e)throw new Error("Supplied data is not a JPEG");
for (var n, r, i, o, a = t.length, s = (t[4] << 8) + t[5], c = 4; a > c;) {
if (c += s, n = x(t, c), s = (n[2] << 8) + n[3], (192 === n[1] || 194 === n[1]) && 255 === n[0] && s > 7)return n = x(t, c + 5), r = (n[2] << 8) + n[3], i = (n[0] << 8) + n[1], o = n[4], {
width: r,
height: i,
numcomponents: o
};
c += 2
}
throw new Error("getJpegSizeFromBytes could not find the size of the image")
}, x = function (t, e) {return t.subarray(e, e + 5)};
e.processJPEG = function (t, e, n, r, i) {
var o, a = this.color_spaces.DEVICE_RGB, s = this.decode.DCT_DECODE, c = 8;
return this.isString(t) ? (o = v(t), this.createImageInfo(t, o[0], o[1], 1 == o[3] ? this.color_spaces.DEVICE_GRAY : a, c, s, e, n)) : (this.isArrayBuffer(t) && (t = new Uint8Array(t)), this.isArrayBufferView(t) ? (o = b(t), t = i || this.arrayBufferToBinaryString(t), this.createImageInfo(t, o.width, o.height, 1 == o.numcomponents ? this.color_spaces.DEVICE_GRAY : a, c, s, e, n)) : null)
}, e.processJPG = function () {return this.processJPEG.apply(this, arguments)}
}(e.API), /**
* jsPDF Annotations PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function (t) {
var n = {
annotations: [],
f2: function (t) {return t.toFixed(2)},
notEmpty: function (t) {return "undefined" != typeof t && "" != t ? !0 : void 0}
};
return e.API.annotationPlugin = n, e.API.events.push(["addPage", function (t) {this.annotationPlugin.annotations[t.pageNumber] = []}]), t.events.push(["putPage", function (t) {
for (var e = this.annotationPlugin.annotations[t.pageNumber], r = !1, i = 0; i < e.length && !r; i++) {
var o = e[i];
switch (o.type) {
case"link":
if (n.notEmpty(o.options.url) || n.notEmpty(o.options.pageNumber)) {
r = !0;
break
}
case"reference":
case"text":
case"freetext":
r = !0
}
}
if (0 != r) {
this.internal.write("/Annots [");
for (var a = this.annotationPlugin.f2, s = this.internal.scaleFactor, c = this.internal.pageSize.height, u = this.internal.getPageInfo(t.pageNumber), i = 0; i < e.length; i++) {
var o = e[i];
switch (o.type) {
case"reference":
this.internal.write(" " + o.object.objId + " 0 R ");
break;
case"text":
var l = this.internal.newAdditionalObject(), h = this.internal.newAdditionalObject(), f = o.title || "Note", d = "/Rect [" + a(o.bounds.x * s) + " " + a(c - (o.bounds.y + o.bounds.h) * s) + " " + a((o.bounds.x + o.bounds.w) * s) + " " + a((c - o.bounds.y) * s) + "] ";
y = "<</Type /Annot /Subtype /Text " + d + "/Contents (" + o.contents + ")", y += " /Popup " + h.objId + " 0 R", y += " /P " + u.objId + " 0 R", y += " /T (" + f + ") >>", l.content = y;
var p = l.objId + " 0 R", m = 30, d = "/Rect [" + a((o.bounds.x + m) * s) + " " + a(c - (o.bounds.y + o.bounds.h) * s) + " " + a((o.bounds.x + o.bounds.w + m) * s) + " " + a((c - o.bounds.y) * s) + "] ";
y = "<</Type /Annot /Subtype /Popup " + d + " /Parent " + p, o.open && (y += " /Open true"), y += " >>", h.content = y, this.internal.write(l.objId, "0 R", h.objId, "0 R");
break;
case"freetext":
var d = "/Rect [" + a(o.bounds.x * s) + " " + a((c - o.bounds.y) * s) + " " + a(o.bounds.x + o.bounds.w * s) + " " + a(c - (o.bounds.y + o.bounds.h) * s) + "] ", g = o.color || "#000000";
y = "<</Type /Annot /Subtype /FreeText " + d + "/Contents (" + o.contents + ")", y += " /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#" + g + ")", y += " /Border [0 0 0]", y += " >>", this.internal.write(y);
break;
case"link":
if (o.options.name) {
var w = this.annotations._nameMap[o.options.name];
o.options.pageNumber = w.page, o.options.top = w.y
} else o.options.top || (o.options.top = 0);
var d = "/Rect [" + a(o.x * s) + " " + a((c - o.y) * s) + " " + a(o.x + o.w * s) + " " + a(c - (o.y + o.h) * s) + "] ", y = "";
if (o.options.url)y = "<</Type /Annot /Subtype /Link " + d + "/Border [0 0 0] /A <</S /URI /URI (" + o.options.url + ") >>"; else if (o.options.pageNumber) {
var t = this.internal.getPageInfo(o.options.pageNumber);
switch (y = "<</Type /Annot /Subtype /Link " + d + "/Border [0 0 0] /Dest [" + t.objId + " 0 R", o.options.magFactor = o.options.magFactor || "XYZ", o.options.magFactor) {
case"Fit":
y += " /Fit]";
break;
case"FitH":
y += " /FitH " + o.options.top + "]";
break;
case"FitV":
o.options.left = o.options.left || 0, y += " /FitV " + o.options.left + "]";
break;
case"XYZ":
default:
var v = a((c - o.options.top) * s);
o.options.left = o.options.left || 0, "undefined" == typeof o.options.zoom && (o.options.zoom = 0), y += " /XYZ " + o.options.left + " " + v + " " + o.options.zoom + "]"
}
}
"" != y && (y += " >>", this.internal.write(y))
}
}
this.internal.write("]")
}
}]), t.createAnnotation = function (t) {
switch (t.type) {
case"link":
this.link(t.bounds.x, t.bounds.y, t.bounds.w, t.bounds.h, t);
break;
case"text":
case"freetext":
this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push(t)
}
}, t.link = function (t, e, n, r, i) {
this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push({
x: t,
y: e,
w: n,
h: r,
options: i,
type: "link"
})
}, t.link = function (t, e, n, r, i) {
this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push({
x: t,
y: e,
w: n,
h: r,
options: i,
type: "link"
})
}, t.textWithLink = function (t, e, n, r) {
var i = this.getTextWidth(t), o = this.internal.getLineHeight();
return this.text(t, e, n), n += .2 * o, this.link(e, n - o, i, o, r), i
}, t.getTextWidth = function (t) {
var e = this.internal.getFontSize(), n = this.getStringUnitWidth(t) * e / this.internal.scaleFactor;
return n
}, t.getLineHeight = function () {return this.internal.getLineHeight()}, this
}(e.API), function (t) {
t.autoPrint = function () {
var t;
return this.internal.events.subscribe("postPutResources", function () {t = this.internal.newObject(), this.internal.write("<< /S/Named /Type/Action /N/Print >>", "endobj")}), this.internal.events.subscribe("putCatalog", function () {this.internal.write("/OpenAction " + t + " 0 R")}), this
}
}(e.API), /**
* jsPDF Canvas PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function (t) {
return t.events.push(["initialized", function () {this.canvas.pdf = this}]), t.canvas = {
getContext: function (t) {return this.pdf.context2d},
style: {}
}, Object.defineProperty(t.canvas, "width", {
get: function () {return this._width},
set: function (t) {this._width = t, this.getContext("2d").pageWrapX = t + 1}
}), Object.defineProperty(t.canvas, "height", {
get: function () {return this._height},
set: function (t) {this._height = t, this.getContext("2d").pageWrapY = t + 1}
}), this
}(e.API), /** ====================================================================
* jsPDF Cell plugin
* Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com
* 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br
* 2013 Lee Driscoll, https://github.com/lsdriscoll
* 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
* 2014 James Hall, james@parall.ax
* 2014 Diego Casorran, https://github.com/diegocr
*
*
* ====================================================================
*/
function (t) {
var e, n, r, i, o = 3, a = 13, s = {
x: void 0,
y: void 0,
w: void 0,
h: void 0,
ln: void 0
}, c = 1, u = function (t, e, n, r, i) {
s = {
x: t,
y: e,
w: n,
h: r,
ln: i
}
}, l = function () {return s}, h = {left: 0, top: 0, bottom: 0};
t.setHeaderFunction = function (t) {i = t}, t.getTextDimensions = function (t) {
e = this.internal.getFont().fontName, n = this.table_font_size || this.internal.getFontSize(), r = this.internal.getFont().fontStyle;
var i, o, a = 19.049976 / 25.4;
o = document.createElement("font"), o.id = "jsPDFCell";
try {o.style.fontStyle = r} catch (s) {o.style.fontWeight = r}
o.style.fontName = e, o.style.fontSize = n + "pt";
try {o.textContent = t} catch (s) {o.innerText = t}
return document.body.appendChild(o), i = {
w: (o.offsetWidth + 1) * a,
h: (o.offsetHeight + 1) * a
}, document.body.removeChild(o), i
}, t.cellAddPage = function () {
var t = this.margins || h;
this.addPage(), u(t.left, t.top, void 0, void 0), c += 1
}, t.cellInitialize = function () {
s = {
x: void 0,
y: void 0,
w: void 0,
h: void 0,
ln: void 0
}, c = 1
}, t.cell = function (t, e, n, r, i, s, c) {
var f = l(), d = !1;
if (void 0 !== f.ln)if (f.ln === s)t = f.x + f.w, e = f.y; else {
var p = this.margins || h;
f.y + f.h + r + a >= this.internal.pageSize.height - p.bottom && (this.cellAddPage(), d = !0, this.printHeaders && this.tableHeaderRow && this.printHeaderRow(s, !0)), e = l().y + l().h, d && (e = a + 10)
}
if (void 0 !== i[0])if (this.printingHeaderRow ? this.rect(t, e, n, r, "FD") : this.rect(t, e, n, r), "right" === c) {
i instanceof Array || (i = [i]);
for (var m = 0; m < i.length; m++) {
var g = i[m], w = this.getStringUnitWidth(g) * this.internal.getFontSize();
this.text(g, t + n - w - o, e + this.internal.getLineHeight() * (m + 1))
}
} else this.text(i, t + o, e + this.internal.getLineHeight());
return u(t, e, n, r, s), this
}, t.arrayMax = function (t, e) {
var n, r, i, o = t[0];
for (n = 0, r = t.length; r > n; n += 1)i = t[n], e ? -1 === e(o, i) && (o = i) : i > o && (o = i);
return o
}, t.table = function (e, n, r, i, o) {
if (!r)throw"No data for PDF table";
var a, u, l, f, d, p, m, g, w, y, v = [], b = [], x = {}, k = {}, A = [], C = [], _ = !1, q = !0, S = 12, T = h;
if (T.width = this.internal.pageSize.width, o && (o.autoSize === !0 && (_ = !0), o.printHeaders === !1 && (q = !1), o.fontSize && (S = o.fontSize), o.css["font-size"] && (S = 16 * o.css["font-size"]), o.margins && (T = o.margins)), this.lnMod = 0, s = {
x: void 0,
y: void 0,
w: void 0,
h: void 0,
ln: void 0
}, c = 1, this.printHeaders = q, this.margins = T, this.setFontSize(S), this.table_font_size = S, void 0 === i || null === i)v = Object.keys(r[0]); else if (i[0] && "string" != typeof i[0]) {
var E = 19.049976 / 25.4;
for (u = 0, l = i.length; l > u; u += 1)a = i[u], v.push(a.name), b.push(a.prompt), k[a.name] = a.width * E
} else v = i;
if (_)for (y = function (t) {return t[a]}, u = 0, l = v.length; l > u; u += 1) {
for (a = v[u], x[a] = r.map(y), A.push(this.getTextDimensions(b[u] || a).w), p = x[a], m = 0, f = p.length; f > m; m += 1)d = p[m], A.push(this.getTextDimensions(d).w);
k[a] = t.arrayMax(A), A = []
}
if (q) {
var P = this.calculateLineHeight(v, k, b.length ? b : v);
for (u = 0, l = v.length; l > u; u += 1)a = v[u], C.push([e, n, k[a], P, String(b.length ? b[u] : a)]);
this.setTableHeaderRow(C), this.printHeaderRow(1, !1)
}
for (u = 0, l = r.length; l > u; u += 1) {
var P;
for (g = r[u], P = this.calculateLineHeight(v, k, g), m = 0, w = v.length; w > m; m += 1)a = v[m], this.cell(e, n, k[a], P, g[a], u + 2, a.align)
}
return this.lastCellPos = s, this.table_x = e, this.table_y = n, this
}, t.calculateLineHeight = function (t, e, n) {
for (var r, i = 0, a = 0; a < t.length; a++) {
r = t[a], n[r] = this.splitTextToSize(String(n[r]), e[r] - o);
var s = this.internal.getLineHeight() * n[r].length + o;
s > i && (i = s)
}
return i
}, t.setTableHeaderRow = function (t) {this.tableHeaderRow = t}, t.printHeaderRow = function (t, e) {
if (!this.tableHeaderRow)throw"Property tableHeaderRow does not exist.";
var n, r, o, s;
if (this.printingHeaderRow = !0, void 0 !== i) {
var l = i(this, c);
u(l[0], l[1], l[2], l[3], -1)
}
this.setFontStyle("bold");
var h = [];
for (o = 0, s = this.tableHeaderRow.length; s > o; o += 1)this.setFillColor(200, 200, 200), n = this.tableHeaderRow[o], e && (this.margins.top = a, n[1] = this.margins && this.margins.top || 0, h.push(n)), r = [].concat(n), this.cell.apply(this, r.concat(t));
h.length > 0 && this.setTableHeaderRow(h), this.setFontStyle("normal"), this.printingHeaderRow = !1
}
}(e.API), /**
* jsPDF Context2D PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function (t) {
function e() {
this.fillStyle = "#000000", this.strokeStyle = "#000000", this.font = "12pt times", this.textBaseline = "alphabetic", this.lineWidth = 1, this.lineJoin = "miter", this.lineCap = "butt", this._translate = {
x: 0,
y: 0
}, this.copy = function (t) {
this.fillStyle = t.fillStyle, this.strokeStyle = t.strokeStyle, this.font = t.font, this.lineWidth = t.lineWidth, this.lineJoin = t.lineJoin, this.lineCap = t.lineCap, this.textBaseline = t.textBaseline, this._fontSize = t._fontSize, this._translate = {
x: t._translate.x,
y: t._translate.y
}
}
}
t.events.push(["initialized", function () {this.context2d.pdf = this, this.context2d.internal.pdf = this, this.context2d.ctx = new e, this.context2d.ctxStack = [], this.context2d.path = []}]), t.context2d = {
pageWrapXEnabled: !1,
pageWrapYEnabled: !0,
pageWrapX: 9999999,
pageWrapY: 9999999,
f2: function (t) {return t.toFixed(2)},
fillRect: function (t, e, n, r) {t = this._wrapX(t), e = this._wrapY(e), this.pdf.rect(t, e, n, r, "f")},
strokeRect: function (t, e, n, r) {t = this._wrapX(t), e = this._wrapY(e), this.pdf.rect(t, e, n, r, "s")},
clearRect: function (t, e, n, r) {t = this._wrapX(t), e = this._wrapY(e), this.save(), this.setFillStyle("#ffffff"), this.pdf.rect(t, e, n, r, "f"), this.restore()},
save: function () {
this.ctx._fontSize = this.pdf.internal.getFontSize();
var t = new e;
t.copy(this.ctx), this.ctxStack.push(this.ctx), this.ctx = t
},
restore: function () {this.ctx = this.ctxStack.pop(), this.setFillStyle(this.ctx.fillStyle), this.setStrokeStyle(this.ctx.strokeStyle), this.setFont(this.ctx.font), this.pdf.setFontSize(this.ctx._fontSize), this.setLineCap(this.ctx.lineCap), this.setLineWidth(this.ctx.lineWidth), this.setLineJoin(this.ctx.lineJoin)},
beginPath: function () {this.path = []},
closePath: function () {this.path.push({type: "close"})},
setFillStyle: function (t) {
var e, n, r, i, a = this.internal.rxRgb.exec(t);
null != a ? (e = parseInt(a[1]), n = parseInt(a[2]), r = parseInt(a[3])) : (a = this.internal.rxRgba.exec(t), null != a ? (e = parseInt(a[1]), n = parseInt(a[2]), r = parseInt(a[3]), i = parseInt(a[4])) : ("#" != t.charAt(0) && (t = o.colorNameToHex(t), t || (t = "#000000")), this.ctx.fillStyle = t, 4 === t.length ? (e = this.ctx.fillStyle.substring(1, 2), e += e, n = this.ctx.fillStyle.substring(2, 3), n += n, r = this.ctx.fillStyle.substring(3, 4), r += r) : (e = this.ctx.fillStyle.substring(1, 3), n = this.ctx.fillStyle.substring(3, 5), r = this.ctx.fillStyle.substring(5, 7)), e = parseInt(e, 16), n = parseInt(n, 16), r = parseInt(r, 16))), this.pdf.setFillColor(e, n, r, {a: i}), this.pdf.setTextColor(e, n, r, {a: i})
},
setStrokeStyle: function (t) {
"#" != t.charAt(0) && (t = o.colorNameToHex(t), t || (t = "#000000")), this.ctx.strokeStyle = t;
var e = this.ctx.strokeStyle.substring(1, 3);
e = parseInt(e, 16);
var n = this.ctx.strokeStyle.substring(3, 5);
n = parseInt(n, 16);
var r = this.ctx.strokeStyle.substring(5, 7);
r = parseInt(r, 16), this.pdf.setDrawColor(e, n, r)
},
fillText: function (t, e, n, r) {e = this._wrapX(e), n = this._wrapY(n), this.pdf.text(t, e, this._getBaseline(n))},
strokeText: function (t, e, n, r) {e = this._wrapX(e), n = this._wrapY(n), this.pdf.text(t, e, this._getBaseline(n), {stroke: !0})},
setFont: function (t) {
this.ctx.font = t;
var e = /\s*(\w+)\s+(\w+)\s+(\w+)\s+([\d\.]+)(px|pt|em)\s+["']?(\w+)['"]?/;
if (c = e.exec(t), null != c) {
var n = c[1], r = (c[2], c[3]), i = c[4], o = c[5], a = c[6];
i = "px" === o ? Math.floor(parseFloat(i)) : "em" === o ? Math.floor(parseFloat(i) * this.pdf.getFontSize()) : Math.floor(parseFloat(i)), this.pdf.setFontSize(i), "bold" === r || "700" === r ? this.pdf.setFontStyle("bold") : "italic" === n ? this.pdf.setFontStyle("italic") : this.pdf.setFontStyle("normal");
var s = a;
this.pdf.setFont(s, l)
} else {
var e = /(\d+)(pt|px|em)\s+(\w+)\s*(\w+)?/, c = e.exec(t);
if (null != c) {
var u = c[1], s = (c[2], c[3]), l = c[4];
l || (l = "normal"), u = "em" === o ? Math.floor(parseFloat(i) * this.pdf.getFontSize()) : Math.floor(parseFloat(u)), this.pdf.setFontSize(u), this.pdf.setFont(s, l)
}
}
},
setTextBaseline: function (t) {this.ctx.textBaseline = t},
getTextBaseline: function () {return this.ctx.textBaseline},
setLineWidth: function (t) {this.ctx.lineWidth = t, this.pdf.setLineWidth(t)},
setLineCap: function (t) {this.ctx.lineCap = t, this.pdf.setLineCap(t)},
setLineJoin: function (t) {this.ctx.lineJon = t, this.pdf.setLineJoin(t)},
moveTo: function (t, e) {
t = this._wrapX(t), e = this._wrapY(e);
var n = {type: "mt", x: t, y: e};
this.path.push(n)
},
_wrapX: function (t) {return this.pageWrapXEnabled ? t % this.pageWrapX : t},
_wrapY: function (t) {return this.pageWrapYEnabled ? (this._gotoPage(this._page(t)), (t - this.lastBreak) % this.pageWrapY) : t},
lastBreak: 0,
pageBreaks: [],
_page: function (t) {
if (this.pageWrapYEnabled) {
this.lastBreak = 0;
for (var e = 0, n = 0, r = 0; r < this.pageBreaks.length; r++)if (t >= this.pageBreaks[r]) {
e++, 0 === this.lastBreak && n++;
var i = this.pageBreaks[r] - this.lastBreak;
this.lastBreak = this.pageBreaks[r];
var o = Math.floor(i / this.pageWrapY);
n += o
}
if (0 === this.lastBreak) {
var o = Math.floor(t / this.pageWrapY) + 1;
n += o
}
return n + e
}
return this.pdf.internal.getCurrentPageInfo().pageNumber
},
_gotoPage: function (t) {},
lineTo: function (t, e) {
t = this._wrapX(t), e = this._wrapY(e);
var n = {type: "lt", x: t, y: e};
this.path.push(n)
},
bezierCurveTo: function (t, e, n, r, i, o) {
t = this._wrapX(t), e = this._wrapY(e), n = this._wrapX(n), r = this._wrapY(r), i = this._wrapX(i), o = this._wrapY(o);
var a = {type: "bct", x1: t, y1: e, x2: n, y2: r, x: i, y: o};
this.path.push(a)
},
quadraticCurveTo: function (t, e, n, r) {
t = this._wrapX(t), e = this._wrapY(e), n = this._wrapX(n), r = this._wrapY(r);
var i = {type: "qct", x1: t, y1: e, x: n, y: r};
this.path.push(i)
},
arc: function (t, e, n, r, i, o) {
t = this._wrapX(t), e = this._wrapY(e);
var a = {type: "arc", x: t, y: e, radius: n, startAngle: r, endAngle: i, anticlockwise: o};
this.path.push(a)
},
drawImage: function (t, e, n, r, i, o, a, s, c) {
void 0 !== o && (e = o, n = a, r = s, i = c), e = this._wrapX(e), n = this._wrapY(n);
var u, l = /data:image\/(\w+).*/i, h = l.exec(t);
u = null != h ? h[1] : "png", this.pdf.addImage(t, u, e, n, r, i)
},
stroke: function () {
for (var t, e = [], n = !1, r = 0; r < this.path.length; r++) {
var i = this.path[r];
switch (i.type) {
case"mt":
t = i, "undefined" != typeof t && (this.pdf.lines(e, t.x, t.y, null, "s"), e = []);
break;
case"lt":
var o = [i.x - this.path[r - 1].x, i.y - this.path[r - 1].y];
e.push(o);
break;
case"bct":
var o = [i.x1 - this.path[r - 1].x, i.y1 - this.path[r - 1].y, i.x2 - this.path[r - 1].x, i.y2 - this.path[r - 1].y, i.x - this.path[r - 1].x, i.y - this.path[r - 1].y];
e.push(o);
break;
case"qct":
var a = this.path[r - 1].x + 2 / 3 * (i.x1 - this.path[r - 1].x), s = this.path[r - 1].y + 2 / 3 * (i.y1 - this.path[r - 1].y), c = i.x + 2 / 3 * (i.x1 - i.x), u = i.y + 2 / 3 * (i.y1 - i.y), l = i.x, h = i.y, o = [a - this.path[r - 1].x, s - this.path[r - 1].y, c - this.path[r - 1].x, u - this.path[r - 1].y, l - this.path[r - 1].x, h - this.path[r - 1].y];
e.push(o);
break;
case"close":
n = !0
}
}
"undefined" != typeof t && this.pdf.lines(e, t.x, t.y, null, "s", n);
for (var r = 0; r < this.path.length; r++) {
var i = this.path[r];
switch (i.type) {
case"arc":
var t = 360 * i.startAngle / (2 * Math.PI), f = 360 * i.endAngle / (2 * Math.PI);
this.internal.arc(i.x, i.y, i.radius, t, f, i.anticlockwise, "s")
}
}
this.path = []
},
fill: function () {
for (var t, e = [], n = 0; n < this.path.length; n++) {
var r = this.path[n];
switch (r.type) {
case"mt":
t = r, "undefined" != typeof t && (this.pdf.lines(e, t.x, t.y, null, "f"), e = []);
break;
case"lt":
var i = [r.x - this.path[n - 1].x, r.y - this.path[n - 1].y];
e.push(i);
break;
case"bct":
var i = [r.x1 - this.path[n - 1].x, r.y1 - this.path[n - 1].y, r.x2 - this.path[n - 1].x, r.y2 - this.path[n - 1].y, r.x - this.path[n - 1].x, r.y - this.path[n - 1].y];
e.push(i);
break;
case"qct":
var o = this.path[n - 1].x + 2 / 3 * (r.x1 - this.path[n - 1].x), a = this.path[n - 1].y + 2 / 3 * (r.y1 - this.path[n - 1].y), s = r.x + 2 / 3 * (r.x1 - r.x), c = r.y + 2 / 3 * (r.y1 - r.y), u = r.x, l = r.y, i = [o - this.path[n - 1].x, a - this.path[n - 1].y, s - this.path[n - 1].x, c - this.path[n - 1].y, u - this.path[n - 1].x, l - this.path[n - 1].y];
e.push(i)
}
}
"undefined" != typeof t && this.pdf.lines(e, t.x, t.y, null, "f");
for (var n = 0; n < this.path.length; n++) {
var r = this.path[n];
switch (r.type) {
case"arc":
var t = 360 * r.startAngle / (2 * Math.PI), h = 360 * r.endAngle / (2 * Math.PI);
this.internal.arc(r.x, r.y, r.radius, t, h, r.anticlockwise, "f");
break;
case"close":
this.pdf.internal.out("h")
}
}
this.path = []
},
clip: function () {},
translate: function (t, e) {this.ctx._translate = {x: t, y: e}},
measureText: function (t) {
var e = this.pdf;
return {
getWidth: function () {
var n = e.internal.getFontSize(), r = e.getStringUnitWidth(t) * n / e.internal.scaleFactor;
return r
}, get width() {return this.getWidth(t)}
}
},
_getBaseline: function (t) {
var e = parseInt(this.pdf.internal.getFontSize()), n = .25 * e;
switch (this.ctx.textBaseline) {
case"bottom":
return t - n;
case"top":
return t + e;
case"hanging":
return t + e - n;
case"middle":
return t + e / 2 - n;
case"ideographic":
return t;
case"alphabetic":
default:
return t
}
}
};
var n = t.context2d;
return Object.defineProperty(n, "fillStyle", {
set: function (t) {this.setFillStyle(t)},
get: function () {return this.ctx.fillStyle}
}), Object.defineProperty(n, "textBaseline", {
set: function (t) {this.setTextBaseline(t)},
get: function () {return this.getTextBaseline()}
}), Object.defineProperty(n, "font", {
set: function (t) {this.setFont(t)},
get: function () {return this.getFont()}
}), n.internal = {}, n.internal.rxRgb = /rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/, n.internal.rxRgba = /rgba\s*\(\s*(\d+),\s*(\d+),\s*(\d+),\s*(\d+)\s*\)/, n.internal.arc = function (t, e, n, r, i, o, a) {
for (var s = this.pdf.internal.scaleFactor, c = this.pdf.internal.pageSize.height, u = this.pdf.internal.f2, l = r * (Math.PI / 180), h = i * (Math.PI / 180), f = this.createArc(n, l, h, o), d = 0; d < f.length; d++) {
var p = f[d];
0 == d ? this.pdf.internal.out([u((p.x1 + t) * s), u((c - (p.y1 + e)) * s), "m", u((p.x2 + t) * s), u((c - (p.y2 + e)) * s), u((p.x3 + t) * s), u((c - (p.y3 + e)) * s), u((p.x4 + t) * s), u((c - (p.y4 + e)) * s), "c"].join(" ")) : this.pdf.internal.out([u((p.x2 + t) * s), u((c - (p.y2 + e)) * s), u((p.x3 + t) * s), u((c - (p.y3 + e)) * s), u((p.x4 + t) * s), u((c - (p.y4 + e)) * s), "c"].join(" "))
}
null !== a && this.pdf.internal.out(this.pdf.internal.getStyle(a))
}, n.internal.createArc = function (t, e, n, r) {
var i = 1e-5, o = 2 * Math.PI, a = e;
(o > a || a > o) && (a %= o);
var s = n;
(o > s || s > o) && (s %= o);
for (var c = [], u = Math.PI / 2, l = r ? -1 : 1, h = e, f = Math.min(o, Math.abs(s - a)); f > i;) {
var d = h + l * Math.min(f, u);
c.push(this.createSmallArc(t, h, d)), f -= Math.abs(d - h), h = d
}
return c
}, n.internal.createSmallArc = function (t, e, n) {
var r = (n - e) / 2, i = t * Math.cos(r), o = t * Math.sin(r), a = i, s = -o, c = a * a + s * s, u = c + a * i + s * o, l = 4 / 3 * (Math.sqrt(2 * c * u) - u) / (a * o - s * i), h = a - l * s, f = s + l * a, d = h, p = -f, m = r + e, g = Math.cos(m), w = Math.sin(m);
return {
x1: t * Math.cos(e),
y1: t * Math.sin(e),
x2: h * g - f * w,
y2: h * w + f * g,
x3: d * g - p * w,
y3: d * w + p * g,
x4: t * Math.cos(n),
y4: t * Math.sin(n)
}
}, this
}(e.API), /** @preserve
* jsPDF fromHTML plugin. BETA stage. API subject to change. Needs browser
* Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
* 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
* 2014 Diego Casorran, https://github.com/diegocr
* 2014 Daniel Husar, https://github.com/danielhusar
* 2014 Wolfgang Gassler, https://github.com/woolfg
* 2014 Steven Spungin, https://github.com/flamenco
*
*
* ====================================================================
*/
function (e) {
var n, r, i, a, s, c, u, l, h, f, d, p, m, g, w, y, v, b, x, k;
n = function () {
function t() {}
return function (e) {return t.prototype = e, new t}
}(), f = function (t) {
var e, n, r, i, o, a, s;
for (n = 0, r = t.length, e = void 0, i = !1, a = !1; !i && n !== r;)e = t[n] = t[n].trimLeft(), e && (i = !0), n++;
for (n = r - 1; r && !a && -1 !== n;)e = t[n] = t[n].trimRight(), e && (a = !0), n--;
for (o = /\s+$/g, s = !0, n = 0; n !== r;)"\u2028" != t[n] && (e = t[n].replace(/\s+/g, " "), s && (e = e.trimLeft()), e && (s = o.test(e)), t[n] = e), n++;
return t
}, d = function (t, e, n, r) {return this.pdf = t, this.x = e, this.y = n, this.settings = r, this.watchFunctions = [], this.init(), this}, p = function (t) {
var e, n, r;
for (e = void 0, r = t.split(","), n = r.shift(); !e && n;)e = i[n.trim().toLowerCase()], n = r.shift();
return e
}, m = function (t) {
t = "auto" === t ? "0px" : t, t.indexOf("em") > -1 && !isNaN(Number(t.replace("em", ""))) && (t = 18.719 * Number(t.replace("em", "")) + "px"), t.indexOf("pt") > -1 && !isNaN(Number(t.replace("pt", ""))) && (t = 1.333 * Number(t.replace("pt", "")) + "px");
var e, n, r;
return n = void 0, e = 16, (r = g[t]) ? r : (r = {
"xx-small": 9,
"x-small": 11,
small: 13,
medium: 16,
large: 19,
"x-large": 23,
"xx-large": 28,
auto: 0
}[{css_line_height_string: t}], r !== n ? g[t] = r / e : (r = parseFloat(t)) ? g[t] = r / e : (r = t.match(/([\d\.]+)(px)/), 3 === r.length ? g[t] = parseFloat(r[1]) / e : g[t] = 1))
}, h = function (t) {
var e, n, r;
return r = function (t) {
var e;
return e = function (t) {return document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(t, null) : t.currentStyle ? t.currentStyle : t.style}(t), function (t) {return t = t.replace(/-\D/g, function (t) {return t.charAt(1).toUpperCase()}), e[t]}
}(t), e = {}, n = void 0, e["font-family"] = p(r("font-family")) || "times", e["font-style"] = a[r("font-style")] || "normal", e["text-align"] = s[r("text-align")] || "left", n = c[r("font-weight")] || "normal", "bold" === n && ("normal" === e["font-style"] ? e["font-style"] = n : e["font-style"] = n + e["font-style"]), e["font-size"] = m(r("font-size")) || 1, e["line-height"] = m(r("line-height")) || 1, e.display = "inline" === r("display") ? "inline" : "block", n = "block" === e.display, e["margin-top"] = n && m(r("margin-top")) || 0, e["margin-bottom"] = n && m(r("margin-bottom")) || 0, e["padding-top"] = n && m(r("padding-top")) || 0, e["padding-bottom"] = n && m(r("padding-bottom")) || 0, e["margin-left"] = n && m(r("margin-left")) || 0, e["margin-right"] = n && m(r("margin-right")) || 0, e["padding-left"] = n && m(r("padding-left")) || 0, e["padding-right"] = n && m(r("padding-right")) || 0, e["page-break-before"] = r("page-break-before") || "auto", e["float"] = u[r("cssFloat")] || "none", e.clear = l[r("clear")] || "none", e.color = r("color"), e
}, w = function (t, e, n) {
var r, i, o, a, s;
if (o = !1, i = void 0, a = void 0, s = void 0, r = n["#" + t.id])if ("function" == typeof r)o = r(t, e); else for (i = 0, a = r.length; !o && i !== a;)o = r[i](t, e), i++;
if (r = n[t.nodeName], !o && r)if ("function" == typeof r)o = r(t, e); else for (i = 0, a = r.length; !o && i !== a;)o = r[i](t, e), i++;
return o
}, k = function (t, e) {
var n, r, i, o, a, s, c, u, l, h;
for (n = [], r = [], i = 0, h = t.rows[0].cells.length, u = t.clientWidth; h > i;)l = t.rows[0].cells[i], r[i] = {
name: l.textContent.toLowerCase().replace(/\s+/g, ""),
prompt: l.textContent.replace(/\r?\n/g, ""),
width: l.clientWidth / u * e.pdf.internal.pageSize.width
}, i++;
for (i = 1; i < t.rows.length;) {
for (s = t.rows[i], a = {}, o = 0; o < s.cells.length;)a[r[o].name] = s.cells[o].textContent.replace(/\r?\n/g, ""), o++;
n.push(a), i++
}
return c = {rows: n, headers: r}
};
var A = {SCRIPT: 1, STYLE: 1, NOSCRIPT: 1, OBJECT: 1, EMBED: 1, SELECT: 1}, C = 1;
r = function (e, i, o) {
var a, s, c, u, l, f, d, p, m;
for (s = e.childNodes, a = void 0, c = h(e), l = "block" === c.display, l && (i.setBlockBoundary(), i.setBlockStyle(c)), d = 19.049976 / 25.4, u = 0, f = s.length; f > u;) {
if (a = s[u], "object" === ("undefined" == typeof a ? "undefined" : t["typeof"](a))) {
if (i.executeWatchFunctions(a), 1 === a.nodeType && "HEADER" === a.nodeName) {
var g = a, v = i.pdf.margins_doc.top;
i.pdf.internal.events.subscribe("addPage", function (t) {i.y = v, r(g, i, o), i.pdf.margins_doc.top = i.y + 10, i.y += 10}, !1)
}
if (8 === a.nodeType && "#comment" === a.nodeName)~a.textContent.indexOf("ADD_PAGE") && (i.pdf.addPage(), i.y = i.pdf.margins_doc.top); else if (1 !== a.nodeType || A[a.nodeName])if (3 === a.nodeType) {
var b = a.nodeValue;
if (a.nodeValue && "LI" === a.parentNode.nodeName)if ("OL" === a.parentNode.parentNode.nodeName)b = C++ + ". " + b; else {
var x = c["font-size"];
offsetX = (3 - .75 * x) * i.pdf.internal.scaleFactor, offsetY = .75 * x * i.pdf.internal.scaleFactor, radius = 1.74 * x / i.pdf.internal.scaleFactor, m = function (t, e) {this.pdf.circle(t + offsetX, e + offsetY, radius, "FD")}
}
a.ownerDocument.body.contains(a) && i.addText(b, c)
} else"string" == typeof a && i.addText(a, c); else {
var _;
if ("IMG" === a.nodeName) {
var q = a.getAttribute("src");
_ = y[i.pdf.sHashCode(q) || q]
}
if (_) {
i.pdf.internal.pageSize.height - i.pdf.margins_doc.bottom < i.y + a.height && i.y > i.pdf.margins_doc.top && (i.pdf.addPage(), i.y = i.pdf.margins_doc.top, i.executeWatchFunctions(a));
var S = h(a), T = i.x, E = 12 / i.pdf.internal.scaleFactor, P = (S["margin-left"] + S["padding-left"]) * E, I = (S["margin-right"] + S["padding-right"]) * E, F = (S["margin-top"] + S["padding-top"]) * E, O = (S["margin-bottom"] + S["padding-bottom"]) * E;
T += void 0 !== S["float"] && "right" === S["float"] ? i.settings.width - a.width - I : P, i.pdf.addImage(_, T, i.y + F, a.width, a.height), _ = void 0, "right" === S["float"] || "left" === S["float"] ? (i.watchFunctions.push(function (t, e, n, r) {return i.y >= e ? (i.x += t, i.settings.width += n, !0) : r && 1 === r.nodeType && !A[r.nodeName] && i.x + r.width > i.pdf.margins_doc.left + i.pdf.margins_doc.width ? (i.x += t, i.y = e, i.settings.width += n, !0) : !1}.bind(this, "left" === S["float"] ? -a.width - P - I : 0, i.y + a.height + F + O, a.width)), i.watchFunctions.push(function (t, e, n) {return i.y < t && e === i.pdf.internal.getNumberOfPages() ? 1 === n.nodeType && "both" === h(n).clear ? (i.y = t, !0) : !1 : !0}.bind(this, i.y + a.height, i.pdf.internal.getNumberOfPages())), i.settings.width -= a.width + P + I, "left" === S["float"] && (i.x += a.width + P + I)) : i.y += a.height + F + O
} else if ("TABLE" === a.nodeName)p = k(a, i), i.y += 10, i.pdf.table(i.x, i.y, p.rows, p.headers, {
autoSize: !1,
printHeaders: o.printHeaders,
margins: i.pdf.margins_doc,
css: h(a)
}), i.y = i.pdf.lastCellPos.y + i.pdf.lastCellPos.h + 20; else if ("OL" === a.nodeName || "UL" === a.nodeName)C = 1, w(a, i, o) || r(a, i, o), i.y += 10; else if ("LI" === a.nodeName) {
var B = i.x;
i.x += 20 / i.pdf.internal.scaleFactor, i.y += 3, w(a, i, o) || r(a, i, o), i.x = B
} else"BR" === a.nodeName ? (i.y += c["font-size"] * i.pdf.internal.scaleFactor, i.addText("\u2028", n(c))) : w(a, i, o) || r(a, i, o)
}
}
u++
}
return o.outY = i.y, l ? i.setBlockBoundary(m) : void 0
}, y = {}, v = function (t, e, n, r) {
function i() {e.pdf.internal.events.publish("imagesLoaded"), r(a)}
function o(t, n, r) {
if (t) {
var o = new Image;
a = ++u, o.crossOrigin = "", o.onerror = o.onload = function () {
if (o.complete && (0 === o.src.indexOf("data:image/") && (o.width = n || o.width || 0, o.height = r || o.height || 0), o.width + o.height)) {
var a = e.pdf.sHashCode(t) || t;
y[a] = y[a] || o
}
--u || i()
}, o.src = t
}
}
for (var a, s = t.getElementsByTagName("img"), c = s.length, u = 0; c--;)o(s[c].getAttribute("src"), s[c].width, s[c].height);
return u || i()
}, b = function (t, e, n) {
var i = t.getElementsByTagName("footer");
if (i.length > 0) {
i = i[0];
var o = e.pdf.internal.write, a = e.y;
e.pdf.internal.write = function () {}, r(i, e, n);
var s = Math.ceil(e.y - a) + 5;
e.y = a, e.pdf.internal.write = o, e.pdf.margins_doc.bottom += s;
for (var c = function (t) {
var o = void 0 !== t ? t.pageNumber : 1, a = e.y;
e.y = e.pdf.internal.pageSize.height - e.pdf.margins_doc.bottom, e.pdf.margins_doc.bottom -= s;
for (var c = i.getElementsByTagName("span"), u = 0; u < c.length; ++u)(" " + c[u].className + " ").replace(/[\n\t]/g, " ").indexOf(" pageCounter ") > -1 && (c[u].innerHTML = o), (" " + c[u].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") > -1 && (c[u].innerHTML = "###jsPDFVarTotalPages###");
r(i, e, n), e.pdf.margins_doc.bottom += s, e.y = a
}, u = i.getElementsByTagName("span"), l = 0; l < u.length; ++l)(" " + u[l].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") > -1 && e.pdf.internal.events.subscribe("htmlRenderingFinished", e.pdf.putTotalPages.bind(e.pdf, "###jsPDFVarTotalPages###"), !0);
e.pdf.internal.events.subscribe("addPage", c, !1), c(), A.FOOTER = 1
}
}, x = function (t, e, n, i, o, a) {
if (!e)return !1;
"string" == typeof e || e.parentNode || (e = "" + e.innerHTML), "string" == typeof e && (e = function (t) {
var e, n, r, i;
return r = "jsPDFhtmlText" + Date.now().toString() + (1e3 * Math.random()).toFixed(0), i = "position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;", n = document.createElement("div"), n.style.cssText = i, n.innerHTML = '<iframe style="height:1px;width:1px" name="' + r + '" />', document.body.appendChild(n), e = window.frames[r], e.document.open(), e.document.writeln(t), e.document.close(), e.document.body
}(e.replace(/<\/?script[^>]*?>/gi, "")));
var s, c = new d(t, n, i, o);
return v.call(this, e, c, o.elementHandlers, function (t) {b(e, c, o.elementHandlers), r(e, c, o.elementHandlers), c.pdf.internal.events.publish("htmlRenderingFinished"), s = c.dispose(), "function" == typeof a ? a(s) : t && console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!")}), s || {
x: c.x,
y: c.y
}
}, d.prototype.init = function () {
return this.paragraph = {
text: [],
style: []
}, this.pdf.internal.write("q")
}, d.prototype.dispose = function () {
return this.pdf.internal.write("Q"), {
x: this.x,
y: this.y,
ready: !0
}
}, d.prototype.executeWatchFunctions = function (t) {
var e = !1, n = [];
if (this.watchFunctions.length > 0) {
for (var r = 0; r < this.watchFunctions.length; ++r)this.watchFunctions[r](t) === !0 ? e = !0 : n.push(this.watchFunctions[r]);
this.watchFunctions = n
}
return e
}, d.prototype.splitFragmentsIntoLines = function (t, e) {
var r, i, o, a, s, c, u, l, h, f, d, p, m, g, w;
for (i = 12, d = this.pdf.internal.scaleFactor, s = {}, o = void 0, f = void 0, a = void 0, c = void 0, w = void 0, h = void 0, l = void 0, u = void 0, p = [], m = [p], r = 0, g = this.settings.width; t.length;)if (c = t.shift(), w = e.shift(), c)if (o = w["font-family"], f = w["font-style"], a = s[o + f], a || (a = this.pdf.internal.getFont(o, f).metadata.Unicode, s[o + f] = a), h = {
widths: a.widths,
kerning: a.kerning,
fontSize: w["font-size"] * i,
textIndent: r
}, l = this.pdf.getStringUnitWidth(c, h) * h.fontSize / d, "\u2028" == c)p = [], m.push(p); else if (r + l > g) {
for (u = this.pdf.splitTextToSize(c, g, h), p.push([u.shift(), w]); u.length;)p = [[u.shift(), w]], m.push(p);
r = this.pdf.getStringUnitWidth(p[0][0], h) * h.fontSize / d
} else p.push([c, w]), r += l;
if (void 0 !== w["text-align"] && ("center" === w["text-align"] || "right" === w["text-align"] || "justify" === w["text-align"]))for (var y = 0; y < m.length; ++y) {
var v = this.pdf.getStringUnitWidth(m[y][0][0], h) * h.fontSize / d;
y > 0 && (m[y][0][1] = n(m[y][0][1]));
var b = g - v;
if ("right" === w["text-align"])m[y][0][1]["margin-left"] = b; else if ("center" === w["text-align"])m[y][0][1]["margin-left"] = b / 2; else if ("justify" === w["text-align"]) {
var x = m[y][0][0].split(" ").length - 1;
m[y][0][1]["word-spacing"] = b / x, y === m.length - 1 && (m[y][0][1]["word-spacing"] = 0)
}
}
return m
}, d.prototype.RenderTextFragment = function (t, e) {
var n, r, i;
i = 0, n = 12, this.pdf.internal.pageSize.height - this.pdf.margins_doc.bottom < this.y + this.pdf.internal.getFontSize() && (this.pdf.internal.write("ET", "Q"), this.pdf.addPage(), this.y = this.pdf.margins_doc.top, this.pdf.internal.write("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), e.color, "Td"), i = Math.max(i, e["line-height"], e["font-size"]), this.pdf.internal.write(0, (-1 * n * i).toFixed(2), "Td")), r = this.pdf.internal.getFont(e["font-family"], e["font-style"]);
var o = this.getPdfColor(e.color);
o !== this.lastTextColor && (this.pdf.internal.write(o), this.lastTextColor = o), void 0 !== e["word-spacing"] && e["word-spacing"] > 0 && this.pdf.internal.write(e["word-spacing"].toFixed(2), "Tw"), this.pdf.internal.write("/" + r.id, (n * e["font-size"]).toFixed(2), "Tf", "(" + this.pdf.internal.pdfEscape(t) + ") Tj"), void 0 !== e["word-spacing"] && this.pdf.internal.write(0, "Tw")
}, d.prototype.getPdfColor = function (t) {
var e, n, r, i, a = /rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/, s = a.exec(t);
if (null != s ? (n = parseInt(s[1]), r = parseInt(s[2]), i = parseInt(s[3])) : ("#" != t.charAt(0) && (t = o.colorNameToHex(t), t || (t = "#000000")), n = t.substring(1, 3), n = parseInt(n, 16), r = t.substring(3, 5), r = parseInt(r, 16), i = t.substring(5, 7), i = parseInt(i, 16)), "string" == typeof n && /^#[0-9A-Fa-f]{6}$/.test(n)) {
var c = parseInt(n.substr(1), 16);
n = c >> 16 & 255, r = c >> 8 & 255, i = 255 & c
}
var u = this.f3;
return e = 0 === n && 0 === r && 0 === i || "undefined" == typeof r ? u(n / 255) + " g" : [u(n / 255), u(r / 255), u(i / 255), "rg"].join(" ")
}, d.prototype.f3 = function (t) {return t.toFixed(3)}, d.prototype.renderParagraph = function (t) {
var e, n, r, i, o, a, s, c, u, l, h, d, p, m, g;
if (i = f(this.paragraph.text), m = this.paragraph.style, e = this.paragraph.blockstyle, p = this.paragraph.priorblockstyle || {}, this.paragraph = {
text: [],
style: [],
blockstyle: {},
priorblockstyle: e
}, i.join("").trim()) {
c = this.splitFragmentsIntoLines(i, m), s = void 0, u = void 0, n = 12, r = n / this.pdf.internal.scaleFactor, this.priorMarginBottom = this.priorMarginBottom || 0, d = (Math.max((e["margin-top"] || 0) - this.priorMarginBottom, 0) + (e["padding-top"] || 0)) * r, h = ((e["margin-bottom"] || 0) + (e["padding-bottom"] || 0)) * r, this.priorMarginBottom = e["margin-bottom"] || 0, "always" === e["page-break-before"] && (this.pdf.addPage(), this.y = 0, d = ((e["margin-top"] || 0) + (e["padding-top"] || 0)) * r), l = this.pdf.internal.write, o = void 0, a = void 0, this.y += d, l("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td");
for (var w = 0; c.length;) {
for (s = c.shift(), u = 0, o = 0, a = s.length; o !== a;)s[o][0].trim() && (u = Math.max(u, s[o][1]["line-height"], s[o][1]["font-size"]), g = 7 * s[o][1]["font-size"]), o++;
var y = 0, v = 0;
void 0 !== s[0][1]["margin-left"] && s[0][1]["margin-left"] > 0 && (v = this.pdf.internal.getCoordinateString(s[0][1]["margin-left"]), y = v - w, w = v);
var b = Math.max(e["margin-left"] || 0, 0) * r;
for (l(y + b, (-1 * n * u).toFixed(2), "Td"), o = 0, a = s.length; o !== a;)s[o][0] && this.RenderTextFragment(s[o][0], s[o][1]), o++;
if (this.y += u * r, this.executeWatchFunctions(s[0][1]) && c.length > 0) {
var x = [], k = [];
c.forEach(function (t) {for (var e = 0, n = t.length; e !== n;)t[e][0] && (x.push(t[e][0] + " "), k.push(t[e][1])), ++e}), c = this.splitFragmentsIntoLines(f(x), k), l("ET", "Q"), l("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td")
}
}
return t && "function" == typeof t && t.call(this, this.x - 9, this.y - g / 2), l("ET", "Q"), this.y += h
}
}, d.prototype.setBlockBoundary = function (t) {return this.renderParagraph(t)}, d.prototype.setBlockStyle = function (t) {return this.paragraph.blockstyle = t}, d.prototype.addText = function (t, e) {return this.paragraph.text.push(t), this.paragraph.style.push(e)}, i = {
helvetica: "helvetica",
"sans-serif": "helvetica",
"times new roman": "times",
serif: "times",
times: "times",
monospace: "courier",
courier: "courier"
}, c = {
100: "normal",
200: "normal",
300: "normal",
400: "normal",
500: "bold",
600: "bold",
700: "bold",
800: "bold",
900: "bold",
normal: "normal",
bold: "bold",
bolder: "bold",
lighter: "normal"
}, a = {normal: "normal", italic: "italic", oblique: "italic"}, s = {
left: "left",
right: "right",
center: "center",
justify: "justify"
}, u = {none: "none", right: "right", left: "left"}, l = {
none: "none",
both: "both"
}, g = {normal: 1}, e.fromHTML = function (t, e, n, r, i, o) {
return this.margins_doc = o || {
top: 0,
bottom: 0
}, r || (r = {}), r.elementHandlers || (r.elementHandlers = {}), x(this, t, isNaN(e) ? 4 : e, isNaN(n) ? 4 : n, r, i)
}
}(e.API), /** ====================================================================
* jsPDF JavaScript plugin
* Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com
*
*
* ====================================================================
*/
function (t) {
var e, n, r;
t.addJS = function (t) {return r = t, this.internal.events.subscribe("postPutResources", function (t) {e = this.internal.newObject(), this.internal.write("<< /Names [(EmbeddedJS) " + (e + 1) + " 0 R] >>", "endobj"), n = this.internal.newObject(), this.internal.write("<< /S /JavaScript /JS (", r, ") >>", "endobj")}), this.internal.events.subscribe("putCatalog", function () {void 0 !== e && void 0 !== n && this.internal.write("/Names <</JavaScript " + e + " 0 R>>")}), this}
}(e.API), function (t) {
return t.events.push(["postPutResources", function () {
var t = this, e = /^(\d+) 0 obj$/;
if (this.outline.root.children.length > 0)for (var n = t.outline.render().split(/\r\n/), r = 0; r < n.length; r++) {
var i = n[r], o = e.exec(i);
if (null != o) {
var a = o[1];
t.internal.newObjectDeferredBegin(a)
}
t.internal.write(i)
}
if (this.outline.createNamedDestinations) {
for (var s = this.internal.pages.length, c = [], r = 0; s > r; r++) {
var u = t.internal.newObject();
c.push(u);
var l = t.internal.getPageInfo(r + 1);
t.internal.write("<< /D[" + l.objId + " 0 R /XYZ null null null]>> endobj")
}
var h = t.internal.newObject();
t.internal.write("<< /Names [ ");
for (var r = 0; r < c.length; r++)t.internal.write("(page_" + (r + 1) + ")" + c[r] + " 0 R");
t.internal.write(" ] >>", "endobj");
t.internal.newObject();
t.internal.write("<< /Dests " + h + " 0 R"), t.internal.write(">>", "endobj")
}
}]), t.events.push(["putCatalog", function () {
var t = this;
t.outline.root.children.length > 0 && (t.internal.write("/Outlines", this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations && t.internal.write("/Names " + namesOid + " 0 R"))
}]), t.events.push(["initialized", function () {
var t = this;
t.outline = {createNamedDestinations: !1, root: {children: []}};
t.outline.add = function (t, e, n) {
var r = {title: e, options: n, children: []};
return null == t && (t = this.root), t.children.push(r), r
}, t.outline.render = function () {return this.ctx = {}, this.ctx.val = "", this.ctx.pdf = t, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val}, t.outline.genIds_r = function (e) {
e.id = t.internal.newObjectDeferred();
for (var n = 0; n < e.children.length; n++)this.genIds_r(e.children[n])
}, t.outline.renderRoot = function (t) {this.objStart(t), this.line("/Type /Outlines"), t.children.length > 0 && (this.line("/First " + this.makeRef(t.children[0])), this.line("/Last " + this.makeRef(t.children[t.children.length - 1]))), this.line("/Count " + this.count_r({count: 0}, t)), this.objEnd()}, t.outline.renderItems = function (e) {
for (var n = 0; n < e.children.length; n++) {
var r = e.children[n];
this.objStart(r), this.line("/Title " + this.makeString(r.title)), this.line("/Parent " + this.makeRef(e)), n > 0 && this.line("/Prev " + this.makeRef(e.children[n - 1])), n < e.children.length - 1 && this.line("/Next " + this.makeRef(e.children[n + 1])), r.children.length > 0 && (this.line("/First " + this.makeRef(r.children[0])), this.line("/Last " + this.makeRef(r.children[r.children.length - 1])));
var i = this.count = this.count_r({count: 0}, r);
if (i > 0 && this.line("/Count " + i), r.options && r.options.pageNumber) {
var o = t.internal.getPageInfo(r.options.pageNumber);
this.line("/Dest [" + o.objId + " 0 R /XYZ 0 " + this.ctx.pdf.internal.pageSize.height + " 0]")
}
this.objEnd()
}
for (var n = 0; n < e.children.length; n++) {
var r = e.children[n];
this.renderItems(r)
}
}, t.outline.line = function (t) {this.ctx.val += t + "\r\n"}, t.outline.makeRef = function (t) {return t.id + " 0 R"}, t.outline.makeString = function (e) {return "(" + t.internal.pdfEscape(e) + ")"}, t.outline.objStart = function (t) {this.ctx.val += "\r\n" + t.id + " 0 obj\r\n<<\r\n"}, t.outline.objEnd = function (t) {this.ctx.val += ">> \r\nendobj\r\n"}, t.outline.count_r = function (t, e) {
for (var n = 0; n < e.children.length; n++)t.count++, this.count_r(t, e.children[n]);
return t.count
}
}]), this
}(e.API), /**@preserve
* ====================================================================
* jsPDF PNG PlugIn
* Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
*
*
* ====================================================================
*/
function (t) {
var e = function () {return "function" != typeof PNG || "function" != typeof c}, n = function (e) {return e !== t.image_compression.NONE && r()}, r = function () {
var t = "function" == typeof a;
if (!t)throw new Error("requires deflate.js for compression");
return t
}, i = function (e, n, r, i) {
var c = 5, l = f;
switch (i) {
case t.image_compression.FAST:
c = 3, l = h;
break;
case t.image_compression.MEDIUM:
c = 6, l = d;
break;
case t.image_compression.SLOW:
c = 9, l = p
}
e = u(e, n, r, l);
var m = new Uint8Array(o(c)), g = s(e), w = new a(c), y = w.append(e), v = w.flush(), b = m.length + y.length + v.length, x = new Uint8Array(b + 4);
return x.set(m), x.set(y, m.length), x.set(v, m.length + y.length), x[b++] = g >>> 24 & 255, x[b++] = g >>> 16 & 255, x[b++] = g >>> 8 & 255, x[b++] = 255 & g, t.arrayBufferToBinaryString(x)
}, o = function (t, e) {
var n = 8, r = Math.LOG2E * Math.log(32768) - 8, i = r << 4 | n, o = i << 8, a = Math.min(3, (e - 1 & 255) >> 1);
return o |= a << 6, o |= 0, o += 31 - o % 31, [i, 255 & o & 255]
}, s = function (t, e) {
for (var n, r = 1, i = 65535 & r, o = r >>> 16 & 65535, a = t.length, s = 0; a > 0;) {
n = a > e ? e : a, a -= n;
do i += t[s++], o += i; while (--n);
i %= 65521, o %= 65521
}
return (o << 16 | i) >>> 0
}, u = function (t, e, n, r) {
for (var i, o, a, s = t.length / e, c = new Uint8Array(t.length + s), u = g(), l = 0; s > l; l++) {
if (a = l * e, i = t.subarray(a, a + e), r)c.set(r(i, n, o), a + l); else {
for (var h = 0, f = u.length, d = []; f > h; h++)d[h] = u[h](i, n, o);
var p = w(d.concat());
c.set(d[p], a + l)
}
o = i
}
return c
}, l = function (t, e, n) {
var r = Array.apply([], t);
return r.unshift(0), r
}, h = function (t, e, n) {
var r, i = [], o = 0, a = t.length;
for (i[0] = 1; a > o; o++)r = t[o - e] || 0, i[o + 1] = t[o] - r + 256 & 255;
return i
}, f = function (t, e, n) {
var r, i = [], o = 0, a = t.length;
for (i[0] = 2; a > o; o++)r = n && n[o] || 0, i[o + 1] = t[o] - r + 256 & 255;
return i
}, d = function (t, e, n) {
var r, i, o = [], a = 0, s = t.length;
for (o[0] = 3; s > a; a++)r = t[a - e] || 0, i = n && n[a] || 0, o[a + 1] = t[a] + 256 - (r + i >>> 1) & 255;
return o
}, p = function (t, e, n) {
var r, i, o, a, s = [], c = 0, u = t.length;
for (s[0] = 4; u > c; c++)r = t[c - e] || 0, i = n && n[c] || 0, o = n && n[c - e] || 0, a = m(r, i, o), s[c + 1] = t[c] - a + 256 & 255;
return s
}, m = function (t, e, n) {
var r = t + e - n, i = Math.abs(r - t), o = Math.abs(r - e), a = Math.abs(r - n);
return o >= i && a >= i ? t : a >= o ? e : n
}, g = function () {return [l, h, f, d, p]}, w = function (t) {
for (var e, n, r, i = 0, o = t.length; o > i;)e = y(t[i].slice(1)), (n > e || !n) && (n = e, r = i), i++;
return r
}, y = function (t) {
for (var e = 0, n = t.length, r = 0; n > e;)r += Math.abs(t[e++]);
return r
};
t.processPNG = function (t, r, o, a, s) {
var c, u, l, h, f, d, p = this.color_spaces.DEVICE_RGB, m = this.decode.FLATE_DECODE, g = 8;
if (this.isArrayBuffer(t) && (t = new Uint8Array(t)), this.isArrayBufferView(t)) {
if (e())throw new Error("PNG support requires png.js and zlib.js");
if (c = new PNG(t), t = c.imgData, g = c.bits, p = c.colorSpace, h = c.colors, -1 !== [4, 6].indexOf(c.colorType)) {
if (8 === c.bits)for (var w, y, v = 32 == c.pixelBitlength ? new Uint32Array(c.decodePixels().buffer) : 16 == c.pixelBitlength ? new Uint16Array(c.decodePixels().buffer) : new Uint8Array(c.decodePixels().buffer), b = v.length, x = new Uint8Array(b * c.colors), k = new Uint8Array(b), A = c.pixelBitlength - c.bits, C = 0, _ = 0; b > C; C++) {
for (w = v[C], y = 0; A > y;)x[_++] = w >>> y & 255, y += c.bits;
k[C] = w >>> y & 255
}
if (16 === c.bits) {
for (var w, v = new Uint32Array(c.decodePixels().buffer), b = v.length, x = new Uint8Array(b * (32 / c.pixelBitlength) * c.colors), k = new Uint8Array(b * (32 / c.pixelBitlength)), q = c.colors > 1, C = 0, _ = 0, S = 0; b > C;)w = v[C++], x[_++] = w >>> 0 & 255, q && (x[_++] = w >>> 16 & 255, w = v[C++], x[_++] = w >>> 0 & 255), k[S++] = w >>> 16 & 255;
g = 8
}
n(a) ? (t = i(x, c.width * c.colors, c.colors, a), d = i(k, c.width, 1, a)) : (t = x, d = k, m = null)
}
if (3 === c.colorType && (p = this.color_spaces.INDEXED, f = c.palette, c.transparency.indexed)) {
for (var T = c.transparency.indexed, E = 0, C = 0, b = T.length; b > C; ++C)E += T[C];
if (E /= 255, E === b - 1 && -1 !== T.indexOf(0))l = [T.indexOf(0)]; else if (E !== b) {
for (var v = c.decodePixels(), k = new Uint8Array(v.length), C = 0, b = v.length; b > C; C++)k[C] = T[v[C]];
d = i(k, c.width, 1)
}
}
return u = m === this.decode.FLATE_DECODE ? "/Predictor 15 /Colors " + h + " /BitsPerComponent " + g + " /Columns " + c.width : "/Colors " + h + " /BitsPerComponent " + g + " /Columns " + c.width, (this.isArrayBuffer(t) || this.isArrayBufferView(t)) && (t = this.arrayBufferToBinaryString(t)), (d && this.isArrayBuffer(d) || this.isArrayBufferView(d)) && (d = this.arrayBufferToBinaryString(d)), this.createImageInfo(t, c.width, c.height, p, g, m, r, o, u, l, f, d)
}
throw new Error("Unsupported PNG image data, try using JPEG instead.")
}
}(e.API), function (t) {
t.autoPrint = function () {
var t;
return this.internal.events.subscribe("postPutResources", function () {t = this.internal.newObject(), this.internal.write("<< /S/Named /Type/Action /N/Print >>", "endobj")}), this.internal.events.subscribe("putCatalog", function () {this.internal.write("/OpenAction " + t + " 0 R")}), this
}
}(e.API), function (t) {
var e = t.getCharWidthsArray = function (t, e) {
e || (e = {});
var n, r, i, o = e.widths ? e.widths : this.internal.getFont().metadata.Unicode.widths, a = o.fof ? o.fof : 1, s = e.kerning ? e.kerning : this.internal.getFont().metadata.Unicode.kerning, c = s.fof ? s.fof : 1, u = 0, l = o[0] || a, h = [];
for (n = 0, r = t.length; r > n; n++)i = t.charCodeAt(n), h.push((o[i] || l) / a + (s[i] && s[i][u] || 0) / c), u = i;
return h
}, n = function (t) {
for (var e = t.length, n = 0; e;)e--, n += t[e];
return n
}, r = t.getStringUnitWidth = function (t, r) {return n(e.call(this, t, r))}, i = function (t, e, n, r) {
for (var i = [], o = 0, a = t.length, s = 0; o !== a && s + e[o] < n;)s += e[o], o++;
i.push(t.slice(0, o));
var c = o;
for (s = 0; o !== a;)s + e[o] > r && (i.push(t.slice(c, o)), s = 0, c = o), s += e[o], o++;
return c !== o && i.push(t.slice(c, o)), i
}, o = function (t, o, a) {
a || (a = {});
var s, c, u, l, h, f, d = [], p = [d], m = a.textIndent || 0, g = 0, w = 0, y = t.split(" "), v = e(" ", a)[0];
if (f = -1 === a.lineIndent ? y[0].length + 2 : a.lineIndent || 0) {
var b = Array(f).join(" "), x = [];
y.map(function (t) {t = t.split(/\s*\n/), t.length > 1 ? x = x.concat(t.map(function (t, e) {return (e && t.length ? "\n" : "") + t})) : x.push(t[0])}), y = x, f = r(b, a)
}
for (u = 0, l = y.length; l > u; u++) {
var k = 0;
if (s = y[u], f && "\n" == s[0] && (s = s.substr(1), k = 1), c = e(s, a), w = n(c), m + g + w > o || k) {
if (w > o) {
for (h = i(s, c, o - (m + g), o), d.push(h.shift()), d = [h.pop()]; h.length;)p.push([h.shift()]);
w = n(c.slice(s.length - d[0].length))
} else d = [s];
p.push(d), m = w + f, g = v
} else d.push(s), m += g + w, g = v
}
if (f)var A = function (t, e) {return (e ? b : "") + t.join(" ")}; else var A = function (t) {return t.join(" ")};
return p.map(A)
};
t.splitTextToSize = function (t, e, n) {
n || (n = {});
var r, i = n.fontSize || this.internal.getFontSize(), a = function (t) {
var e = {0: 1}, n = {};
if (t.widths && t.kerning)return {widths: t.widths, kerning: t.kerning};
var r = this.internal.getFont(t.fontName, t.fontStyle), i = "Unicode";
return r.metadata[i] ? {
widths: r.metadata[i].widths || e,
kerning: r.metadata[i].kerning || n
} : {widths: e, kerning: n}
}.call(this, n);
r = Array.isArray(t) ? t : t.split(/\r?\n/);
var s = 1 * this.internal.scaleFactor * e / i;
a.textIndent = n.textIndent ? 1 * n.textIndent * this.internal.scaleFactor / i : 0, a.lineIndent = n.lineIndent;
var c, u, l = [];
for (c = 0, u = r.length; u > c; c++)l = l.concat(o(r[c], s, a));
return l
}
}(e.API), function (t) {
var e = function (t) {
for (var e = "0123456789abcdef", n = "klmnopqrstuvwxyz", r = {}, i = 0; i < n.length; i++)r[n[i]] = e[i];
var o, a, s, c, u, l = {}, h = 1, f = l, d = [], p = "", m = "", g = t.length - 1;
for (i = 1; i != g;)u = t[i], i += 1, "'" == u ? a ? (c = a.join(""), a = o) : a = [] : a ? a.push(u) : "{" == u ? (d.push([f, c]), f = {}, c = o) : "}" == u ? (s = d.pop(), s[0][s[1]] = f, c = o, f = s[0]) : "-" == u ? h = -1 : c === o ? r.hasOwnProperty(u) ? (p += r[u], c = parseInt(p, 16) * h, h = 1, p = "") : p += u : r.hasOwnProperty(u) ? (m += r[u], f[c] = parseInt(m, 16) * h, h = 1, c = o, m = "") : m += u;
return l
}, n = {
codePages: ["WinAnsiEncoding"],
WinAnsiEncoding: e("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")
}, r = {
Unicode: {
Courier: n,
"Courier-Bold": n,
"Courier-BoldOblique": n,
"Courier-Oblique": n,
Helvetica: n,
"Helvetica-Bold": n,
"Helvetica-BoldOblique": n,
"Helvetica-Oblique": n,
"Times-Roman": n,
"Times-Bold": n,
"Times-BoldItalic": n,
"Times-Italic": n
}
}, i = {
Unicode: {
"Courier-Oblique": e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
"Times-BoldItalic": e("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),
"Helvetica-Bold": e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
Courier: e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
"Courier-BoldOblique": e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
"Times-Bold": e("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),
Helvetica: e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),
"Helvetica-BoldOblique": e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
"Courier-Bold": e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
"Times-Italic": e("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),
"Times-Roman": e("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),
"Helvetica-Oblique": e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")
}
};
t.events.push(["addFont", function (t) {
var e, n, o, a = "Unicode";
e = i[a][t.PostScriptName], e && (n = t.metadata[a] ? t.metadata[a] : t.metadata[a] = {}, n.widths = e.widths, n.kerning = e.kerning), o = r[a][t.PostScriptName], o && (n = t.metadata[a] ? t.metadata[a] : t.metadata[a] = {}, n.encoding = o, o.codePages && o.codePages.length && (t.encoding = o.codePages[0]))
}])
}(e.API), function (t) {
t.addSVG = function (t, e, n, r, i) {
function o(t, e) {
var n = e.createElement("style");
n.type = "text/css", n.styleSheet ? n.styleSheet.cssText = t : n.appendChild(e.createTextNode(t)), e.getElementsByTagName("head")[0].appendChild(n)
}
function a(t) {
var e = "childframe", n = t.createElement("iframe");
return o(".jsPDF_sillysvg_iframe {display:none;position:absolute;}", t), n.name = e, n.setAttribute("width", 0), n.setAttribute("height", 0), n.setAttribute("frameborder", "0"), n.setAttribute("scrolling", "no"), n.setAttribute("seamless", "seamless"), n.setAttribute("class", "jsPDF_sillysvg_iframe"), t.body.appendChild(n), n
}
function s(t, e) {
var n = (e.contentWindow || e.contentDocument).document;
return n.write(t), n.close(), n.getElementsByTagName("svg")[0]
}
function c(t) {
for (var e = parseFloat(t[1]), n = parseFloat(t[2]), r = [], i = 3, o = t.length; o > i;)"c" === t[i] ? (r.push([parseFloat(t[i + 1]), parseFloat(t[i + 2]), parseFloat(t[i + 3]), parseFloat(t[i + 4]), parseFloat(t[i + 5]), parseFloat(t[i + 6])]), i += 7) : "l" === t[i] ? (r.push([parseFloat(t[i + 1]), parseFloat(t[i + 2])]), i += 3) : i += 1;
return [e, n, r]
}
var u;
if (e === u || n === u)throw new Error("addSVG needs values for 'x' and 'y'");
var l = a(document), h = s(t, l), f = [1, 1], d = parseFloat(h.getAttribute("width")), p = parseFloat(h.getAttribute("height"));
d && p && (r && i ? f = [r / d, i / p] : r ? f = [r / d, r / d] : i && (f = [i / p, i / p]));
var m, g, w, y, v = h.childNodes;
for (m = 0, g = v.length; g > m; m++)w = v[m], w.tagName && "PATH" === w.tagName.toUpperCase() && (y = c(w.getAttribute("d").split(" ")), y[0] = y[0] * f[0] + e, y[1] = y[1] * f[1] + n, this.lines.call(this, y[2], y[0], y[1], f));
return this
}
}(e.API), /** ====================================================================
* jsPDF total_pages plugin
* Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br
*
*
* ====================================================================
*/
function (t) {
t.putTotalPages = function (t) {
for (var e = new RegExp(t, "g"), n = 1; n <= this.internal.getNumberOfPages(); n++)for (var r = 0; r < this.internal.pages[n].length; r++)this.internal.pages[n][r] = this.internal.pages[n][r].replace(e, this.internal.getNumberOfPages());
return this
}
}(e.API), function (t) {
if (t.URL = t.URL || t.webkitURL, t.Blob && t.URL)try {return void new Blob} catch (e) {}
var n = t.BlobBuilder || t.WebKitBlobBuilder || t.MozBlobBuilder || function (t) {
var e = function (t) {return Object.prototype.toString.call(t).match(/^\[object\s(.*)\]$/)[1]}, n = function () {this.data = []}, r = function (t, e, n) {this.data = t, this.size = t.length, this.type = e, this.encoding = n}, i = n.prototype, o = r.prototype, a = t.FileReaderSync, s = function (t) {this.code = this[this.name = t]}, c = "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "), u = c.length, l = t.URL || t.webkitURL || t, h = l.createObjectURL, f = l.revokeObjectURL, d = l, p = t.btoa, m = t.atob, g = t.ArrayBuffer, w = t.Uint8Array, y = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;
for (r.fake = o.fake = !0; u--;)s.prototype[c[u]] = u + 1;
return l.createObjectURL || (d = t.URL = function (t) {
var e, n = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
return n.href = t, "origin" in n || ("data:" === n.protocol.toLowerCase() ? n.origin = null : (e = t.match(y), n.origin = e && e[1])), n
}), d.createObjectURL = function (t) {
var e, n = t.type;
return null === n && (n = "application/octet-stream"), t instanceof r ? (e = "data:" + n, "base64" === t.encoding ? e + ";base64," + t.data : "URI" === t.encoding ? e + "," + decodeURIComponent(t.data) : p ? e + ";base64," + p(t.data) : e + "," + encodeURIComponent(t.data)) : h ? h.call(l, t) : void 0
}, d.revokeObjectURL = function (t) {"data:" !== t.substring(0, 5) && f && f.call(l, t)}, i.append = function (t) {
var n = this.data;
if (w && (t instanceof g || t instanceof w)) {
for (var i = "", o = new w(t), c = 0, u = o.length; u > c; c++)i += String.fromCharCode(o[c]);
n.push(i)
} else if ("Blob" === e(t) || "File" === e(t)) {
if (!a)throw new s("NOT_READABLE_ERR");
var l = new a;
n.push(l.readAsBinaryString(t))
} else t instanceof r ? "base64" === t.encoding && m ? n.push(m(t.data)) : "URI" === t.encoding ? n.push(decodeURIComponent(t.data)) : "raw" === t.encoding && n.push(t.data) : ("string" != typeof t && (t += ""), n.push(unescape(encodeURIComponent(t))))
}, i.getBlob = function (t) {return arguments.length || (t = null), new r(this.data.join(""), t, "raw")}, i.toString = function () {return "[object BlobBuilder]"}, o.slice = function (t, e, n) {
var i = arguments.length;
return 3 > i && (n = null), new r(this.data.slice(t, i > 1 ? e : this.data.length), n, this.encoding)
}, o.toString = function () {return "[object Blob]"}, o.close = function () {this.size = 0, delete this.data}, n
}(t);
t.Blob = function (t, e) {
var r = e ? e.type || "" : "", i = new n;
if (t)for (var o = 0, a = t.length; a > o; o++)Uint8Array && t[o] instanceof Uint8Array ? i.append(t[o].buffer) : i.append(t[o]);
var s = i.getBlob(r);
return !s.slice && s.webkitSlice && (s.slice = s.webkitSlice), s
};
var r = Object.getPrototypeOf || function (t) {return t.__proto__};
t.Blob.prototype = r(new t.Blob)
}("undefined" != typeof self && self || "undefined" != typeof window && window || this.content || this);
var r = r || function (t) {
if ("undefined" == typeof navigator || !/MSIE [1-9]\./.test(navigator.userAgent)) {
var e = t.document, n = function () {return t.URL || t.webkitURL || t}, r = e.createElementNS("http://www.w3.org/1999/xhtml", "a"), i = "download" in r, o = function (t) {
var e = new MouseEvent("click");
t.dispatchEvent(e)
}, a = /Version\/[\d\.]+.*Safari/.test(navigator.userAgent), s = t.webkitRequestFileSystem, c = t.requestFileSystem || s || t.mozRequestFileSystem, u = function (e) {(t.setImmediate || t.setTimeout)(function () {throw e}, 0)}, l = "application/octet-stream", h = 0, f = 500, d = function (e) {
var r = function () {"string" == typeof e ? n().revokeObjectURL(e) : e.remove()};
t.chrome ? r() : setTimeout(r, f)
}, p = function (t, e, n) {
e = [].concat(e);
for (var r = e.length; r--;) {
var i = t["on" + e[r]];
if ("function" == typeof i)try {i.call(t, n || t)} catch (o) {u(o)}
}
}, m = function (t) {return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type) ? new Blob(["\ufeff", t], {type: t.type}) : t}, g = function (e, u, f) {
f || (e = m(e));
var g, w, y, v = this, b = e.type, x = !1, k = function () {p(v, "writestart progress write writeend".split(" "))}, A = function () {
if (w && a && "undefined" != typeof FileReader) {
var r = new FileReader;
return r.onloadend = function () {
var t = r.result;
w.location.href = "data:attachment/file" + t.slice(t.search(/[,;]/)), v.readyState = v.DONE, k()
}, r.readAsDataURL(e), void(v.readyState = v.INIT)
}
if (!x && g || (g = n().createObjectURL(e)), w)w.location.href = g; else {
var i = t.open(g, "_blank");
void 0 == i && a && (t.location.href = g)
}
v.readyState = v.DONE, k(), d(g)
}, C = function (t) {return function () {return v.readyState !== v.DONE ? t.apply(this, arguments) : void 0}}, _ = {
create: !0,
exclusive: !1
};
return v.readyState = v.INIT, u || (u = "download"), i ? (g = n().createObjectURL(e), void setTimeout(function () {r.href = g, r.download = u, o(r), k(), d(g), v.readyState = v.DONE})) : (t.chrome && b && b !== l && (y = e.slice || e.webkitSlice, e = y.call(e, 0, e.size, l), x = !0), s && "download" !== u && (u += ".download"), (b === l || s) && (w = t), c ? (h += e.size, void c(t.TEMPORARY, h, C(function (t) {
t.root.getDirectory("saved", _, C(function (t) {
var n = function () {
t.getFile(u, _, C(function (t) {
t.createWriter(C(function (n) {
n.onwriteend = function (e) {w.location.href = t.toURL(), v.readyState = v.DONE, p(v, "writeend", e), d(t)}, n.onerror = function () {
var t = n.error;
t.code !== t.ABORT_ERR && A()
}, "writestart progress write abort".split(" ").forEach(function (t) {n["on" + t] = v["on" + t]}), n.write(e), v.abort = function () {n.abort(), v.readyState = v.DONE}, v.readyState = v.WRITING
}), A)
}), A)
};
t.getFile(u, {create: !1}, C(function (t) {t.remove(), n()}), C(function (t) {t.code === t.NOT_FOUND_ERR ? n() : A()}))
}), A)
}), A)) : void A())
}, w = g.prototype, y = function (t, e, n) {return new g(t, e, n)};
return "undefined" != typeof navigator && navigator.msSaveOrOpenBlob ? function (t, e, n) {return n || (t = m(t)), navigator.msSaveOrOpenBlob(t, e || "download")} : (w.abort = function () {
var t = this;
t.readyState = t.DONE, p(t, "abort")
}, w.readyState = w.INIT = 0, w.WRITING = 1, w.DONE = 2, w.error = w.onwritestart = w.onprogress = w.onwrite = w.onabort = w.onerror = w.onwriteend = null, y)
}
}("undefined" != typeof self && self || "undefined" != typeof window && window || this.content);
"undefined" != typeof module && module.exports ? module.exports.saveAs = r : "undefined" != typeof define && null !== define && null != define.amd && define([], function () {return r}), /*
* Copyright (c) 2012 chick307 <chick307@gmail.com>
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
void function (t, e) {"object" == typeof module ? module.exports = e() : "function" == typeof define ? define(e) : t.adler32cs = e()}(e, function () {
var t = "function" == typeof ArrayBuffer && "function" == typeof Uint8Array, e = null, n = function () {
if (!t)return function () {return !1};
try {
var n = {};
"function" == typeof n.Buffer && (e = n.Buffer)
} catch (r) {}
return function (t) {return t instanceof ArrayBuffer || null !== e && t instanceof e}
}(), r = function () {return null !== e ? function (t) {return new e(t, "utf8").toString("binary")} : function (t) {return unescape(encodeURIComponent(t))}}(), i = 65521, o = function (t, e) {
for (var n = 65535 & t, r = t >>> 16, o = 0, a = e.length; a > o; o++)n = (n + (255 & e.charCodeAt(o))) % i, r = (r + n) % i;
return (r << 16 | n) >>> 0
}, a = function (t, e) {
for (var n = 65535 & t, r = t >>> 16, o = 0, a = e.length; a > o; o++)n = (n + e[o]) % i, r = (r + n) % i;
return (r << 16 | n) >>> 0
}, s = {}, c = s.Adler32 = function () {
var e = function (t) {
if (!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");
if (!isFinite(t = null == t ? 1 : +t))throw new Error("First arguments needs to be a finite number.");
this.checksum = t >>> 0
}, i = e.prototype = {};
return i.constructor = e, e.from = function (t) {return t.prototype = i, t}(function (t) {
if (!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");
if (null == t)throw new Error("First argument needs to be a string.");
this.checksum = o(1, t.toString())
}), e.fromUtf8 = function (t) {return t.prototype = i, t}(function (t) {
if (!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");
if (null == t)throw new Error("First argument needs to be a string.");
var n = r(t.toString());
this.checksum = o(1, n)
}), t && (e.fromBuffer = function (t) {return t.prototype = i, t}(function (t) {
if (!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");
if (!n(t))throw new Error("First argument needs to be ArrayBuffer.");
var r = new Uint8Array(t);
return this.checksum = a(1, r)
})), i.update = function (t) {
if (null == t)throw new Error("First argument needs to be a string.");
return t = t.toString(), this.checksum = o(this.checksum, t)
}, i.updateUtf8 = function (t) {
if (null == t)throw new Error("First argument needs to be a string.");
var e = r(t.toString());
return this.checksum = o(this.checksum, e)
}, t && (i.updateBuffer = function (t) {
if (!n(t))throw new Error("First argument needs to be ArrayBuffer.");
var e = new Uint8Array(t);
return this.checksum = a(this.checksum, e)
}), i.clone = function () {return new c(this.checksum)}, e
}();
return s.from = function (t) {
if (null == t)throw new Error("First argument needs to be a string.");
return o(1, t.toString())
}, s.fromUtf8 = function (t) {
if (null == t)throw new Error("First argument needs to be a string.");
var e = r(t.toString());
return o(1, e)
}, t && (s.fromBuffer = function (t) {
if (!n(t))throw new Error("First argument need to be ArrayBuffer.");
var e = new Uint8Array(t);
return a(1, e)
}), s
});
/**
* CssColors
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
var o = {};
o._colorsTable = {
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
gold: "#ffd700",
goldenrod: "#daa520",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
"indianred ": "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavender: "#e6e6fa",
lavenderblush: "#fff0f5",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgrey: "#d3d3d3",
lightgreen: "#90ee90",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370d8",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#d87093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
}, o.colorNameToHex = function (t) {return t = t.toLowerCase(), "undefined" != typeof this._colorsTable[t] ? this._colorsTable[t] : !1};
/*
Deflate.js - https://github.com/gildas-lormeau/zip.js
Copyright (c) 2013 Gildas Lormeau. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the distribution.
3. The names of the authors may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
var a = function (t) {
function e() {
function t(t) {
var e, n, i, o, a, c, u = r.dyn_tree, l = r.stat_desc.static_tree, h = r.stat_desc.extra_bits, f = r.stat_desc.extra_base, p = r.stat_desc.max_length, m = 0;
for (o = 0; s >= o; o++)t.bl_count[o] = 0;
for (u[2 * t.heap[t.heap_max] + 1] = 0, e = t.heap_max + 1; d > e; e++)n = t.heap[e], o = u[2 * u[2 * n + 1] + 1] + 1, o > p && (o = p, m++), u[2 * n + 1] = o, n > r.max_code || (t.bl_count[o]++, a = 0, n >= f && (a = h[n - f]), c = u[2 * n], t.opt_len += c * (o + a), l && (t.static_len += c * (l[2 * n + 1] + a)));
if (0 !== m) {
do {
for (o = p - 1; 0 === t.bl_count[o];)o--;
t.bl_count[o]--, t.bl_count[o + 1] += 2, t.bl_count[p]--, m -= 2
} while (m > 0);
for (o = p; 0 !== o; o--)for (n = t.bl_count[o]; 0 !== n;)i = t.heap[--e], i > r.max_code || (u[2 * i + 1] != o && (t.opt_len += (o - u[2 * i + 1]) * u[2 * i], u[2 * i + 1] = o), n--)
}
}
function e(t, e) {
var n = 0;
do n |= 1 & t, t >>>= 1, n <<= 1; while (--e > 0);
return n >>> 1
}
function n(t, n, r) {
var i, o, a, c = [], u = 0;
for (i = 1; s >= i; i++)c[i] = u = u + r[i - 1] << 1;
for (o = 0; n >= o; o++)a = t[2 * o + 1], 0 !== a && (t[2 * o] = e(c[a]++, a))
}
var r = this;
r.build_tree = function (e) {
var i, o, a, s = r.dyn_tree, c = r.stat_desc.static_tree, u = r.stat_desc.elems, l = -1;
for (e.heap_len = 0, e.heap_max = d, i = 0; u > i; i++)0 !== s[2 * i] ? (e.heap[++e.heap_len] = l = i, e.depth[i] = 0) : s[2 * i + 1] = 0;
for (; e.heap_len < 2;)a = e.heap[++e.heap_len] = 2 > l ? ++l : 0, s[2 * a] = 1, e.depth[a] = 0, e.opt_len--, c && (e.static_len -= c[2 * a + 1]);
for (r.max_code = l, i = Math.floor(e.heap_len / 2); i >= 1; i--)e.pqdownheap(s, i);
a = u;
do i = e.heap[1], e.heap[1] = e.heap[e.heap_len--], e.pqdownheap(s, 1), o = e.heap[1], e.heap[--e.heap_max] = i, e.heap[--e.heap_max] = o, s[2 * a] = s[2 * i] + s[2 * o], e.depth[a] = Math.max(e.depth[i], e.depth[o]) + 1, s[2 * i + 1] = s[2 * o + 1] = a, e.heap[1] = a++, e.pqdownheap(s, 1); while (e.heap_len >= 2);
e.heap[--e.heap_max] = e.heap[1], t(e), n(s, r.max_code, e.bl_count)
}
}
function n(t, e, n, r, i) {
var o = this;
o.static_tree = t, o.extra_bits = e, o.extra_base = n, o.elems = r, o.max_length = i
}
function r(t, e, n, r, i) {
var o = this;
o.good_length = t, o.max_lazy = e, o.nice_length = n, o.max_chain = r, o.func = i
}
function i(t, e, n, r) {
var i = t[2 * e], o = t[2 * n];
return o > i || i == o && r[e] <= r[n]
}
function o() {
function t() {
var t;
for (Pt = 2 * qt, Ft[Bt - 1] = 0, t = 0; Bt - 1 > t; t++)Ft[t] = 0;
Yt = L[Gt].max_lazy, Qt = L[Gt].good_length, Kt = L[Gt].nice_length, Vt = L[Gt].max_chain, Ut = 0, zt = 0, Wt = 0, Nt = Xt = tt - 1, Mt = 0, Ot = 0
}
function r() {
var t;
for (t = 0; f > t; t++)Zt[2 * t] = 0;
for (t = 0; c > t; t++)$t[2 * t] = 0;
for (t = 0; u > t; t++)te[2 * t] = 0;
Zt[2 * p] = 1, ee.opt_len = ee.static_len = 0, se = ue = 0
}
function o() {ne.dyn_tree = Zt, ne.stat_desc = n.static_l_desc, re.dyn_tree = $t, re.stat_desc = n.static_d_desc, ie.dyn_tree = te, ie.stat_desc = n.static_bl_desc, he = 0, fe = 0, le = 8, r()}
function a(t, e) {
var n, r, i = -1, o = t[1], a = 0, s = 7, c = 4;
for (0 === o && (s = 138, c = 3), t[2 * (e + 1) + 1] = 65535, n = 0; e >= n; n++)r = o, o = t[2 * (n + 1) + 1], ++a < s && r == o || (c > a ? te[2 * r] += a : 0 !== r ? (r != i && te[2 * r]++, te[2 * g]++) : 10 >= a ? te[2 * w]++ : te[2 * y]++, a = 0, i = r, 0 === o ? (s = 138, c = 3) : r == o ? (s = 6, c = 3) : (s = 7, c = 4))
}
function s() {
var t;
for (a(Zt, ne.max_code), a($t, re.max_code), ie.build_tree(ee), t = u - 1; t >= 3 && 0 === te[2 * e.bl_order[t] + 1]; t--);
return ee.opt_len += 3 * (t + 1) + 5 + 5 + 4, t
}
function l(t) {ee.pending_buf[ee.pending++] = t}
function d(t) {l(255 & t), l(t >>> 8 & 255)}
function m(t) {l(t >> 8 & 255), l(255 & t & 255)}
function B(t, e) {
var n, r = e;
fe > v - r ? (n = t, he |= n << fe & 65535, d(he), he = n >>> v - fe, fe += r - v) : (he |= t << fe & 65535, fe += r)
}
function rt(t, e) {
var n = 2 * t;
B(65535 & e[n], 65535 & e[n + 1])
}
function it(t, e) {
var n, r, i = -1, o = t[1], a = 0, s = 7, c = 4;
for (0 === o && (s = 138, c = 3), n = 0; e >= n; n++)if (r = o, o = t[2 * (n + 1) + 1], !(++a < s && r == o)) {
if (c > a) {do rt(r, te); while (0 !== --a)} else 0 !== r ? (r != i && (rt(r, te), a--), rt(g, te), B(a - 3, 2)) : 10 >= a ? (rt(w, te), B(a - 3, 3)) : (rt(y, te), B(a - 11, 7));
a = 0, i = r, 0 === o ? (s = 138, c = 3) : r == o ? (s = 6, c = 3) : (s = 7, c = 4)
}
}
function ot(t, n, r) {
var i;
for (B(t - 257, 5), B(n - 1, 5), B(r - 4, 4), i = 0; r > i; i++)B(te[2 * e.bl_order[i] + 1], 3);
it(Zt, t - 1), it($t, n - 1)
}
function at() {16 == fe ? (d(he), he = 0, fe = 0) : fe >= 8 && (l(255 & he), he >>>= 8, fe -= 8)}
function st() {B(Z << 1, 3), rt(p, n.static_ltree), at(), 9 > 1 + le + 10 - fe && (B(Z << 1, 3), rt(p, n.static_ltree), at()), le = 7}
function ct(t, n) {
var r, i, o;
if (ee.pending_buf[ce + 2 * se] = t >>> 8 & 255, ee.pending_buf[ce + 2 * se + 1] = 255 & t, ee.pending_buf[oe + se] = 255 & n, se++, 0 === t ? Zt[2 * n]++ : (ue++, t--, Zt[2 * (e._length_code[n] + h + 1)]++, $t[2 * e.d_code(t)]++), 0 === (8191 & se) && Gt > 2) {
for (r = 8 * se, i = Ut - zt, o = 0; c > o; o++)r += $t[2 * o] * (5 + e.extra_dbits[o]);
if (r >>>= 3, ue < Math.floor(se / 2) && r < Math.floor(i / 2))return !0
}
return se == ae - 1
}
function ut(t, n) {
var r, i, o, a, s = 0;
if (0 !== se)do r = ee.pending_buf[ce + 2 * s] << 8 & 65280 | 255 & ee.pending_buf[ce + 2 * s + 1], i = 255 & ee.pending_buf[oe + s], s++, 0 === r ? rt(i, t) : (o = e._length_code[i], rt(o + h + 1, t), a = e.extra_lbits[o], 0 !== a && (i -= e.base_length[o], B(i, a)), r--, o = e.d_code(r), rt(o, n), a = e.extra_dbits[o], 0 !== a && (r -= e.base_dist[o], B(r, a))); while (se > s);
rt(p, t), le = t[2 * p + 1]
}
function lt() {fe > 8 ? d(he) : fe > 0 && l(255 & he), he = 0, fe = 0}
function ht(t, e, n) {lt(), le = 8, n && (d(e), d(~e)), ee.pending_buf.set(Et.subarray(t, t + e), ee.pending), ee.pending += e}
function ft(t, e, n) {B((K << 1) + (n ? 1 : 0), 3), ht(t, e, !0)}
function dt(t, e, i) {
var o, a, c = 0;
Gt > 0 ? (ne.build_tree(ee), re.build_tree(ee), c = s(), o = ee.opt_len + 3 + 7 >>> 3, a = ee.static_len + 3 + 7 >>> 3, o >= a && (o = a)) : o = a = e + 5, o >= e + 4 && -1 != t ? ft(t, e, i) : a == o ? (B((Z << 1) + (i ? 1 : 0), 3), ut(n.static_ltree, n.static_dtree)) : (B(($ << 1) + (i ? 1 : 0), 3), ot(ne.max_code + 1, re.max_code + 1, c + 1), ut(Zt, $t)), r(), i && lt()
}
function pt(t) {dt(zt >= 0 ? zt : -1, Ut - zt, t), zt = Ut, xt.flush_pending()}
function mt() {
var t, e, n, r;
do {
if (r = Pt - Wt - Ut, 0 === r && 0 === Ut && 0 === Wt)r = qt; else if (-1 == r)r--; else if (Ut >= qt + qt - nt) {
Et.set(Et.subarray(qt, qt + qt), 0), Ht -= qt, Ut -= qt, zt -= qt, t = Bt, n = t;
do e = 65535 & Ft[--n], Ft[n] = e >= qt ? e - qt : 0; while (0 !== --t);
t = qt, n = t;
do e = 65535 & It[--n], It[n] = e >= qt ? e - qt : 0; while (0 !== --t);
r += qt
}
if (0 === xt.avail_in)return;
t = xt.read_buf(Et, Ut + Wt, r), Wt += t, Wt >= tt && (Ot = 255 & Et[Ut], Ot = (Ot << jt ^ 255 & Et[Ut + 1]) & Dt)
} while (nt > Wt && 0 !== xt.avail_in)
}
function gt(t) {
var e, n = 65535;
for (n > At - 5 && (n = At - 5); ;) {
if (1 >= Wt) {
if (mt(), 0 === Wt && t == C)return U;
if (0 === Wt)break
}
if (Ut += Wt, Wt = 0, e = zt + n, (0 === Ut || Ut >= e) && (Wt = Ut - e, Ut = e, pt(!1), 0 === xt.avail_out))return U;
if (Ut - zt >= qt - nt && (pt(!1), 0 === xt.avail_out))return U
}
return pt(t == S), 0 === xt.avail_out ? t == S ? W : U : t == S ? X : H
}
function wt(t) {
var e, n, r = Vt, i = Ut, o = Xt, a = Ut > qt - nt ? Ut - (qt - nt) : 0, s = Kt, c = Tt, u = Ut + et, l = Et[i + o - 1], h = Et[i + o];
Xt >= Qt && (r >>= 2), s > Wt && (s = Wt);
do if (e = t, Et[e + o] == h && Et[e + o - 1] == l && Et[e] == Et[i] && Et[++e] == Et[i + 1]) {
i += 2, e++;
do; while (Et[++i] == Et[++e] && Et[++i] == Et[++e] && Et[++i] == Et[++e] && Et[++i] == Et[++e] && Et[++i] == Et[++e] && Et[++i] == Et[++e] && Et[++i] == Et[++e] && Et[++i] == Et[++e] && u > i);
if (n = et - (u - i), i = u - et, n > o) {
if (Ht = t, o = n, n >= s)break;
l = Et[i + o - 1], h = Et[i + o]
}
} while ((t = 65535 & It[t & c]) > a && 0 !== --r);
return Wt >= o ? o : Wt
}
function yt(t) {
for (var e, n = 0; ;) {
if (nt > Wt) {
if (mt(), nt > Wt && t == C)return U;
if (0 === Wt)break
}
if (Wt >= tt && (Ot = (Ot << jt ^ 255 & Et[Ut + (tt - 1)]) & Dt, n = 65535 & Ft[Ot], It[Ut & Tt] = Ft[Ot], Ft[Ot] = Ut), 0 !== n && qt - nt >= (Ut - n & 65535) && Jt != k && (Nt = wt(n)), Nt >= tt)if (e = ct(Ut - Ht, Nt - tt), Wt -= Nt, Yt >= Nt && Wt >= tt) {
Nt--;
do Ut++, Ot = (Ot << jt ^ 255 & Et[Ut + (tt - 1)]) & Dt, n = 65535 & Ft[Ot], It[Ut & Tt] = Ft[Ot], Ft[Ot] = Ut; while (0 !== --Nt);
Ut++
} else Ut += Nt, Nt = 0, Ot = 255 & Et[Ut], Ot = (Ot << jt ^ 255 & Et[Ut + 1]) & Dt; else e = ct(0, 255 & Et[Ut]), Wt--, Ut++;
if (e && (pt(!1), 0 === xt.avail_out))return U
}
return pt(t == S), 0 === xt.avail_out ? t == S ? W : U : t == S ? X : H
}
function vt(t) {
for (var e, n, r = 0; ;) {
if (nt > Wt) {
if (mt(), nt > Wt && t == C)return U;
if (0 === Wt)break
}
if (Wt >= tt && (Ot = (Ot << jt ^ 255 & Et[Ut + (tt - 1)]) & Dt, r = 65535 & Ft[Ot], It[Ut & Tt] = Ft[Ot], Ft[Ot] = Ut), Xt = Nt, Lt = Ht, Nt = tt - 1, 0 !== r && Yt > Xt && qt - nt >= (Ut - r & 65535) && (Jt != k && (Nt = wt(r)), 5 >= Nt && (Jt == x || Nt == tt && Ut - Ht > 4096) && (Nt = tt - 1)), Xt >= tt && Xt >= Nt) {
n = Ut + Wt - tt, e = ct(Ut - 1 - Lt, Xt - tt), Wt -= Xt - 1, Xt -= 2;
do++Ut <= n && (Ot = (Ot << jt ^ 255 & Et[Ut + (tt - 1)]) & Dt, r = 65535 & Ft[Ot], It[Ut & Tt] = Ft[Ot], Ft[Ot] = Ut); while (0 !== --Xt);
if (Mt = 0, Nt = tt - 1, Ut++, e && (pt(!1), 0 === xt.avail_out))return U
} else if (0 !== Mt) {if (e = ct(0, 255 & Et[Ut - 1]), e && pt(!1), Ut++, Wt--, 0 === xt.avail_out)return U} else Mt = 1, Ut++, Wt--
}
return 0 !== Mt && (e = ct(0, 255 & Et[Ut - 1]), Mt = 0), pt(t == S), 0 === xt.avail_out ? t == S ? W : U : t == S ? X : H
}
function bt(e) {return e.total_in = e.total_out = 0, e.msg = null, ee.pending = 0, ee.pending_out = 0, kt = G, _t = C, o(), t(), T}
var xt, kt, At, Ct, _t, qt, St, Tt, Et, Pt, It, Ft, Ot, Bt, Rt, Dt, jt, zt, Nt, Lt, Mt, Ut, Ht, Wt, Xt, Vt, Yt, Gt, Jt, Qt, Kt, Zt, $t, te, ee = this, ne = new e, re = new e, ie = new e;
ee.depth = [];
var oe, ae, se, ce, ue, le, he, fe;
ee.bl_count = [], ee.heap = [], Zt = [], $t = [], te = [], ee.pqdownheap = function (t, e) {
for (var n = ee.heap, r = n[e], o = e << 1; o <= ee.heap_len && (o < ee.heap_len && i(t, n[o + 1], n[o], ee.depth) && o++, !i(t, r, n[o], ee.depth));)n[e] = n[o], e = o, o <<= 1;
n[e] = r
}, ee.deflateInit = function (t, e, n, r, i, o) {return r || (r = Q), i || (i = D), o || (o = A), t.msg = null, e == b && (e = 6), 1 > i || i > R || r != Q || 9 > n || n > 15 || 0 > e || e > 9 || 0 > o || o > k ? I : (t.dstate = ee, St = n, qt = 1 << St, Tt = qt - 1, Rt = i + 7, Bt = 1 << Rt, Dt = Bt - 1, jt = Math.floor((Rt + tt - 1) / tt), Et = new Uint8Array(2 * qt), It = [], Ft = [], ae = 1 << i + 6, ee.pending_buf = new Uint8Array(4 * ae), At = 4 * ae, ce = Math.floor(ae / 2), oe = 3 * ae, Gt = e, Jt = o, Ct = 255 & r, bt(t))}, ee.deflateEnd = function () {return kt != Y && kt != G && kt != J ? I : (ee.pending_buf = null, Ft = null, It = null, Et = null, ee.dstate = null, kt == G ? F : T)}, ee.deflateParams = function (t, e, n) {
var r = T;
return e == b && (e = 6), 0 > e || e > 9 || 0 > n || n > k ? I : (L[Gt].func != L[e].func && 0 !== t.total_in && (r = t.deflate(_)), Gt != e && (Gt = e, Yt = L[Gt].max_lazy, Qt = L[Gt].good_length, Kt = L[Gt].nice_length, Vt = L[Gt].max_chain), Jt = n, r)
}, ee.deflateSetDictionary = function (t, e, n) {
var r, i = n, o = 0;
if (!e || kt != Y)return I;
if (tt > i)return T;
for (i > qt - nt && (i = qt - nt, o = n - i), Et.set(e.subarray(o, o + i), 0), Ut = i, zt = i, Ot = 255 & Et[0], Ot = (Ot << jt ^ 255 & Et[1]) & Dt, r = 0; i - tt >= r; r++)Ot = (Ot << jt ^ 255 & Et[r + (tt - 1)]) & Dt, It[r & Tt] = Ft[Ot], Ft[Ot] = r;
return T
}, ee.deflate = function (t, e) {
var n, r, i, o, a;
if (e > S || 0 > e)return I;
if (!t.next_out || !t.next_in && 0 !== t.avail_in || kt == J && e != S)return t.msg = M[P - I], I;
if (0 === t.avail_out)return t.msg = M[P - O], O;
if (xt = t, o = _t, _t = e, kt == Y && (r = Q + (St - 8 << 4) << 8, i = (Gt - 1 & 255) >> 1, i > 3 && (i = 3), r |= i << 6, 0 !== Ut && (r |= V), r += 31 - r % 31, kt = G, m(r)), 0 !== ee.pending) {if (xt.flush_pending(), 0 === xt.avail_out)return _t = -1, T} else if (0 === xt.avail_in && o >= e && e != S)return xt.msg = M[P - O], O;
if (kt == J && 0 !== xt.avail_in)return t.msg = M[P - O], O;
if (0 !== xt.avail_in || 0 !== Wt || e != C && kt != J) {
switch (a = -1, L[Gt].func) {
case j:
a = gt(e);
break;
case z:
a = yt(e);
break;
case N:
a = vt(e)
}
if (a != W && a != X || (kt = J), a == U || a == W)return 0 === xt.avail_out && (_t = -1), T;
if (a == H) {
if (e == _)st(); else if (ft(0, 0, !1), e == q)for (n = 0; Bt > n; n++)Ft[n] = 0;
if (xt.flush_pending(), 0 === xt.avail_out)return _t = -1, T
}
}
return e != S ? T : E
}
}
function a() {
var t = this;
t.next_in_index = 0, t.next_out_index = 0, t.avail_in = 0, t.total_in = 0, t.avail_out = 0, t.total_out = 0
}
var s = 15, c = 30, u = 19, l = 29, h = 256, f = h + 1 + l, d = 2 * f + 1, p = 256, m = 7, g = 16, w = 17, y = 18, v = 16, b = -1, x = 1, k = 2, A = 0, C = 0, _ = 1, q = 3, S = 4, T = 0, E = 1, P = 2, I = -2, F = -3, O = -5, B = [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29];
e._length_code = [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28], e.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0], e.base_dist = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576], e.d_code = function (t) {return 256 > t ? B[t] : B[256 + (t >>> 7)]}, e.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], e.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], e.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], e.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], n.static_ltree = [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8], n.static_dtree = [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5], n.static_l_desc = new n(n.static_ltree, e.extra_lbits, h + 1, f, s), n.static_d_desc = new n(n.static_dtree, e.extra_dbits, 0, c, s), n.static_bl_desc = new n(null, e.extra_blbits, 0, u, m);
var R = 9, D = 8, j = 0, z = 1, N = 2, L = [new r(0, 0, 0, 0, j), new r(4, 4, 8, 4, z), new r(4, 5, 16, 8, z), new r(4, 6, 32, 32, z), new r(4, 4, 16, 16, N), new r(8, 16, 32, 32, N), new r(8, 16, 128, 128, N), new r(8, 32, 128, 256, N), new r(32, 128, 258, 1024, N), new r(32, 258, 258, 4096, N)], M = ["need dictionary", "stream end", "", "", "stream error", "data error", "", "buffer error", "", ""], U = 0, H = 1, W = 2, X = 3, V = 32, Y = 42, G = 113, J = 666, Q = 8, K = 0, Z = 1, $ = 2, tt = 3, et = 258, nt = et + tt + 1;
return a.prototype = {
deflateInit: function (t, e) {
var n = this;
return n.dstate = new o, e || (e = s), n.dstate.deflateInit(n, t, e)
}, deflate: function (t) {
var e = this;
return e.dstate ? e.dstate.deflate(e, t) : I
}, deflateEnd: function () {
var t = this;
if (!t.dstate)return I;
var e = t.dstate.deflateEnd();
return t.dstate = null, e
}, deflateParams: function (t, e) {
var n = this;
return n.dstate ? n.dstate.deflateParams(n, t, e) : I
}, deflateSetDictionary: function (t, e) {
var n = this;
return n.dstate ? n.dstate.deflateSetDictionary(n, t, e) : I
}, read_buf: function (t, e, n) {
var r = this, i = r.avail_in;
return i > n && (i = n), 0 === i ? 0 : (r.avail_in -= i, t.set(r.next_in.subarray(r.next_in_index, r.next_in_index + i), e), r.next_in_index += i, r.total_in += i, i)
}, flush_pending: function () {
var t = this, e = t.dstate.pending;
e > t.avail_out && (e = t.avail_out), 0 !== e && (t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out, t.dstate.pending_out + e), t.next_out_index), t.next_out_index += e, t.dstate.pending_out += e, t.total_out += e, t.avail_out -= e, t.dstate.pending -= e, 0 === t.dstate.pending && (t.dstate.pending_out = 0))
}
}, function (t) {
var e = this, n = new a, r = 512, i = C, o = new Uint8Array(r);
"undefined" == typeof t && (t = b), n.deflateInit(t), n.next_out = o, e.append = function (t, e) {
var a, s, c = [], u = 0, l = 0, h = 0;
if (t.length) {
n.next_in_index = 0, n.next_in = t, n.avail_in = t.length;
do {
if (n.next_out_index = 0, n.avail_out = r, a = n.deflate(i), a != T)throw"deflating: " + n.msg;
n.next_out_index && (n.next_out_index == r ? c.push(new Uint8Array(o)) : c.push(new Uint8Array(o.subarray(0, n.next_out_index)))), h += n.next_out_index, e && n.next_in_index > 0 && n.next_in_index != u && (e(n.next_in_index), u = n.next_in_index)
} while (n.avail_in > 0 || 0 === n.avail_out);
return s = new Uint8Array(h), c.forEach(function (t) {s.set(t, l), l += t.length}), s
}
}, e.flush = function () {
var t, e, i = [], a = 0, s = 0;
do {
if (n.next_out_index = 0, n.avail_out = r, t = n.deflate(S), t != E && t != T)throw"deflating: " + n.msg;
r - n.avail_out > 0 && i.push(new Uint8Array(o.subarray(0, n.next_out_index))), s += n.next_out_index
} while (n.avail_in > 0 || 0 === n.avail_out);
return n.deflateEnd(), e = new Uint8Array(s), i.forEach(function (t) {e.set(t, a), a += t.length}), e
}
}
}(this);
/*
html2canvas 0.5.0-alpha <http://html2canvas.hertzen.com>
Copyright (c) 2014 Niklas von Hertzen
Released under MIT License
*/
(function (t, e, n, r, i, o, a) {
function s(t, e, n, r) {
return p(t, t, n, r, e).then(function (i) {
I("Document cloned");
var o = "[" + Wt + "='true']";
t.querySelector(o).removeAttribute(Wt);
var a = i.contentWindow, s = a.document.querySelector(o), u = "function" == typeof e.onclone ? Promise.resolve(e.onclone(a.document)) : Promise.resolve(!0);
return u.then(function () {return c(s, i, e, n, r)})
})
}
function c(t, n, r, i, o) {
var a = n.contentWindow, s = new Bt(a.document), c = new E(r, s), d = N(t), p = "view" === r.type ? i : h(a.document), m = "view" === r.type ? o : f(a.document), g = new Ut(p, m, c, r, e), w = new M(t, g, s, c, r);
return w.ready.then(function () {
I("Finished rendering");
var e;
return e = "view" === r.type ? l(g.canvas, {
width: g.canvas.width,
height: g.canvas.height,
top: 0,
left: 0,
x: 0,
y: 0
}) : t === a.document.body || t === a.document.documentElement || null != r.canvas ? g.canvas : l(g.canvas, {
width: null != r.width ? r.width : d.width,
height: null != r.height ? r.height : d.height,
top: d.top,
left: d.left,
x: a.pageXOffset,
y: a.pageYOffset
}), u(n, r), e
})
}
function u(t, e) {e.removeContainer && (t.parentNode.removeChild(t), I("Cleaned up container"))}
function l(t, n) {
var r = e.createElement("canvas"), i = Math.min(t.width - 1, Math.max(0, n.left)), o = Math.min(t.width, Math.max(1, n.left + n.width)), a = Math.min(t.height - 1, Math.max(0, n.top)), s = Math.min(t.height, Math.max(1, n.top + n.height));
return r.width = n.width, r.height = n.height, I("Cropping canvas at:", "left:", n.left, "top:", n.top, "width:", o - i, "height:", s - a), I("Resulting crop with width", n.width, "and height", n.height, " with x", i, "and y", a), r.getContext("2d").drawImage(t, i, a, o - i, s - a, n.x, n.y, o - i, s - a), r
}
function h(t) {return Math.max(Math.max(t.body.scrollWidth, t.documentElement.scrollWidth), Math.max(t.body.offsetWidth, t.documentElement.offsetWidth), Math.max(t.body.clientWidth, t.documentElement.clientWidth))}
function f(t) {return Math.max(Math.max(t.body.scrollHeight, t.documentElement.scrollHeight), Math.max(t.body.offsetHeight, t.documentElement.offsetHeight), Math.max(t.body.clientHeight, t.documentElement.clientHeight))}
function d() {return "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"}
function p(t, e, n, r, i) {
y(t);
var o = t.documentElement.cloneNode(!0), a = e.createElement("iframe");
return a.className = "html2canvas-container", a.style.visibility = "hidden", a.style.position = "fixed", a.style.left = "-10000px", a.style.top = "0px", a.style.border = "0", a.width = n, a.height = r, a.scrolling = "no", e.body.appendChild(a), new Promise(function (e) {
var n = a.contentWindow.document;
a.contentWindow.onload = a.onload = function () {var o = setInterval(function () {n.body.childNodes.length > 0 && (v(t, n), clearInterval(o), "view" === i.type && a.contentWindow.scrollTo(r, s), e(a))}, 50)};
var r = t.defaultView.pageXOffset, s = t.defaultView.pageYOffset;
n.open(), n.write("<!DOCTYPE html><html></html>"), m(t, r, s), n.replaceChild(i.javascriptEnabled === !0 ? n.adoptNode(o) : b(n.adoptNode(o)), n.documentElement), n.close()
})
}
function m(t, e, n) {e === t.defaultView.pageXOffset && n === t.defaultView.pageYOffset || t.defaultView.scrollTo(e, n)}
function g(e, n, r, i, o, a) {return new _t(e, n, t.document).then(w(e)).then(function (t) {return p(t, r, i, o, a)})}
function w(t) {
return function (n) {
var r, i = new DOMParser;
try {r = i.parseFromString(n, "text/html")} catch (o) {
I("DOMParser not supported, falling back to createHTMLDocument"), r = e.implementation.createHTMLDocument("");
try {r.open(), r.write(n), r.close()} catch (a) {I("createHTMLDocument write not supported, falling back to document.body.innerHTML"), r.body.innerHTML = n}
}
var s = r.querySelector("base");
if (!s || !s.href.host) {
var c = r.createElement("base");
c.href = t, r.head.insertBefore(c, r.head.firstChild)
}
return r
}
}
function y(t) {[].slice.call(t.querySelectorAll("canvas"), 0).forEach(function (t) {t.setAttribute(Xt, "canvas-" + Vt++)})}
function v(t, e) {
[].slice.call(t.querySelectorAll("[" + Xt + "]"), 0).forEach(function (t) {
try {
var n = e.querySelector("[" + Xt + '="' + t.getAttribute(Xt) + '"]');
n && (n.width = t.width, n.height = t.height, n.getContext("2d").putImageData(t.getContext("2d").getImageData(0, 0, t.width, t.height), 0, 0))
} catch (r) {I("Unable to copy canvas content from", t, r)}
t.removeAttribute(Xt)
})
}
function b(t) {return [].slice.call(t.childNodes, 0).filter(x).forEach(function (e) {"SCRIPT" === e.tagName ? t.removeChild(e) : b(e)}), t}
function x(t) {return t.nodeType === Node.ELEMENT_NODE}
function k(t) {
var n = e.createElement("a");
return n.href = t, n.href = n.href, n
}
function A(t) {
if (this.src = t, I("DummyImageContainer for", t), !this.promise || !this.image) {
I("Initiating DummyImageContainer"), A.prototype.image = new Image;
var e = this.image;
A.prototype.promise = new Promise(function (t, n) {e.onload = t, e.onerror = n, e.src = d(), e.complete === !0 && t(e)})
}
}
function C(t, n) {
var r, i, o = e.createElement("div"), a = e.createElement("img"), s = e.createElement("span"), c = "Hidden Text";
o.style.visibility = "hidden", o.style.fontFamily = t, o.style.fontSize = n, o.style.margin = 0, o.style.padding = 0, e.body.appendChild(o), a.src = d(), a.width = 1, a.height = 1, a.style.margin = 0, a.style.padding = 0, a.style.verticalAlign = "baseline", s.style.fontFamily = t, s.style.fontSize = n, s.style.margin = 0, s.style.padding = 0, s.appendChild(e.createTextNode(c)), o.appendChild(s), o.appendChild(a), r = a.offsetTop - s.offsetTop + 1, o.removeChild(s), o.appendChild(e.createTextNode(c)), o.style.lineHeight = "normal", a.style.verticalAlign = "super", i = a.offsetTop - o.offsetTop + 1, e.body.removeChild(o), this.baseline = r, this.lineWidth = 1, this.middle = i
}
function _() {this.data = {}}
function q(t, e, n) {
this.image = null, this.src = t;
var r = this, i = N(t);
this.promise = (e ? new Promise(function (e) {"about:blank" === t.contentWindow.document.URL || null == t.contentWindow.document.documentElement ? t.contentWindow.onload = t.onload = function () {e(t)} : e(t)}) : this.proxyLoad(n.proxy, i, n)).then(function (t) {
return html2canvas(t.contentWindow.document.documentElement, {
type: "view",
width: t.width,
height: t.height,
proxy: n.proxy,
javascriptEnabled: n.javascriptEnabled,
removeContainer: n.removeContainer,
allowTaint: n.allowTaint,
imageTimeout: n.imageTimeout / 2
})
}).then(function (t) {return r.image = t})
}
function S(t) {this.src = t.value, this.colorStops = [], this.type = null, this.x0 = .5, this.y0 = .5, this.x1 = .5, this.y1 = .5, this.promise = Promise.resolve(!0)}
function T(t, e) {
this.src = t, this.image = new Image;
var n = this;
this.tainted = null, this.promise = new Promise(function (r, i) {n.image.onload = r, n.image.onerror = i, e && (n.image.crossOrigin = "anonymous"), n.image.src = t, n.image.complete === !0 && r(n.image)})
}
function E(e, n) {this.link = null, this.options = e, this.support = n, this.origin = this.getOrigin(t.location.href)}
function P(t) {
S.apply(this, arguments), this.type = this.TYPES.LINEAR;
var e = null === t.args[0].match(this.stepRegExp);
e ? t.args[0].split(" ").reverse().forEach(function (t) {
switch (t) {
case"left":
this.x0 = 0, this.x1 = 1;
break;
case"top":
this.y0 = 0, this.y1 = 1;
break;
case"right":
this.x0 = 1, this.x1 = 0;
break;
case"bottom":
this.y0 = 1, this.y1 = 0;
break;
case"to":
var e = this.y0, n = this.x0;
this.y0 = this.y1, this.x0 = this.x1, this.x1 = n, this.y1 = e
}
}, this) : (this.y0 = 0, this.y1 = 1), this.colorStops = t.args.slice(e ? 1 : 0).map(function (t) {
var e = t.match(this.stepRegExp);
return {color: e[1], stop: "%" === e[3] ? e[2] / 100 : null}
}, this), null === this.colorStops[0].stop && (this.colorStops[0].stop = 0), null === this.colorStops[this.colorStops.length - 1].stop && (this.colorStops[this.colorStops.length - 1].stop = 1), this.colorStops.forEach(function (t, e) {null === t.stop && this.colorStops.slice(e).some(function (n, r) {return null !== n.stop ? (t.stop = (n.stop - this.colorStops[e - 1].stop) / (r + 1) + this.colorStops[e - 1].stop, !0) : !1}, this)}, this)
}
function I() {t.html2canvas.logging && t.console && t.console.log && Function.prototype.bind.call(t.console.log, t.console).apply(t.console, [Date.now() - t.html2canvas.start + "ms", "html2canvas:"].concat([].slice.call(arguments, 0)))}
function F(t, e) {this.node = t, this.parent = e, this.stack = null, this.bounds = null, this.borders = null, this.clip = [], this.backgroundClip = [], this.offsetBounds = null, this.visible = null, this.computedStyles = null, this.styles = {}, this.backgroundImages = null, this.transformData = null, this.transformMatrix = null, this.isPseudoElement = !1, this.opacity = null}
function O(t) {
var e = t.options[t.selectedIndex || 0];
return e ? e.text || "" : ""
}
function B(t) {return t && "matrix" === t[1] ? t[2].split(",").map(function (t) {return parseFloat(t.trim())}) : void 0}
function R(t) {return -1 !== t.toString().indexOf("%")}
function D(t) {
var e, n, r, i, o, a, s, c = " \r\n ", u = [], l = 0, h = 0, f = function () {
e && ('"' === n.substr(0, 1) && (n = n.substr(1, n.length - 2)), n && s.push(n), "-" === e.substr(0, 1) && (i = e.indexOf("-", 1) + 1) > 0 && (r = e.substr(0, i), e = e.substr(i)), u.push({
prefix: r,
method: e.toLowerCase(),
value: o,
args: s,
image: null
})), s = [], e = r = n = o = ""
};
return s = [], e = r = n = o = "", t.split("").forEach(function (t) {
if (!(0 === l && c.indexOf(t) > -1)) {
switch (t) {
case'"':
a ? a === t && (a = null) : a = t;
break;
case"(":
if (a)break;
if (0 === l)return l = 1, void(o += t);
h++;
break;
case")":
if (a)break;
if (1 === l) {
if (0 === h)return l = 0, o += t, void f();
h--
}
break;
case",":
if (a)break;
if (0 === l)return void f();
if (1 === l && 0 === h && !e.match(/^url$/i))return s.push(n), n = "", void(o += t)
}
o += t, 0 === l ? e += t : n += t
}
}), f(), u
}
function j(t) {return t.replace("px", "")}
function z(t) {return parseFloat(t)}
function N(t) {
if (t.getBoundingClientRect) {
var e = t.getBoundingClientRect(), n = null == t.offsetWidth ? e.width : t.offsetWidth;
return {
top: e.top,
bottom: e.bottom || e.top + e.height,
right: e.left + n,
left: e.left,
width: n,
height: null == t.offsetHeight ? e.height : t.offsetHeight
}
}
return {}
}
function L(t) {
var e = t.offsetParent ? L(t.offsetParent) : {top: 0, left: 0};
return {
top: t.offsetTop + e.top,
bottom: t.offsetTop + t.offsetHeight + e.top,
right: t.offsetLeft + e.left + t.offsetWidth,
left: t.offsetLeft + e.left,
width: t.offsetWidth,
height: t.offsetHeight
}
}
function M(t, e, n, r, i) {
I("Starting NodeParser"), this.renderer = e, this.options = i, this.range = null, this.support = n, this.renderQueue = [], this.stack = new Ot(!0, 1, t.ownerDocument, null);
var o = new F(t, null);
if (t === t.ownerDocument.documentElement) {
var a = new F(this.renderer.isTransparent(o.css("backgroundColor")) ? t.ownerDocument.body : t.ownerDocument.documentElement, null);
e.rectangle(0, 0, e.width, e.height, a.css("backgroundColor"))
}
o.visibile = o.isElementVisible(), this.createPseudoHideStyles(t.ownerDocument), this.disableAnimations(t.ownerDocument), this.nodes = bt([o].concat(this.getChildren(o)).filter(function (t) {return t.visible = t.isElementVisible()}).map(this.getPseudoElements, this)), this.fontMetrics = new _, I("Fetched nodes, total:", this.nodes.length), I("Calculate overflow clips"), this.calculateOverflowClips(), I("Start fetching images"), this.images = r.fetch(this.nodes.filter(ht)), this.ready = this.images.ready.then(gt(function () {return I("Images loaded, starting parsing"), I("Creating stacking contexts"), this.createStackingContexts(), I("Sorting stacking contexts"), this.sortStackingContexts(this.stack), this.parse(this.stack), I("Render queue created with " + this.renderQueue.length + " items"), new Promise(gt(function (t) {i.async ? "function" == typeof i.async ? i.async.call(this, this.renderQueue, t) : this.renderQueue.length > 0 ? (this.renderIndex = 0, this.asyncRenderer(this.renderQueue, t)) : t() : (this.renderQueue.forEach(this.paint, this), t())}, this))}, this))
}
function U(t) {return t.parent && t.parent.clip.length}
function H(t) {return t.replace(/(\-[a-z])/g, function (t) {return t.toUpperCase().replace("-", "")})}
function W() {}
function X(t, e, n, r) {
return t.map(function (i, o) {
if (i.width > 0) {
var a = e.left, s = e.top, c = e.width, u = e.height - t[2].width;
switch (o) {
case 0:
u = t[0].width, i.args = J({
c1: [a, s],
c2: [a + c, s],
c3: [a + c - t[1].width, s + u],
c4: [a + t[3].width, s + u]
}, r[0], r[1], n.topLeftOuter, n.topLeftInner, n.topRightOuter, n.topRightInner);
break;
case 1:
a = e.left + e.width - t[1].width, c = t[1].width, i.args = J({
c1: [a + c, s],
c2: [a + c, s + u + t[2].width],
c3: [a, s + u],
c4: [a, s + t[0].width]
}, r[1], r[2], n.topRightOuter, n.topRightInner, n.bottomRightOuter, n.bottomRightInner);
break;
case 2:
s = s + e.height - t[2].width, u = t[2].width, i.args = J({
c1: [a + c, s + u],
c2: [a, s + u],
c3: [a + t[3].width, s],
c4: [a + c - t[3].width, s]
}, r[2], r[3], n.bottomRightOuter, n.bottomRightInner, n.bottomLeftOuter, n.bottomLeftInner);
break;
case 3:
c = t[3].width, i.args = J({
c1: [a, s + u + t[2].width],
c2: [a, s],
c3: [a + c, s + t[0].width],
c4: [a + c, s + u]
}, r[3], r[0], n.bottomLeftOuter, n.bottomLeftInner, n.topLeftOuter, n.topLeftInner)
}
}
return i
})
}
function V(t, e, n, r) {
var i = 4 * ((Math.sqrt(2) - 1) / 3), o = n * i, a = r * i, s = t + n, c = e + r;
return {
topLeft: G({x: t, y: c}, {x: t, y: c - a}, {x: s - o, y: e}, {x: s, y: e}),
topRight: G({x: t, y: e}, {x: t + o, y: e}, {x: s, y: c - a}, {x: s, y: c}),
bottomRight: G({x: s, y: e}, {x: s, y: e + a}, {x: t + o, y: c}, {x: t, y: c}),
bottomLeft: G({x: s, y: c}, {x: s - o, y: c}, {x: t, y: e + a}, {x: t, y: e})
}
}
function Y(t, e, n) {
var r = t.left, i = t.top, o = t.width, a = t.height, s = e[0][0], c = e[0][1], u = e[1][0], l = e[1][1], h = e[2][0], f = e[2][1], d = e[3][0], p = e[3][1], m = o - u, g = a - f, w = o - h, y = a - p;
return {
topLeftOuter: V(r, i, s, c).topLeft.subdivide(.5),
topLeftInner: V(r + n[3].width, i + n[0].width, Math.max(0, s - n[3].width), Math.max(0, c - n[0].width)).topLeft.subdivide(.5),
topRightOuter: V(r + m, i, u, l).topRight.subdivide(.5),
topRightInner: V(r + Math.min(m, o + n[3].width), i + n[0].width, m > o + n[3].width ? 0 : u - n[3].width, l - n[0].width).topRight.subdivide(.5),
bottomRightOuter: V(r + w, i + g, h, f).bottomRight.subdivide(.5),
bottomRightInner: V(r + Math.min(w, o - n[3].width), i + Math.min(g, a + n[0].width), Math.max(0, h - n[1].width), f - n[2].width).bottomRight.subdivide(.5),
bottomLeftOuter: V(r, i + y, d, p).bottomLeft.subdivide(.5),
bottomLeftInner: V(r + n[3].width, i + y, Math.max(0, d - n[3].width), p - n[2].width).bottomLeft.subdivide(.5)
}
}
function G(t, e, n, r) {
var i = function (t, e, n) {
return {
x: t.x + (e.x - t.x) * n,
y: t.y + (e.y - t.y) * n
}
};
return {
start: t,
startControl: e,
endControl: n,
end: r,
subdivide: function (o) {
var a = i(t, e, o), s = i(e, n, o), c = i(n, r, o), u = i(a, s, o), l = i(s, c, o), h = i(u, l, o);
return [G(t, a, u, h), G(h, l, c, r)]
},
curveTo: function (t) {t.push(["bezierCurve", e.x, e.y, n.x, n.y, r.x, r.y])},
curveToReversed: function (r) {r.push(["bezierCurve", n.x, n.y, e.x, e.y, t.x, t.y])}
}
}
function J(t, e, n, r, i, o, a) {
var s = [];
return e[0] > 0 || e[1] > 0 ? (s.push(["line", r[1].start.x, r[1].start.y]), r[1].curveTo(s)) : s.push(["line", t.c1[0], t.c1[1]]), n[0] > 0 || n[1] > 0 ? (s.push(["line", o[0].start.x, o[0].start.y]), o[0].curveTo(s), s.push(["line", a[0].end.x, a[0].end.y]), a[0].curveToReversed(s)) : (s.push(["line", t.c2[0], t.c2[1]]), s.push(["line", t.c3[0], t.c3[1]])), e[0] > 0 || e[1] > 0 ? (s.push(["line", i[1].end.x, i[1].end.y]), i[1].curveToReversed(s)) : s.push(["line", t.c4[0], t.c4[1]]), s
}
function Q(t, e, n, r, i, o, a) {e[0] > 0 || e[1] > 0 ? (t.push(["line", r[0].start.x, r[0].start.y]), r[0].curveTo(t), r[1].curveTo(t)) : t.push(["line", o, a]), (n[0] > 0 || n[1] > 0) && t.push(["line", i[0].start.x, i[0].start.y])}
function K(t) {return t.cssInt("zIndex") < 0}
function Z(t) {return t.cssInt("zIndex") > 0}
function $(t) {return 0 === t.cssInt("zIndex")}
function tt(t) {return -1 !== ["inline", "inline-block", "inline-table"].indexOf(t.css("display"))}
function et(t) {return t instanceof Ot}
function nt(t) {return t.node.data.trim().length > 0}
function rt(t) {return /^(normal|none|0px)$/.test(t.parent.css("letterSpacing"))}
function it(t) {
return ["TopLeft", "TopRight", "BottomRight", "BottomLeft"].map(function (e) {
var n = t.css("border" + e + "Radius"), r = n.split(" ");
return r.length <= 1 && (r[1] = r[0]), r.map(wt)
})
}
function ot(t) {return t.nodeType === Node.TEXT_NODE || t.nodeType === Node.ELEMENT_NODE}
function at(t) {
var e = t.css("position"), n = -1 !== ["absolute", "relative", "fixed"].indexOf(e) ? t.css("zIndex") : "auto";
return "auto" !== n
}
function st(t) {return "static" !== t.css("position")}
function ct(t) {return "none" !== t.css("float")}
function ut(t) {return -1 !== ["inline-block", "inline-table"].indexOf(t.css("display"))}
function lt(t) {
var e = this;
return function () {return !t.apply(e, arguments)}
}
function ht(t) {return t.node.nodeType === Node.ELEMENT_NODE}
function ft(t) {return t.isPseudoElement === !0}
function dt(t) {return t.node.nodeType === Node.TEXT_NODE}
function pt(t) {return function (e, n) {return e.cssInt("zIndex") + t.indexOf(e) / t.length - (n.cssInt("zIndex") + t.indexOf(n) / t.length)}}
function mt(t) {return t.getOpacity() < 1}
function gt(t, e) {return function () {return t.apply(e, arguments)}}
function wt(t) {return parseInt(t, 10)}
function yt(t) {return t.width}
function vt(t) {return t.node.nodeType !== Node.ELEMENT_NODE || -1 === ["SCRIPT", "HEAD", "TITLE", "OBJECT", "BR", "OPTION"].indexOf(t.node.nodeName)}
function bt(t) {return [].concat.apply([], t)}
function xt(t) {
var e = t.substr(0, 1);
return e === t.substr(t.length - 1) && e.match(/'|"/) ? t.substr(1, t.length - 2) : t
}
function kt(e) {
for (var n, r = [], i = 0, o = !1; e.length;)At(e[i]) === o ? (n = e.splice(0, i), n.length && r.push(t.html2canvas.punycode.ucs2.encode(n)), o = !o, i = 0) : i++, i >= e.length && (n = e.splice(0, i), n.length && r.push(t.html2canvas.punycode.ucs2.encode(n)));
return r
}
function At(t) {return -1 !== [32, 13, 10, 9, 45].indexOf(t)}
function Ct(t) {return /[^\u0000-\u00ff]/.test(t)}
function _t(t, e, n) {
var r = Tt(Gt), i = Et(e, t, r);
return Gt ? Mt(i) : St(n, i, r).then(function (t) {return Dt(t.content)})
}
function qt(t, e, n) {
var r = Tt(Jt), i = Et(e, t, r);
return Jt ? Promise.resolve(i) : St(n, i, r).then(function (t) {return "data:" + t.type + ";base64," + t.content})
}
function St(e, n, r) {
return new Promise(function (i, o) {
var a = e.createElement("script"), s = function () {delete t.html2canvas.proxy[r], e.body.removeChild(a)};
t.html2canvas.proxy[r] = function (t) {s(), i(t)}, a.src = n, a.onerror = function (t) {s(), o(t)}, e.body.appendChild(a)
})
}
function Tt(t) {return t ? "" : "html2canvas_" + Date.now() + "_" + ++Yt + "_" + Math.round(1e5 * Math.random())}
function Et(t, e, n) {return t + "?url=" + encodeURIComponent(e) + (n.length ? "&callback=html2canvas.proxy." + n : "")}
function Pt(t, n) {
var r = (e.createElement("script"), e.createElement("a"));
r.href = t, t = r.href, this.src = t, this.image = new Image;
var i = this;
this.promise = new Promise(function (r, o) {i.image.crossOrigin = "Anonymous", i.image.onload = r, i.image.onerror = o, new qt(t, n, e).then(function (t) {i.image.src = t})["catch"](o)})
}
function It(t, e, n) {F.call(this, t, e), this.isPseudoElement = !0, this.before = ":before" === n}
function Ft(t, e, n, r, i) {this.width = t, this.height = e, this.images = n, this.options = r, this.document = i}
function Ot(t, e, n, r) {F.call(this, n, r), this.ownStacking = t, this.contexts = [], this.children = [], this.opacity = (this.parent ? this.parent.stack.opacity : 1) * e}
function Bt(t) {this.rangeBounds = this.testRangeBounds(t), this.cors = this.testCORS(), this.svg = this.testSVG()}
function Rt(t) {
this.src = t, this.image = null;
var e = this;
this.promise = this.hasFabric().then(function () {return e.isInline(t) ? Promise.resolve(e.inlineFormatting(t)) : Mt(t)}).then(function (t) {return new Promise(function (n) {html2canvas.fabric.loadSVGFromString(t, e.createCanvas.call(e, n))})})
}
/*
* base64-arraybuffer
* https://github.com/niklasvh/base64-arraybuffer
*
* Copyright (c) 2012 Niklas von Hertzen
* Licensed under the MIT license.
*/
function Dt(t) {
var e, n, r, i, o, a, s, c, u = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", l = t.length, h = "";
for (e = 0; l > e; e += 4)n = u.indexOf(t[e]), r = u.indexOf(t[e + 1]), i = u.indexOf(t[e + 2]), o = u.indexOf(t[e + 3]), a = n << 2 | r >> 4, s = (15 & r) << 4 | i >> 2, c = (3 & i) << 6 | o, h += 64 === i ? String.fromCharCode(a) : 64 === o || -1 === o ? String.fromCharCode(a, s) : String.fromCharCode(a, s, c);
return h
}
function jt(t, e) {
this.src = t, this.image = null;
var n = this;
this.promise = e ? new Promise(function (e, r) {n.image = new Image, n.image.onload = e, n.image.onerror = r, n.image.src = "data:image/svg+xml," + (new XMLSerializer).serializeToString(t), n.image.complete === !0 && e(n.image)}) : this.hasFabric().then(function () {return new Promise(function (e) {html2canvas.fabric.parseSVGDocument(t, n.createCanvas.call(n, e))})})
}
function zt(t, e) {F.call(this, t, e)}
function Nt(t, e, n) {return t.length > 0 ? e + n.toUpperCase() : void 0}
function Lt(t) {S.apply(this, arguments), this.type = "linear" === t.args[0] ? this.TYPES.LINEAR : this.TYPES.RADIAL}
function Mt(t) {
return new Promise(function (e, n) {
var r = new XMLHttpRequest;
r.open("GET", t), r.onload = function () {200 === r.status ? e(r.responseText) : n(new Error(r.statusText))}, r.onerror = function () {n(new Error("Network Error"))}, r.send()
})
}
function Ut(t, e) {Ft.apply(this, arguments), this.canvas = this.options.canvas || this.document.createElement("canvas"), this.options.canvas || (this.canvas.width = t, this.canvas.height = e), this.ctx = this.canvas.getContext("2d"), this.options.background && this.rectangle(0, 0, t, e, this.options.background), this.taintCtx = this.document.createElement("canvas").getContext("2d"), this.ctx.textBaseline = "bottom", this.variables = {}, I("Initialized CanvasRenderer with size", t, "x", e)}
function Ht(t) {return t.length > 0}
if (/*
Copyright (c) 2013 Yehuda Katz, Tom Dale, and contributors
*/
!function () {
var n, r, o, a;
!function () {
var t = {}, e = {};
n = function (e, n, r) {
t[e] = {
deps: n,
callback: r
}
}, a = o = r = function (n) {
function i(t) {
if ("." !== t.charAt(0))return t;
for (var e = t.split("/"), r = n.split("/").slice(0, -1), i = 0, o = e.length; o > i; i++) {
var a = e[i];
if (".." === a)r.pop(); else {
if ("." === a)continue;
r.push(a)
}
}
return r.join("/")
}
if (a._eak_seen = t, e[n])return e[n];
if (e[n] = {}, !t[n])throw new Error("Could not find module " + n);
for (var o, s = t[n], c = s.deps, u = s.callback, l = [], h = 0, f = c.length; f > h; h++)"exports" === c[h] ? l.push(o = {}) : l.push(r(i(c[h])));
var d = u.apply(this, l);
return e[n] = o || d
}
}(), n("promise/all", ["./utils", "exports"], function (t, e) {
function n(t) {
var e = this;
if (!r(t))throw new TypeError("You must pass an array to all.");
return new e(function (e, n) {
function r(t) {return function (e) {o(t, e)}}
function o(t, n) {s[t] = n, 0 === --c && e(s)}
var a, s = [], c = t.length;
0 === c && e([]);
for (var u = 0; u < t.length; u++)a = t[u], a && i(a.then) ? a.then(r(u), n) : o(u, a)
})
}
var r = t.isArray, i = t.isFunction;
e.all = n
}), n("promise/asap", ["exports"], function (n) {
function r() {return function () {process.nextTick(s)}}
function o() {
var t = 0, n = new h(s), r = e.createTextNode("");
return n.observe(r, {characterData: !0}), function () {r.data = t = ++t % 2}
}
function a() {return function () {f.setTimeout(s, 1)}}
function s() {
for (var t = 0; t < d.length; t++) {
var e = d[t], n = e[0], r = e[1];
n(r)
}
d = []
}
function c(t, e) {
var n = d.push([t, e]);
1 === n && u()
}
var u, l = "undefined" != typeof t ? t : {}, h = l.MutationObserver || l.WebKitMutationObserver, f = "undefined" != typeof i ? i : this, d = [];
u = "undefined" != typeof process && "[object process]" === {}.toString.call(process) ? r() : h ? o() : a(), n.asap = c
}), n("promise/cast", ["exports"], function (t) {
function e(t) {
if (t && "object" == typeof t && t.constructor === this)return t;
var e = this;
return new e(function (e) {e(t)})
}
t.cast = e
}), n("promise/config", ["exports"], function (t) {
function e(t, e) {return 2 !== arguments.length ? n[t] : void(n[t] = e)}
var n = {instrument: !1};
t.config = n, t.configure = e
}), n("promise/polyfill", ["./promise", "./utils", "exports"], function (e, n, r) {
function i() {
var e = "Promise" in t && "cast" in t.Promise && "resolve" in t.Promise && "reject" in t.Promise && "all" in t.Promise && "race" in t.Promise && function () {
var e;
return new t.Promise(function (t) {e = t}), a(e)
}();
e || (t.Promise = o)
}
var o = e.Promise, a = n.isFunction;
r.polyfill = i
}), n("promise/promise", ["./config", "./utils", "./cast", "./all", "./race", "./resolve", "./reject", "./asap", "exports"], function (t, e, n, r, i, o, a, s, c) {
function u(t) {
if (!k(t))throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");
if (!(this instanceof u))throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
this._subscribers = [], l(t, this)
}
function l(t, e) {
function n(t) {m(e, t)}
function r(t) {w(e, t)}
try {t(n, r)} catch (i) {r(i)}
}
function h(t, e, n, r) {
var i, o, a, s, c = k(n);
if (c)try {i = n(r), a = !0} catch (u) {s = !0, o = u} else i = r, a = !0;
p(e, i) || (c && a ? m(e, i) : s ? w(e, o) : t === I ? m(e, i) : t === F && w(e, i))
}
function f(t, e, n, r) {
var i = t._subscribers, o = i.length;
i[o] = e, i[o + I] = n, i[o + F] = r
}
function d(t, e) {
for (var n, r, i = t._subscribers, o = t._detail, a = 0; a < i.length; a += 3)n = i[a], r = i[a + e], h(e, n, r, o);
t._subscribers = null
}
function p(t, e) {
var n, r = null;
try {
if (t === e)throw new TypeError("A promises callback cannot return that same promise.");
if (x(e) && (r = e.then, k(r)))return r.call(e, function (r) {return n ? !0 : (n = !0, void(e !== r ? m(t, r) : g(t, r)))}, function (e) {return n ? !0 : (n = !0, void w(t, e))}), !0
} catch (i) {return n ? !0 : (w(t, i), !0)}
return !1
}
function m(t, e) {t === e ? g(t, e) : p(t, e) || g(t, e)}
function g(t, e) {t._state === E && (t._state = P, t._detail = e, b.async(y, t))}
function w(t, e) {t._state === E && (t._state = P, t._detail = e, b.async(v, t))}
function y(t) {d(t, t._state = I)}
function v(t) {d(t, t._state = F)}
var b = t.config, x = (t.configure, e.objectOrFunction), k = e.isFunction, A = (e.now, n.cast), C = r.all, _ = i.race, q = o.resolve, S = a.reject, T = s.asap;
b.async = T;
var E = void 0, P = 0, I = 1, F = 2;
u.prototype = {
constructor: u,
_state: void 0,
_detail: void 0,
_subscribers: void 0,
then: function (t, e) {
var n = this, r = new this.constructor(function () {});
if (this._state) {
var i = arguments;
b.async(function () {h(n._state, r, i[n._state - 1], n._detail)})
} else f(this, r, t, e);
return r
},
"catch": function (t) {return this.then(null, t)}
}, u.all = C, u.cast = A, u.race = _, u.resolve = q, u.reject = S, c.Promise = u
}), n("promise/race", ["./utils", "exports"], function (t, e) {
function n(t) {
var e = this;
if (!r(t))throw new TypeError("You must pass an array to race.");
return new e(function (e, n) {for (var r, i = 0; i < t.length; i++)r = t[i], r && "function" == typeof r.then ? r.then(e, n) : e(r)})
}
var r = t.isArray;
e.race = n
}), n("promise/reject", ["exports"], function (t) {
function e(t) {
var e = this;
return new e(function (e, n) {n(t)})
}
t.reject = e
}), n("promise/resolve", ["exports"], function (t) {
function e(t) {
var e = this;
return new e(function (e) {e(t)})
}
t.resolve = e
}), n("promise/utils", ["exports"], function (t) {
function e(t) {return n(t) || "object" == typeof t && null !== t}
function n(t) {return "function" == typeof t}
function r(t) {return "[object Array]" === Object.prototype.toString.call(t)}
var i = Date.now || function () {return (new Date).getTime()};
t.objectOrFunction = e, t.isFunction = n, t.isArray = r, t.now = i
}), r("promise/polyfill").polyfill()
}(), "function" != typeof Object.create || "function" != typeof e.createElement("canvas").getContext)return void(t.html2canvas = function () {return Promise.reject("No canvas support")});
!function (t) {
function e(t) {throw RangeError(B[t])}
function a(t, e) {
for (var n = t.length, r = []; n--;)r[n] = e(t[n]);
return r
}
function s(t, e) {
var n = t.split("@"), r = "";
n.length > 1 && (r = n[0] + "@", t = n[1]);
var i = t.split(O), o = a(i, e).join(".");
return r + o
}
function c(t) {
for (var e, n, r = [], i = 0, o = t.length; o > i;)e = t.charCodeAt(i++), e >= 55296 && 56319 >= e && o > i ? (n = t.charCodeAt(i++), 56320 == (64512 & n) ? r.push(((1023 & e) << 10) + (1023 & n) + 65536) : (r.push(e), i--)) : r.push(e);
return r
}
function u(t) {
return a(t, function (t) {
var e = "";
return t > 65535 && (t -= 65536, e += j(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += j(t)
}).join("")
}
function l(t) {return 10 > t - 48 ? t - 22 : 26 > t - 65 ? t - 65 : 26 > t - 97 ? t - 97 : A}
function h(t, e) {return t + 22 + 75 * (26 > t) - ((0 != e) << 5)}
function f(t, e, n) {
var r = 0;
for (t = n ? D(t / S) : t >> 1, t += D(t / e); t > R * _ >> 1; r += A)t = D(t / R);
return D(r + (R + 1) * t / (t + q))
}
function d(t) {
var n, r, i, o, a, s, c, h, d, p, m = [], g = t.length, w = 0, y = E, v = T;
for (r = t.lastIndexOf(P), 0 > r && (r = 0), i = 0; r > i; ++i)t.charCodeAt(i) >= 128 && e("not-basic"), m.push(t.charCodeAt(i));
for (o = r > 0 ? r + 1 : 0; g > o;) {
for (a = w, s = 1, c = A; o >= g && e("invalid-input"), h = l(t.charCodeAt(o++)), (h >= A || h > D((k - w) / s)) && e("overflow"), w += h * s, d = v >= c ? C : c >= v + _ ? _ : c - v, !(d > h); c += A)p = A - d, s > D(k / p) && e("overflow"), s *= p;
n = m.length + 1, v = f(w - a, n, 0 == a), D(w / n) > k - y && e("overflow"), y += D(w / n), w %= n, m.splice(w++, 0, y)
}
return u(m)
}
function p(t) {
var n, r, i, o, a, s, u, l, d, p, m, g, w, y, v, b = [];
for (t = c(t), g = t.length, n = E, r = 0, a = T, s = 0; g > s; ++s)m = t[s], 128 > m && b.push(j(m));
for (i = o = b.length, o && b.push(P); g > i;) {
for (u = k, s = 0; g > s; ++s)m = t[s], m >= n && u > m && (u = m);
for (w = i + 1, u - n > D((k - r) / w) && e("overflow"), r += (u - n) * w, n = u, s = 0; g > s; ++s)if (m = t[s], n > m && ++r > k && e("overflow"), m == n) {
for (l = r, d = A; p = a >= d ? C : d >= a + _ ? _ : d - a, !(p > l); d += A)v = l - p, y = A - p, b.push(j(h(p + v % y, 0))), l = D(v / y);
b.push(j(h(l, 0))), a = f(r, w, i == o), r = 0, ++i
}
++r, ++n
}
return b.join("")
}
function m(t) {return s(t, function (t) {return I.test(t) ? d(t.slice(4).toLowerCase()) : t})}
function g(t) {return s(t, function (t) {return F.test(t) ? "xn--" + p(t) : t})}
var w = "object" == typeof r && r && !r.nodeType && r, y = "object" == typeof n && n && !n.nodeType && n, v = "object" == typeof i && i;
v.global !== v && v.window !== v && v.self !== v || (t = v);
var b, x, k = 2147483647, A = 36, C = 1, _ = 26, q = 38, S = 700, T = 72, E = 128, P = "-", I = /^xn--/, F = /[^\x20-\x7E]/, O = /[\x2E\u3002\uFF0E\uFF61]/g, B = {
overflow: "Overflow: input needs wider integers to process",
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
"invalid-input": "Invalid input"
}, R = A - C, D = Math.floor, j = String.fromCharCode;
if (b = {
version: "1.3.1",
ucs2: {decode: c, encode: u},
decode: d,
encode: p,
toASCII: g,
toUnicode: m
}, "function" == typeof o && "object" == typeof o.amd && o.amd)o("punycode", function () {return b}); else if (w && y)if (n.exports == w)y.exports = b; else for (x in b)b.hasOwnProperty(x) && (w[x] = b[x]); else t.punycode = b
}(this);
var Wt = "data-html2canvas-node", Xt = "data-html2canvas-canvas-clone", Vt = 0;
t.html2canvas = function (n, r) {
if (r = r || {}, r.logging && (t.html2canvas.logging = !0, t.html2canvas.start = Date.now()), r.async = "undefined" == typeof r.async ? !0 : r.async, r.allowTaint = "undefined" == typeof r.allowTaint ? !1 : r.allowTaint, r.removeContainer = "undefined" == typeof r.removeContainer ? !0 : r.removeContainer, r.javascriptEnabled = "undefined" == typeof r.javascriptEnabled ? !1 : r.javascriptEnabled, r.imageTimeout = "undefined" == typeof r.imageTimeout ? 1e4 : r.imageTimeout, "string" == typeof n)return "string" != typeof r.proxy ? Promise.reject("Proxy must be used when rendering url") : g(k(n), r.proxy, e, t.innerWidth, t.innerHeight, r).then(function (e) {return c(e.contentWindow.document.documentElement, e, r, t.innerWidth, t.innerHeight)});
var i = (n === a ? [e.documentElement] : n.length ? n : [n])[0];
return i.setAttribute(Wt, "true"), s(i.ownerDocument, r, i.ownerDocument.defaultView.innerWidth, i.ownerDocument.defaultView.innerHeight).then(function (t) {return "function" == typeof r.onrendered && (I("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas"), r.onrendered(t)), t})
}, t.html2canvas.punycode = this.punycode, t.html2canvas.proxy = {}, _.prototype.getMetrics = function (t, e) {return this.data[t + "-" + e] === a && (this.data[t + "-" + e] = new C(t, e)), this.data[t + "-" + e]}, q.prototype.proxyLoad = function (t, e, n) {
var r = this.src;
return g(r.src, t, r.ownerDocument, e.width, e.height, n)
}, S.prototype.TYPES = {LINEAR: 1, RADIAL: 2}, E.prototype.findImages = function (t) {
var e = [];
return t.reduce(function (t, e) {
switch (e.node.nodeName) {
case"IMG":
return t.concat([{args: [e.node.src], method: "url"}]);
case"svg":
case"IFRAME":
return t.concat([{args: [e.node], method: e.node.nodeName}])
}
return t
}, []).forEach(this.addImage(e, this.loadImage), this), e
}, E.prototype.findBackgroundImage = function (t, e) {return e.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(t, this.loadImage), this), t}, E.prototype.addImage = function (t, e) {return function (n) {n.args.forEach(function (r) {this.imageExists(t, r) || (t.splice(0, 0, e.call(this, n)), I("Added image #" + t.length, "string" == typeof r ? r.substring(0, 100) : r))}, this)}}, E.prototype.hasImageBackground = function (t) {return "none" !== t.method}, E.prototype.loadImage = function (t) {
if ("url" === t.method) {
var e = t.args[0];
return !this.isSVG(e) || this.support.svg || this.options.allowTaint ? e.match(/data:image\/.*;base64,/i) ? new T(e.replace(/url\(['"]{0,}|['"]{0,}\)$/gi, ""), !1) : this.isSameOrigin(e) || this.options.allowTaint === !0 || this.isSVG(e) ? new T(e, !1) : this.support.cors && !this.options.allowTaint && this.options.useCORS ? new T(e, !0) : this.options.proxy ? new Pt(e, this.options.proxy) : new A(e) : new Rt(e)
}
return "linear-gradient" === t.method ? new P(t) : "gradient" === t.method ? new Lt(t) : "svg" === t.method ? new jt(t.args[0], this.support.svg) : "IFRAME" === t.method ? new q(t.args[0], this.isSameOrigin(t.args[0].src), this.options) : new A(t)
}, E.prototype.isSVG = function (t) {return "svg" === t.substring(t.length - 3).toLowerCase() || Rt.prototype.isInline(t)}, E.prototype.imageExists = function (t, e) {return t.some(function (t) {return t.src === e})}, E.prototype.isSameOrigin = function (t) {return this.getOrigin(t) === this.origin}, E.prototype.getOrigin = function (t) {
var n = this.link || (this.link = e.createElement("a"));
return n.href = t, n.href = n.href, n.protocol + n.hostname + n.port
}, E.prototype.getPromise = function (t) {
return this.timeout(t, this.options.imageTimeout)["catch"](function () {
var e = new A(t.src);
return e.promise.then(function (e) {t.image = e})
})
}, E.prototype.get = function (t) {
var e = null;
return this.images.some(function (n) {return (e = n).src === t}) ? e : null
}, E.prototype.fetch = function (t) {return this.images = t.reduce(gt(this.findBackgroundImage, this), this.findImages(t)), this.images.forEach(function (t, e) {t.promise.then(function () {I("Succesfully loaded image #" + (e + 1), t)}, function (n) {I("Failed loading image #" + (e + 1), t, n)})}), this.ready = Promise.all(this.images.map(this.getPromise, this)), I("Finished searching images"), this}, E.prototype.timeout = function (t, e) {
var n;
return Promise.race([t.promise, new Promise(function (r, i) {n = setTimeout(function () {I("Timed out loading image", t), i(t)}, e)})]).then(function (t) {return clearTimeout(n), t})
}, P.prototype = Object.create(S.prototype), P.prototype.stepRegExp = /((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/, F.prototype.cloneTo = function (t) {t.visible = this.visible, t.borders = this.borders, t.bounds = this.bounds, t.clip = this.clip, t.backgroundClip = this.backgroundClip, t.computedStyles = this.computedStyles, t.styles = this.styles, t.backgroundImages = this.backgroundImages, t.opacity = this.opacity}, F.prototype.getOpacity = function () {return null === this.opacity ? this.opacity = this.cssFloat("opacity") : this.opacity}, F.prototype.assignStack = function (t) {this.stack = t, t.children.push(this)}, F.prototype.isElementVisible = function () {return this.node.nodeType === Node.TEXT_NODE ? this.parent.visible : "none" !== this.css("display") && "hidden" !== this.css("visibility") && !this.node.hasAttribute("data-html2canvas-ignore") && ("INPUT" !== this.node.nodeName || "hidden" !== this.node.getAttribute("type"))}, F.prototype.css = function (t) {return this.computedStyles || (this.computedStyles = this.isPseudoElement ? this.parent.computedStyle(this.before ? ":before" : ":after") : this.computedStyle(null)), this.styles[t] || (this.styles[t] = this.computedStyles[t])}, F.prototype.prefixedCss = function (t) {
var e = ["webkit", "moz", "ms", "o"], n = this.css(t);
return n === a && e.some(function (e) {return n = this.css(e + t.substr(0, 1).toUpperCase() + t.substr(1)), n !== a}, this), n === a ? null : n
}, F.prototype.computedStyle = function (t) {return this.node.ownerDocument.defaultView.getComputedStyle(this.node, t)}, F.prototype.cssInt = function (t) {
var e = parseInt(this.css(t), 10);
return isNaN(e) ? 0 : e
}, F.prototype.cssFloat = function (t) {
var e = parseFloat(this.css(t));
return isNaN(e) ? 0 : e
}, F.prototype.fontWeight = function () {
var t = this.css("fontWeight");
switch (parseInt(t, 10)) {
case 401:
t = "bold";
break;
case 400:
t = "normal"
}
return t
}, F.prototype.parseClip = function () {
var t = this.css("clip").match(this.CLIP);
return t ? {
top: parseInt(t[1], 10),
right: parseInt(t[2], 10),
bottom: parseInt(t[3], 10),
left: parseInt(t[4], 10)
} : null
}, F.prototype.parseBackgroundImages = function () {return this.backgroundImages || (this.backgroundImages = D(this.css("backgroundImage")))}, F.prototype.cssList = function (t, e) {
var n = (this.css(t) || "").split(",");
return n = n[e || 0] || n[0] || "auto", n = n.trim().split(" "), 1 === n.length && (n = [n[0], n[0]]), n
}, F.prototype.parseBackgroundSize = function (t, e, n) {
var r, i, o = this.cssList("backgroundSize", n);
if (R(o[0]))r = t.width * parseFloat(o[0]) / 100; else {
if (/contain|cover/.test(o[0])) {
var a = t.width / t.height, s = e.width / e.height;
return s > a ^ "contain" === o[0] ? {width: t.height * s, height: t.height} : {
width: t.width,
height: t.width / s
}
}
r = parseInt(o[0], 10)
}
return i = "auto" === o[0] && "auto" === o[1] ? e.height : "auto" === o[1] ? r / e.width * e.height : R(o[1]) ? t.height * parseFloat(o[1]) / 100 : parseInt(o[1], 10), "auto" === o[0] && (r = i / e.height * e.width), {
width: r,
height: i
}
}, F.prototype.parseBackgroundPosition = function (t, e, n, r) {
var i, o, a = this.cssList("backgroundPosition", n);
return i = R(a[0]) ? (t.width - (r || e).width) * (parseFloat(a[0]) / 100) : parseInt(a[0], 10), o = "auto" === a[1] ? i / e.width * e.height : R(a[1]) ? (t.height - (r || e).height) * parseFloat(a[1]) / 100 : parseInt(a[1], 10), "auto" === a[0] && (i = o / e.height * e.width), {
left: i,
top: o
}
}, F.prototype.parseBackgroundRepeat = function (t) {return this.cssList("backgroundRepeat", t)[0]}, F.prototype.parseTextShadows = function () {
var t = this.css("textShadow"), e = [];
if (t && "none" !== t)for (var n = t.match(this.TEXT_SHADOW_PROPERTY), r = 0; n && r < n.length; r++) {
var i = n[r].match(this.TEXT_SHADOW_VALUES);
e.push({
color: i[0],
offsetX: i[1] ? parseFloat(i[1].replace("px", "")) : 0,
offsetY: i[2] ? parseFloat(i[2].replace("px", "")) : 0,
blur: i[3] ? i[3].replace("px", "") : 0
})
}
return e
}, F.prototype.parseTransform = function () {
if (!this.transformData)if (this.hasTransform()) {
var t = this.parseBounds(), e = this.prefixedCss("transformOrigin").split(" ").map(j).map(z);
e[0] += t.left, e[1] += t.top, this.transformData = {origin: e, matrix: this.parseTransformMatrix()}
} else this.transformData = {origin: [0, 0], matrix: [1, 0, 0, 1, 0, 0]};
return this.transformData
}, F.prototype.parseTransformMatrix = function () {
if (!this.transformMatrix) {
var t = this.prefixedCss("transform"), e = t ? B(t.match(this.MATRIX_PROPERTY)) : null;
this.transformMatrix = e ? e : [1, 0, 0, 1, 0, 0]
}
return this.transformMatrix
}, F.prototype.parseBounds = function () {return this.bounds || (this.bounds = this.hasTransform() ? L(this.node) : N(this.node))}, F.prototype.hasTransform = function () {return "1,0,0,1,0,0" !== this.parseTransformMatrix().join(",") || this.parent && this.parent.hasTransform()}, F.prototype.getValue = function () {
var t = this.node.value || "";
return t = "SELECT" === this.node.tagName ? O(this.node) : t, 0 === t.length ? this.node.placeholder || "" : t
}, F.prototype.MATRIX_PROPERTY = /(matrix)\((.+)\)/, F.prototype.TEXT_SHADOW_PROPERTY = /((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g, F.prototype.TEXT_SHADOW_VALUES = /(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g, F.prototype.CLIP = /^rect\((\d+)px,? (\d+)px,? (\d+)px,? (\d+)px\)$/, M.prototype.calculateOverflowClips = function () {
this.nodes.forEach(function (t) {
if (ht(t)) {
ft(t) && t.appendToDOM(), t.borders = this.parseBorders(t);
var e = "hidden" === t.css("overflow") ? [t.borders.clip] : [], n = t.parseClip();
n && -1 !== ["absolute", "fixed"].indexOf(t.css("position")) && e.push([["rect", t.bounds.left + n.left, t.bounds.top + n.top, n.right - n.left, n.bottom - n.top]]), t.clip = U(t) ? t.parent.clip.concat(e) : e, t.backgroundClip = "hidden" !== t.css("overflow") ? t.clip.concat([t.borders.clip]) : t.clip, ft(t) && t.cleanDOM()
} else dt(t) && (t.clip = U(t) ? t.parent.clip : []);
ft(t) || (t.bounds = null)
}, this)
}, M.prototype.asyncRenderer = function (t, e, n) {n = n || Date.now(), this.paint(t[this.renderIndex++]), t.length === this.renderIndex ? e() : n + 20 > Date.now() ? this.asyncRenderer(t, e, n) : setTimeout(gt(function () {this.asyncRenderer(t, e)}, this), 0)}, M.prototype.createPseudoHideStyles = function (t) {this.createStyles(t, "." + It.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ':before { content: "" !important; display: none !important; }.' + It.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER + ':after { content: "" !important; display: none !important; }')}, M.prototype.disableAnimations = function (t) {this.createStyles(t, "* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}")}, M.prototype.createStyles = function (t, e) {
var n = t.createElement("style");
n.innerHTML = e, t.body.appendChild(n)
}, M.prototype.getPseudoElements = function (t) {
var e = [[t]];
if (t.node.nodeType === Node.ELEMENT_NODE) {
var n = this.getPseudoElement(t, ":before"), r = this.getPseudoElement(t, ":after");
n && e.push(n), r && e.push(r)
}
return bt(e)
}, M.prototype.getPseudoElement = function (t, n) {
var r = t.computedStyle(n);
if (!r || !r.content || "none" === r.content || "-moz-alt-content" === r.content || "none" === r.display)return null;
for (var i = xt(r.content), o = "url" === i.substr(0, 3), a = e.createElement(o ? "img" : "html2canvaspseudoelement"), s = new It(a, t, n), c = r.length - 1; c >= 0; c--) {
var u = H(r.item(c));
a.style[u] = r[u]
}
if (a.className = It.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + It.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER, o)return a.src = D(i)[0].args[0], [s];
var l = e.createTextNode(i);
return a.appendChild(l), [s, new zt(l, s)]
}, M.prototype.getChildren = function (t) {
return bt([].filter.call(t.node.childNodes, ot).map(function (e) {
var n = [e.nodeType === Node.TEXT_NODE ? new zt(e, t) : new F(e, t)].filter(vt);
return e.nodeType === Node.ELEMENT_NODE && n.length && "TEXTAREA" !== e.tagName ? n[0].isElementVisible() ? n.concat(this.getChildren(n[0])) : [] : n
}, this))
}, M.prototype.newStackingContext = function (t, e) {
var n = new Ot(e, t.getOpacity(), t.node, t.parent);
t.cloneTo(n);
var r = e ? n.getParentStack(this) : n.parent.stack;
r.contexts.push(n), t.stack = n
}, M.prototype.createStackingContexts = function () {this.nodes.forEach(function (t) {ht(t) && (this.isRootElement(t) || mt(t) || at(t) || this.isBodyWithTransparentRoot(t) || t.hasTransform()) ? this.newStackingContext(t, !0) : ht(t) && (st(t) && $(t) || ut(t) || ct(t)) ? this.newStackingContext(t, !1) : t.assignStack(t.parent.stack)}, this)}, M.prototype.isBodyWithTransparentRoot = function (t) {return "BODY" === t.node.nodeName && this.renderer.isTransparent(t.parent.css("backgroundColor"))}, M.prototype.isRootElement = function (t) {return null === t.parent}, M.prototype.sortStackingContexts = function (t) {t.contexts.sort(pt(t.contexts.slice(0))), t.contexts.forEach(this.sortStackingContexts, this)}, M.prototype.parseTextBounds = function (t) {
return function (e, n, r) {
if ("none" !== t.parent.css("textDecoration").substr(0, 4) || 0 !== e.trim().length) {
if (this.support.rangeBounds && !t.parent.hasTransform()) {
var i = r.slice(0, n).join("").length;
return this.getRangeBounds(t.node, i, e.length)
}
if (t.node && "string" == typeof t.node.data) {
var o = t.node.splitText(e.length), a = this.getWrapperBounds(t.node, t.parent.hasTransform());
return t.node = o, a
}
} else this.support.rangeBounds && !t.parent.hasTransform() || (t.node = t.node.splitText(e.length));
return {}
}
}, M.prototype.getWrapperBounds = function (t, e) {
var n = t.ownerDocument.createElement("html2canvaswrapper"), r = t.parentNode, i = t.cloneNode(!0);
n.appendChild(t.cloneNode(!0)), r.replaceChild(n, t);
var o = e ? L(n) : N(n);
return r.replaceChild(i, n), o
}, M.prototype.getRangeBounds = function (t, e, n) {
var r = this.range || (this.range = t.ownerDocument.createRange());
return r.setStart(t, e), r.setEnd(t, e + n), r.getBoundingClientRect()
}, M.prototype.parse = function (t) {
var e = t.contexts.filter(K), n = t.children.filter(ht), r = n.filter(lt(ct)), i = r.filter(lt(st)).filter(lt(tt)), o = n.filter(lt(st)).filter(ct), a = r.filter(lt(st)).filter(tt), s = t.contexts.concat(r.filter(st)).filter($), c = t.children.filter(dt).filter(nt), u = t.contexts.filter(Z);
e.concat(i).concat(o).concat(a).concat(s).concat(c).concat(u).forEach(function (t) {this.renderQueue.push(t), et(t) && (this.parse(t), this.renderQueue.push(new W))}, this)
}, M.prototype.paint = function (t) {try {t instanceof W ? this.renderer.ctx.restore() : dt(t) ? (ft(t.parent) && t.parent.appendToDOM(), this.paintText(t), ft(t.parent) && t.parent.cleanDOM()) : this.paintNode(t)} catch (e) {I(e)}}, M.prototype.paintNode = function (t) {
if (et(t) && (this.renderer.setOpacity(t.opacity), this.renderer.ctx.save(), t.hasTransform() && this.renderer.setTransform(t.parseTransform())), "INPUT" === t.node.nodeName && "checkbox" === t.node.type)this.paintCheckbox(t); else if ("INPUT" === t.node.nodeName && "radio" === t.node.type)this.paintRadio(t); else {
if ("always" === t.css("page-break-before")) {
var e = this.options.canvas.getContext("2d");
"function" == typeof e._pageBreakAt && e._pageBreakAt(t.node.offsetTop)
}
this.paintElement(t)
}
if (t.node.getAttribute) {
var n = t.node.getAttribute("name");
if (null === n)var n = t.node.getAttribute("id");
if (null !== n) {
var r = this.options.canvas.annotations;
r && r.setName(n, t.bounds)
}
}
}, M.prototype.paintElement = function (t) {
var e = t.parseBounds();
this.renderer.clip(t.backgroundClip, function () {this.renderer.renderBackground(t, e, t.borders.borders.map(yt))}, this), this.renderer.clip(t.clip, function () {this.renderer.renderBorders(t.borders.borders)}, this), this.renderer.clip(t.backgroundClip, function () {
switch (t.node.nodeName) {
case"svg":
case"IFRAME":
var n = this.images.get(t.node);
n ? this.renderer.renderImage(t, e, t.borders, n) : I("Error loading <" + t.node.nodeName + ">", t.node);
break;
case"IMG":
var r = this.images.get(t.node.src);
r ? this.renderer.renderImage(t, e, t.borders, r) : I("Error loading <img>", t.node.src);
break;
case"CANVAS":
this.renderer.renderImage(t, e, t.borders, {image: t.node});
break;
case"SELECT":
case"INPUT":
case"TEXTAREA":
this.paintFormValue(t)
}
}, this)
}, M.prototype.paintCheckbox = function (t) {
var e = t.parseBounds(), n = Math.min(e.width, e.height), r = {
width: n - 1,
height: n - 1,
top: e.top,
left: e.left
}, i = [3, 3], o = [i, i, i, i], a = [1, 1, 1, 1].map(function (t) {
return {
color: "#A5A5A5",
width: t
}
}), s = Y(r, o, a);
this.renderer.clip(t.backgroundClip, function () {this.renderer.rectangle(r.left + 1, r.top + 1, r.width - 2, r.height - 2, "#DEDEDE"), this.renderer.renderBorders(X(a, r, s, o)), t.node.checked && (this.renderer.font("#424242", "normal", "normal", "bold", n - 3 + "px", "arial"), this.renderer.text("✔", r.left + n / 6, r.top + n - 1))}, this)
}, M.prototype.paintRadio = function (t) {
var e = t.parseBounds(), n = Math.min(e.width, e.height) - 2;
this.renderer.clip(t.backgroundClip, function () {this.renderer.circleStroke(e.left + 1, e.top + 1, n, "#DEDEDE", 1, "#A5A5A5"), t.node.checked && this.renderer.circle(Math.ceil(e.left + n / 4) + 1, Math.ceil(e.top + n / 4) + 1, Math.floor(n / 2), "#424242")}, this)
}, M.prototype.paintFormValue = function (t) {
if (t.getValue().length > 0) {
var e = t.node.ownerDocument, n = e.createElement("html2canvaswrapper"), r = ["lineHeight", "textAlign", "fontFamily", "fontWeight", "fontSize", "color", "paddingLeft", "paddingTop", "paddingRight", "paddingBottom", "width", "height", "borderLeftStyle", "borderTopStyle", "borderLeftWidth", "borderTopWidth", "boxSizing", "whiteSpace", "wordWrap"];
r.forEach(function (e) {try {n.style[e] = t.css(e)} catch (r) {I("html2canvas: Parse: Exception caught in renderFormValue: " + r.message)}});
var i = t.parseBounds();
n.style.position = "fixed", n.style.left = i.left + "px", n.style.top = i.top + "px", n.textContent = t.getValue(), e.body.appendChild(n), this.paintText(new zt(n.firstChild, t)), e.body.removeChild(n)
}
}, M.prototype.paintText = function (e) {
e.applyTextTransform();
var n = t.html2canvas.punycode.ucs2.decode(e.node.data), r = this.options.letterRendering && !rt(e) || Ct(e.node.data) ? n.map(function (e) {return t.html2canvas.punycode.ucs2.encode([e])}) : kt(n), i = e.parent.fontWeight(), o = e.parent.css("fontSize"), s = e.parent.css("fontFamily"), c = e.parent.parseTextShadows();
this.renderer.font(e.parent.css("color"), e.parent.css("fontStyle"), e.parent.css("fontVariant"), i, o, s), c.length ? this.renderer.fontShadow(c[0].color, c[0].offsetX, c[0].offsetY, c[0].blur) : this.renderer.clearShadow(), this.renderer.clip(e.parent.clip, function () {r.map(this.parseTextBounds(e), this).forEach(function (t, n) {t && (t.left === a && (t.left = 0), t.bottom === a && (t.bottom = 0), this.renderer.text(r[n], t.left, t.bottom), this.renderTextDecoration(e.parent, t, this.fontMetrics.getMetrics(s, o)), 0 == n && "LI" === e.parent.node.nodeName && this.renderBullet(e, t), 0 == n && this.renderAnnotation(e.parent, t))}, this)}, this)
}, M.prototype.generateListNumber = {
listAlpha: function (t) {
var e, n = "";
do e = t % 26, n = String.fromCharCode(e + 64) + n, t /= 26; while (26 * t > 26);
return n
},
listRoman: function (t) {
var e, n = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"], r = [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], i = "", o = n.length;
if (0 >= t || t >= 4e3)return t;
for (e = 0; o > e; e += 1)for (; t >= r[e];)t -= r[e], i += n[e];
return i
}
}, M.prototype.listItemText = function (t, e) {
switch (t) {
case"decimal-leading-zero":
text = 1 === e.toString().length ? e = "0" + e.toString() : e.toString();
break;
case"upper-roman":
text = this.generateListNumber.listRoman(e);
break;
case"lower-roman":
text = this.generateListNumber.listRoman(e).toLowerCase();
break;
case"lower-alpha":
text = this.generateListNumber.listAlpha(e).toLowerCase();
break;
case"upper-alpha":
text = this.generateListNumber.listAlpha(e);
break;
case"decimal":
default:
text = e
}
return text
}, M.prototype.renderBullet = function (t, e) {
var n = t.parent.css("listStyleType");
if ("none" !== n) {
var r = e.top + (e.bottom - e.top) / 2, i = this.renderer.canvas.getContext("2d"), o = i.measureText("M").width, a = o / 4, s = .75 * o, c = e.left - s;
switch (n) {
case"decimal":
case"decimal-leading-zero":
case"upper-alpha":
case"lower-alpha":
case"upper-roman":
case"lower-roman":
var u = t.parent, l = u.parent, h = Array.prototype.slice.call(l.node.children), f = h.indexOf(u.node) + 1, d = this.listItemText(n, f);
d += ".";
var p = e.left - s;
p -= i.measureText(d).width, i.fillText(d, p, e.bottom);
break;
case"square":
var a = o / 3;
c -= a, r -= a / 2, i.fillRect(c, r, a, a);
break;
case"circle":
var a = o / 6;
c -= a, i.beginPath(), i.arc(c, r, a, 0, 2 * Math.PI), i.closePath(), i.stroke();
break;
case"disc":
default:
var a = o / 6;
c -= a, i.beginPath(), i.arc(c, r, a, 0, 2 * Math.PI), i.closePath(), i.fill()
}
}
}, M.prototype.renderTextDecoration = function (t, e, n) {
switch (t.css("textDecoration").split(" ")[0]) {
case"underline":
this.renderer.rectangle(e.left, Math.round(e.top + n.baseline + n.lineWidth), e.width, 1, t.css("color"));
break;
case"overline":
this.renderer.rectangle(e.left, Math.round(e.top), e.width, 1, t.css("color"));
break;
case"line-through":
this.renderer.rectangle(e.left, Math.ceil(e.top + n.middle + n.lineWidth), e.width, 1, t.css("color"))
}
}, M.prototype.renderAnnotation = function (t, e) {
if ("A" === t.node.nodeName) {
var n = t.node.getAttribute("href");
if (n) {
var r = this.options.canvas.annotations;
r && r.createAnnotation(n, t.bounds)
}
}
}, M.prototype.parseBorders = function (t) {
var e = t.parseBounds(), n = it(t), r = ["Top", "Right", "Bottom", "Left"].map(function (e) {
return {
width: t.cssInt("border" + e + "Width"),
color: t.css("border" + e + "Color"),
args: null
}
}), i = Y(e, n, r);
return {clip: this.parseBackgroundClip(t, i, r, n, e), borders: X(r, e, i, n)}
}, M.prototype.parseBackgroundClip = function (t, e, n, r, i) {
var o = t.css("backgroundClip"), a = [];
switch (o) {
case"content-box":
case"padding-box":
Q(a, r[0], r[1], e.topLeftInner, e.topRightInner, i.left + n[3].width, i.top + n[0].width), Q(a, r[1], r[2], e.topRightInner, e.bottomRightInner, i.left + i.width - n[1].width, i.top + n[0].width), Q(a, r[2], r[3], e.bottomRightInner, e.bottomLeftInner, i.left + i.width - n[1].width, i.top + i.height - n[2].width), Q(a, r[3], r[0], e.bottomLeftInner, e.topLeftInner, i.left + n[3].width, i.top + i.height - n[2].width);
break;
default:
Q(a, r[0], r[1], e.topLeftOuter, e.topRightOuter, i.left, i.top), Q(a, r[1], r[2], e.topRightOuter, e.bottomRightOuter, i.left + i.width, i.top), Q(a, r[2], r[3], e.bottomRightOuter, e.bottomLeftOuter, i.left + i.width, i.top + i.height), Q(a, r[3], r[0], e.bottomLeftOuter, e.topLeftOuter, i.left, i.top + i.height)
}
return a
};
var Yt = 0, Gt = "withCredentials" in new XMLHttpRequest, Jt = "crossOrigin" in new Image;
It.prototype.cloneTo = function (t) {It.prototype.cloneTo.call(this, t), t.isPseudoElement = !0, t.before = this.before}, It.prototype = Object.create(F.prototype), It.prototype.appendToDOM = function () {this.before ? this.parent.node.insertBefore(this.node, this.parent.node.firstChild) : this.parent.node.appendChild(this.node), this.parent.node.className += " " + this.getHideClass()}, It.prototype.cleanDOM = function () {this.node.parentNode.removeChild(this.node), this.parent.node.className = this.parent.node.className.replace(this.getHideClass(), "")}, It.prototype.getHideClass = function () {return this["PSEUDO_HIDE_ELEMENT_CLASS_" + (this.before ? "BEFORE" : "AFTER")]}, It.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before", It.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after", Ft.prototype.renderImage = function (t, e, n, r) {
var i = t.cssInt("paddingLeft"), o = t.cssInt("paddingTop"), a = t.cssInt("paddingRight"), s = t.cssInt("paddingBottom"), c = n.borders, u = e.width - (c[1].width + c[3].width + i + a), l = e.height - (c[0].width + c[2].width + o + s);
this.drawImage(r, 0, 0, r.image.width || u, r.image.height || l, e.left + i + c[3].width, e.top + o + c[0].width, u, l)
}, Ft.prototype.renderBackground = function (t, e, n) {e.height > 0 && e.width > 0 && (this.renderBackgroundColor(t, e), this.renderBackgroundImage(t, e, n))}, Ft.prototype.renderBackgroundColor = function (t, e) {
var n = t.css("backgroundColor");
this.isTransparent(n) || this.rectangle(e.left, e.top, e.width, e.height, t.css("backgroundColor"))
}, Ft.prototype.renderBorders = function (t) {t.forEach(this.renderBorder, this)}, Ft.prototype.renderBorder = function (t) {this.isTransparent(t.color) || null === t.args || this.drawShape(t.args, t.color)}, Ft.prototype.renderBackgroundImage = function (t, e, n) {
var r = t.parseBackgroundImages();
r.reverse().forEach(function (r, i, o) {
switch (r.method) {
case"url":
var a = this.images.get(r.args[0]);
a ? this.renderBackgroundRepeating(t, e, a, o.length - (i + 1), n) : I("Error loading background-image", r.args[0]);
break;
case"linear-gradient":
case"gradient":
var s = this.images.get(r.value);
s ? this.renderBackgroundGradient(s, e, n) : I("Error loading background-image", r.args[0]);
break;
case"none":
break;
default:
I("Unknown background-image type", r.args[0])
}
}, this)
}, Ft.prototype.renderBackgroundRepeating = function (t, e, n, r, i) {
var o = t.parseBackgroundSize(e, n.image, r), a = t.parseBackgroundPosition(e, n.image, r, o), s = t.parseBackgroundRepeat(r);
switch (s) {
case"repeat-x":
case"repeat no-repeat":
this.backgroundRepeatShape(n, a, o, e, e.left + i[3], e.top + a.top + i[0], 99999, o.height, i);
break;
case"repeat-y":
case"no-repeat repeat":
this.backgroundRepeatShape(n, a, o, e, e.left + a.left + i[3], e.top + i[0], o.width, 99999, i);
break;
case"no-repeat":
this.backgroundRepeatShape(n, a, o, e, e.left + a.left + i[3], e.top + a.top + i[0], o.width, o.height, i);
break;
default:
this.renderBackgroundRepeat(n, a, o, {
top: e.top, left: e.left
}, i[3], i[0])
}
}, Ft.prototype.isTransparent = function (t) {return !t || "transparent" === t || "rgba(0, 0, 0, 0)" === t}, Ot.prototype = Object.create(F.prototype), Ot.prototype.getParentStack = function (t) {
var e = this.parent ? this.parent.stack : null;
return e ? e.ownStacking ? e : e.getParentStack(t) : t.stack
}, Bt.prototype.testRangeBounds = function (t) {
var e, n, r, i, o = !1;
return t.createRange && (e = t.createRange(), e.getBoundingClientRect && (n = t.createElement("boundtest"), n.style.height = "123px", n.style.display = "block", t.body.appendChild(n), e.selectNode(n), r = e.getBoundingClientRect(), i = r.height, 123 === i && (o = !0), t.body.removeChild(n))), o
}, Bt.prototype.testCORS = function () {return "undefined" != typeof(new Image).crossOrigin}, Bt.prototype.testSVG = function () {
var t = new Image, n = e.createElement("canvas"), r = n.getContext("2d");
t.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
try {r.drawImage(t, 0, 0), n.toDataURL()} catch (i) {return !1}
return !0
}, Rt.prototype.hasFabric = function () {return html2canvas.fabric ? Promise.resolve() : Promise.reject(new Error("html2canvas.svg.js is not loaded, cannot render svg"))}, Rt.prototype.inlineFormatting = function (t) {return /^data:image\/svg\+xml;base64,/.test(t) ? this.decode64(this.removeContentType(t)) : this.removeContentType(t)}, Rt.prototype.removeContentType = function (t) {return t.replace(/^data:image\/svg\+xml(;base64)?,/, "")}, Rt.prototype.isInline = function (t) {return /^data:image\/svg\+xml/i.test(t)}, Rt.prototype.createCanvas = function (t) {
var e = this;
return function (n, r) {
var i = new html2canvas.fabric.StaticCanvas("c");
e.image = i.lowerCanvasEl, i.setWidth(r.width).setHeight(r.height).add(html2canvas.fabric.util.groupSVGElements(n, r)).renderAll(), t(i.lowerCanvasEl)
}
}, Rt.prototype.decode64 = function (e) {return "function" == typeof t.atob ? t.atob(e) : Dt(e)}, jt.prototype = Object.create(Rt.prototype), zt.prototype = Object.create(F.prototype), zt.prototype.applyTextTransform = function () {this.node.data = this.transform(this.parent.css("textTransform"))}, zt.prototype.transform = function (t) {
var e = this.node.data;
switch (t) {
case"lowercase":
return e.toLowerCase();
case"capitalize":
return e.replace(/(^|\s|:|-|\(|\))([a-z])/g, Nt);
case"uppercase":
return e.toUpperCase();
default:
return e
}
}, Lt.prototype = Object.create(S.prototype), Ut.prototype = Object.create(Ft.prototype), Ut.prototype.setFillStyle = function (t) {return this.ctx.fillStyle = t, this.ctx}, Ut.prototype.rectangle = function (t, e, n, r, i) {this.setFillStyle(i).fillRect(t, e, n, r)}, Ut.prototype.circle = function (t, e, n, r) {this.setFillStyle(r), this.ctx.beginPath(), this.ctx.arc(t + n / 2, e + n / 2, n / 2, 0, 2 * Math.PI, !0), this.ctx.closePath(), this.ctx.fill()}, Ut.prototype.circleStroke = function (t, e, n, r, i, o) {this.circle(t, e, n, r), this.ctx.strokeStyle = o, this.ctx.stroke()}, Ut.prototype.drawShape = function (t, e) {this.shape(t), this.setFillStyle(e).fill()}, Ut.prototype.taints = function (t) {
if (null === t.tainted) {
this.taintCtx.drawImage(t.image, 0, 0);
try {this.taintCtx.getImageData(0, 0, 1, 1), t.tainted = !1} catch (n) {this.taintCtx = e.createElement("canvas").getContext("2d"), t.tainted = !0}
}
return t.tainted
}, Ut.prototype.drawImage = function (t, e, n, r, i, o, a, s, c) {this.taints(t) && !this.options.allowTaint || this.ctx.drawImage(t.image, e, n, r, i, o, a, s, c)}, Ut.prototype.clip = function (t, e, n) {this.ctx.save(), t.filter(Ht).forEach(function (t) {this.shape(t).clip()}, this), e.call(n), this.ctx.restore()}, Ut.prototype.shape = function (t) {return this.ctx.beginPath(), t.forEach(function (t, e) {"rect" === t[0] ? this.ctx.rect.apply(this.ctx, t.slice(1)) : this.ctx[0 === e ? "moveTo" : t[0] + "To"].apply(this.ctx, t.slice(1))}, this), this.ctx.closePath(), this.ctx}, Ut.prototype.font = function (t, e, n, r, i, o) {this.setFillStyle(t).font = [e, n, r, i, o].join(" ").split(",")[0]}, Ut.prototype.fontShadow = function (t, e, n, r) {this.setVariable("shadowColor", t).setVariable("shadowOffsetY", e).setVariable("shadowOffsetX", n).setVariable("shadowBlur", r)}, Ut.prototype.clearShadow = function () {this.setVariable("shadowColor", "rgba(0,0,0,0)")}, Ut.prototype.setOpacity = function (t) {this.ctx.globalAlpha = t}, Ut.prototype.setTransform = function (t) {this.ctx.translate(t.origin[0], t.origin[1]), this.ctx.transform.apply(this.ctx, t.matrix), this.ctx.translate(-t.origin[0], -t.origin[1])}, Ut.prototype.setVariable = function (t, e) {return this.variables[t] !== e && (this.variables[t] = this.ctx[t] = e), this}, Ut.prototype.text = function (t, e, n) {this.ctx.fillText(t, e, n)}, Ut.prototype.backgroundRepeatShape = function (t, e, n, r, i, o, a, s, c) {
var u = [["line", Math.round(i), Math.round(o)], ["line", Math.round(i + a), Math.round(o)], ["line", Math.round(i + a), Math.round(s + o)], ["line", Math.round(i), Math.round(s + o)]];
this.clip([u], function () {this.renderBackgroundRepeat(t, e, n, r, c[3], c[0])}, this)
}, Ut.prototype.renderBackgroundRepeat = function (t, e, n, r, i, o) {
var a = Math.round(r.left + e.left + i), s = Math.round(r.top + e.top + o);
this.setFillStyle(this.ctx.createPattern(this.resizeImage(t, n), "repeat")), this.ctx.translate(a, s), this.ctx.fill(), this.ctx.translate(-a, -s)
}, Ut.prototype.renderBackgroundGradient = function (t, e) {
if (t instanceof P) {
var n = this.ctx.createLinearGradient(e.left + e.width * t.x0, e.top + e.height * t.y0, e.left + e.width * t.x1, e.top + e.height * t.y1);
t.colorStops.forEach(function (t) {n.addColorStop(t.stop, t.color)}), this.rectangle(e.left, e.top, e.width, e.height, n)
}
}, Ut.prototype.resizeImage = function (t, n) {
var r = t.image;
if (r.width === n.width && r.height === n.height)return r;
var i, o = e.createElement("canvas");
return o.width = n.width, o.height = n.height, i = o.getContext("2d"), i.drawImage(r, 0, 0, r.width, r.height, 0, 0, n.width, n.height), o
}
}).call({}, window, document), /*
# PNG.js
# Copyright (c) 2011 Devon Govett
# MIT LICENSE
#
#
*/
function (t) {
var e;
e = function () {
function e(t) {
var e, n, r, i, o, a, s, c, u, l, h, f, d, p, m;
for (this.data = t, this.pos = 8, this.palette = [], this.imgData = [], this.transparency = {}, this.animation = null, this.text = {}, a = null; ;) {
switch (e = this.readUInt32(), l = function () {
var t, e;
for (e = [], s = t = 0; 4 > t; s = ++t)e.push(String.fromCharCode(this.data[this.pos++]));
return e
}.call(this).join("")) {
case"IHDR":
this.width = this.readUInt32(), this.height = this.readUInt32(), this.bits = this.data[this.pos++], this.colorType = this.data[this.pos++], this.compressionMethod = this.data[this.pos++], this.filterMethod = this.data[this.pos++], this.interlaceMethod = this.data[this.pos++];
break;
case"acTL":
this.animation = {
numFrames: this.readUInt32(),
numPlays: this.readUInt32() || 1 / 0,
frames: []
};
break;
case"PLTE":
this.palette = this.read(e);
break;
case"fcTL":
a && this.animation.frames.push(a), this.pos += 4, a = {
width: this.readUInt32(),
height: this.readUInt32(),
xOffset: this.readUInt32(),
yOffset: this.readUInt32()
}, o = this.readUInt16(), i = this.readUInt16() || 100, a.delay = 1e3 * o / i, a.disposeOp = this.data[this.pos++], a.blendOp = this.data[this.pos++], a.data = [];
break;
case"IDAT":
case"fdAT":
for ("fdAT" === l && (this.pos += 4, e -= 4), t = (null != a ? a.data : void 0) || this.imgData, s = d = 0; e >= 0 ? e > d : d > e; s = e >= 0 ? ++d : --d)t.push(this.data[this.pos++]);
break;
case"tRNS":
switch (this.transparency = {}, this.colorType) {
case 3:
if (r = this.palette.length / 3, this.transparency.indexed = this.read(e), this.transparency.indexed.length > r)throw new Error("More transparent colors than palette size");
if (h = r - this.transparency.indexed.length, h > 0)for (s = p = 0; h >= 0 ? h > p : p > h; s = h >= 0 ? ++p : --p)this.transparency.indexed.push(255);
break;
case 0:
this.transparency.grayscale = this.read(e)[0];
break;
case 2:
this.transparency.rgb = this.read(e)
}
break;
case"tEXt":
f = this.read(e), c = f.indexOf(0), u = String.fromCharCode.apply(String, f.slice(0, c)), this.text[u] = String.fromCharCode.apply(String, f.slice(c + 1));
break;
case"IEND":
return a && this.animation.frames.push(a), this.colors = function () {
switch (this.colorType) {
case 0:
case 3:
case 4:
return 1;
case 2:
case 6:
return 3
}
}.call(this), this.hasAlphaChannel = 4 === (m = this.colorType) || 6 === m, n = this.colors + (this.hasAlphaChannel ? 1 : 0), this.pixelBitlength = this.bits * n, this.colorSpace = function () {
switch (this.colors) {
case 1:
return "DeviceGray";
case 3:
return "DeviceRGB"
}
}.call(this), void(this.imgData = new Uint8Array(this.imgData));
default:
this.pos += e
}
if (this.pos += 4, this.pos > this.data.length)throw new Error("Incomplete or corrupt PNG file")
}
}
var n, r, i, o, a, s, u, l;
e.load = function (t, n, r) {
var i;
return "function" == typeof n && (r = n), i = new XMLHttpRequest, i.open("GET", t, !0), i.responseType = "arraybuffer", i.onload = function () {
var t, o;
return t = new Uint8Array(i.response || i.mozResponseArrayBuffer), o = new e(t), "function" == typeof(null != n ? n.getContext : void 0) && o.render(n), "function" == typeof r ? r(o) : void 0
}, i.send(null)
}, o = 0, i = 1, a = 2, r = 0, n = 1, e.prototype.read = function (t) {
var e, n, r;
for (r = [], e = n = 0; t >= 0 ? t > n : n > t; e = t >= 0 ? ++n : --n)r.push(this.data[this.pos++]);
return r
}, e.prototype.readUInt32 = function () {
var t, e, n, r;
return t = this.data[this.pos++] << 24, e = this.data[this.pos++] << 16, n = this.data[this.pos++] << 8, r = this.data[this.pos++], t | e | n | r
}, e.prototype.readUInt16 = function () {
var t, e;
return t = this.data[this.pos++] << 8, e = this.data[this.pos++], t | e
}, e.prototype.decodePixels = function (t) {
var e, n, r, i, o, a, s, u, l, h, f, d, p, m, g, w, y, v, b, x, k, A, C;
if (null == t && (t = this.imgData), 0 === t.length)return new Uint8Array(0);
for (t = new c(t), t = t.getBytes(), d = this.pixelBitlength / 8, w = d * this.width, p = new Uint8Array(w * this.height), a = t.length, g = 0, m = 0, n = 0; a > m;) {
switch (t[m++]) {
case 0:
for (i = b = 0; w > b; i = b += 1)p[n++] = t[m++];
break;
case 1:
for (i = x = 0; w > x; i = x += 1)e = t[m++], o = d > i ? 0 : p[n - d], p[n++] = (e + o) % 256;
break;
case 2:
for (i = k = 0; w > k; i = k += 1)e = t[m++], r = (i - i % d) / d, y = g && p[(g - 1) * w + r * d + i % d], p[n++] = (y + e) % 256;
break;
case 3:
for (i = A = 0; w > A; i = A += 1)e = t[m++], r = (i - i % d) / d, o = d > i ? 0 : p[n - d], y = g && p[(g - 1) * w + r * d + i % d], p[n++] = (e + Math.floor((o + y) / 2)) % 256;
break;
case 4:
for (i = C = 0; w > C; i = C += 1)e = t[m++], r = (i - i % d) / d, o = d > i ? 0 : p[n - d], 0 === g ? y = v = 0 : (y = p[(g - 1) * w + r * d + i % d], v = r && p[(g - 1) * w + (r - 1) * d + i % d]), s = o + y - v, u = Math.abs(s - o), h = Math.abs(s - y), f = Math.abs(s - v), l = h >= u && f >= u ? o : f >= h ? y : v, p[n++] = (e + l) % 256;
break;
default:
throw new Error("Invalid filter algorithm: " + t[m - 1])
}
g++
}
return p
}, e.prototype.decodePalette = function () {
var t, e, n, r, i, o, a, s, c, u;
for (r = this.palette, a = this.transparency.indexed || [], o = new Uint8Array((a.length || 0) + r.length), i = 0, n = r.length, t = 0, e = s = 0, c = r.length; c > s; e = s += 3)o[i++] = r[e], o[i++] = r[e + 1], o[i++] = r[e + 2], o[i++] = null != (u = a[t++]) ? u : 255;
return o
}, e.prototype.copyToImageData = function (t, e) {
var n, r, i, o, a, s, c, u, l, h, f;
if (r = this.colors, l = null, n = this.hasAlphaChannel, this.palette.length && (l = null != (f = this._decodedPalette) ? f : this._decodedPalette = this.decodePalette(), r = 4, n = !0), i = t.data || t, u = i.length, a = l || e, o = s = 0, 1 === r)for (; u > o;)c = l ? 4 * e[o / 4] : s, h = a[c++], i[o++] = h, i[o++] = h, i[o++] = h, i[o++] = n ? a[c++] : 255, s = c; else for (; u > o;)c = l ? 4 * e[o / 4] : s, i[o++] = a[c++], i[o++] = a[c++], i[o++] = a[c++], i[o++] = n ? a[c++] : 255, s = c
}, e.prototype.decode = function () {
var t;
return t = new Uint8Array(this.width * this.height * 4), this.copyToImageData(t, this.decodePixels()), t
};
try {u = t.document.createElement("canvas"), l = u.getContext("2d")} catch (h) {return -1}
return s = function (t) {
var e;
return l.width = t.width, l.height = t.height, l.clearRect(0, 0, t.width, t.height), l.putImageData(t, 0, 0), e = new Image, e.src = u.toDataURL(), e
}, e.prototype.decodeFrames = function (t) {
var e, n, r, i, o, a, c, u;
if (this.animation) {
for (c = this.animation.frames, u = [], n = o = 0, a = c.length; a > o; n = ++o)e = c[n], r = t.createImageData(e.width, e.height), i = this.decodePixels(new Uint8Array(e.data)), this.copyToImageData(r, i), e.imageData = r, u.push(e.image = s(r));
return u
}
}, e.prototype.renderFrame = function (t, e) {
var n, o, s;
return o = this.animation.frames, n = o[e], s = o[e - 1], 0 === e && t.clearRect(0, 0, this.width, this.height), (null != s ? s.disposeOp : void 0) === i ? t.clearRect(s.xOffset, s.yOffset, s.width, s.height) : (null != s ? s.disposeOp : void 0) === a && t.putImageData(s.imageData, s.xOffset, s.yOffset), n.blendOp === r && t.clearRect(n.xOffset, n.yOffset, n.width, n.height), t.drawImage(n.image, n.xOffset, n.yOffset)
}, e.prototype.animate = function (t) {
var e, n, r, i, o, a, s = this;
return n = 0, a = this.animation, i = a.numFrames, r = a.frames, o = a.numPlays, (e = function () {
var a, c;
return a = n++ % i, c = r[a], s.renderFrame(t, a), i > 1 && o > n / i ? s.animation._timeout = setTimeout(e, c.delay) : void 0
})()
}, e.prototype.stopAnimation = function () {
var t;
return clearTimeout(null != (t = this.animation) ? t._timeout : void 0)
}, e.prototype.render = function (t) {
var e, n;
return t._png && t._png.stopAnimation(), t._png = this, t.width = this.width, t.height = this.height, e = t.getContext("2d"), this.animation ? (this.decodeFrames(e), this.animate(e)) : (n = e.createImageData(this.width, this.height), this.copyToImageData(n, this.decodePixels()), e.putImageData(n, 0, 0))
}, e
}(), t.PNG = e
}("undefined" != typeof window && window || this);
/*
* Extracted from pdf.js
* https://github.com/andreasgal/pdf.js
*
* Copyright (c) 2011 Mozilla Foundation
*
* Contributors: Andreas Gal <gal@mozilla.com>
* Chris G Jones <cjones@mozilla.com>
* Shaon Barman <shaon.barman@gmail.com>
* Vivien Nicolas <21@vingtetun.org>
* Justin D'Arcangelo <justindarc@gmail.com>
* Yury Delendik
*
*
*/
var s = function () {
function t() {this.pos = 0, this.bufferLength = 0, this.eof = !1, this.buffer = null}
return t.prototype = {
ensureBuffer: function (t) {
var e = this.buffer, n = e ? e.byteLength : 0;
if (n > t)return e;
for (var r = 512; t > r;)r <<= 1;
for (var i = new Uint8Array(r), o = 0; n > o; ++o)i[o] = e[o];
return this.buffer = i
}, getByte: function () {
for (var t = this.pos; this.bufferLength <= t;) {
if (this.eof)return null;
this.readBlock()
}
return this.buffer[this.pos++]
}, getBytes: function (t) {
var e = this.pos;
if (t) {
this.ensureBuffer(e + t);
for (var n = e + t; !this.eof && this.bufferLength < n;)this.readBlock();
var r = this.bufferLength;
n > r && (n = r)
} else {
for (; !this.eof;)this.readBlock();
var n = this.bufferLength
}
return this.pos = n, this.buffer.subarray(e, n)
}, lookChar: function () {
for (var t = this.pos; this.bufferLength <= t;) {
if (this.eof)return null;
this.readBlock()
}
return String.fromCharCode(this.buffer[this.pos])
}, getChar: function () {
for (var t = this.pos; this.bufferLength <= t;) {
if (this.eof)return null;
this.readBlock()
}
return String.fromCharCode(this.buffer[this.pos++])
}, makeSubStream: function (t, e, n) {
for (var r = t + e; this.bufferLength <= r && !this.eof;)this.readBlock();
return new Stream(this.buffer, t, e, n)
}, skip: function (t) {t || (t = 1), this.pos += t}, reset: function () {this.pos = 0}
}, t
}(), c = function () {
function t(t) {throw new Error(t)}
function e(e) {
var n = 0, r = e[n++], i = e[n++];
-1 != r && -1 != i || t("Invalid header in flate stream"), 8 != (15 & r) && t("Unknown compression method in flate stream"), ((r << 8) + i) % 31 != 0 && t("Bad FCHECK in flate stream"), 32 & i && t("FDICT bit set in flate stream"), this.bytes = e, this.bytesPos = n, this.codeSize = 0, this.codeBuf = 0, s.call(this)
}
if ("undefined" != typeof Uint32Array) {
var n = new Uint32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), r = new Uint32Array([3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, 131095, 131099, 131103, 196643, 196651, 196659, 196667, 262211, 262227, 262243, 262259, 327811, 327843, 327875, 327907, 258, 258, 258]), i = new Uint32Array([1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, 262193, 327745, 327777, 393345, 393409, 459009, 459137, 524801, 525057, 590849, 591361, 657409, 658433, 724993, 727041, 794625, 798721, 868353, 876545]), o = [new Uint32Array([459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, 459016, 524384, 524320, 589984, 524288, 524416, 524352, 590048, 459012, 524376, 524312, 589968, 459028, 524408, 524344, 590032, 459020, 524392, 524328, 59e4, 524296, 524424, 524360, 590064, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590024, 459018, 524388, 524324, 589992, 524292, 524420, 524356, 590056, 459014, 524380, 524316, 589976, 459030, 524412, 524348, 590040, 459022, 524396, 524332, 590008, 524300, 524428, 524364, 590072, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, 459013, 524378, 524314, 589972, 459029, 524410, 524346, 590036, 459021, 524394, 524330, 590004, 524298, 524426, 524362, 590068, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590028, 459019, 524390, 524326, 589996, 524294, 524422, 524358, 590060, 459015, 524382, 524318, 589980, 459031, 524414, 524350, 590044, 459023, 524398, 524334, 590012, 524302, 524430, 524366, 590076, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590018, 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, 459020, 524393, 524329, 590002, 524297, 524425, 524361, 590066, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590026, 459018, 524389, 524325, 589994, 524293, 524421, 524357, 590058, 459014, 524381, 524317, 589978, 459030, 524413, 524349, 590042, 459022, 524397, 524333, 590010, 524301, 524429, 524365, 590074, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590022, 459017, 524387, 524323, 589990, 524291, 524419, 524355, 590054, 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590030, 459019, 524391, 524327, 589998, 524295, 524423, 524359, 590062, 459015, 524383, 524319, 589982, 459031, 524415, 524351, 590046, 459023, 524399, 524335, 590014, 524303, 524431, 524367, 590078, 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590017, 459016, 524384, 524320, 589985, 524288, 524416, 524352, 590049, 459012, 524376, 524312, 589969, 459028, 524408, 524344, 590033, 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, 459018, 524388, 524324, 589993, 524292, 524420, 524356, 590057, 459014, 524380, 524316, 589977, 459030, 524412, 524348, 590041, 459022, 524396, 524332, 590009, 524300, 524428, 524364, 590073, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590021, 459017, 524386, 524322, 589989, 524290, 524418, 524354, 590053, 459013, 524378, 524314, 589973, 459029, 524410, 524346, 590037, 459021, 524394, 524330, 590005, 524298, 524426, 524362, 590069, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, 459015, 524382, 524318, 589981, 459031, 524414, 524350, 590045, 459023, 524398, 524334, 590013, 524302, 524430, 524366, 590077, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590019, 459016, 524385, 524321, 589987, 524289, 524417, 524353, 590051, 459012, 524377, 524313, 589971, 459028, 524409, 524345, 590035, 459020, 524393, 524329, 590003, 524297, 524425, 524361, 590067, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590027, 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, 459022, 524397, 524333, 590011, 524301, 524429, 524365, 590075, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590023, 459017, 524387, 524323, 589991, 524291, 524419, 524355, 590055, 459013, 524379, 524315, 589975, 459029, 524411, 524347, 590039, 459021, 524395, 524331, 590007, 524299, 524427, 524363, 590071, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590031, 459019, 524391, 524327, 589999, 524295, 524423, 524359, 590063, 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079]), 9], a = [new Uint32Array([327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, 327682, 327698, 327690, 327706, 327686, 327702, 327694, 0, 327681, 327697, 327689, 327705, 327685, 327701, 327693, 327709, 327683, 327699, 327691, 327707, 327687, 327703, 327695, 0]), 5];
return e.prototype = Object.create(s.prototype), e.prototype.getBits = function (e) {
for (var n, r = this.codeSize, i = this.codeBuf, o = this.bytes, a = this.bytesPos; e > r;)"undefined" == typeof(n = o[a++]) && t("Bad encoding in flate stream"), i |= n << r, r += 8;
return n = i & (1 << e) - 1, this.codeBuf = i >> e, this.codeSize = r -= e, this.bytesPos = a, n
}, e.prototype.getCode = function (e) {
for (var n = e[0], r = e[1], i = this.codeSize, o = this.codeBuf, a = this.bytes, s = this.bytesPos; r > i;) {
var c;
"undefined" == typeof(c = a[s++]) && t("Bad encoding in flate stream"), o |= c << i, i += 8
}
var u = n[o & (1 << r) - 1], l = u >> 16, h = 65535 & u;
return (0 == i || l > i || 0 == l) && t("Bad encoding in flate stream"), this.codeBuf = o >> l, this.codeSize = i - l, this.bytesPos = s, h
}, e.prototype.generateHuffmanTable = function (t) {
for (var e = t.length, n = 0, r = 0; e > r; ++r)t[r] > n && (n = t[r]);
for (var i = 1 << n, o = new Uint32Array(i), a = 1, s = 0, c = 2; n >= a; ++a, s <<= 1, c <<= 1)for (var u = 0; e > u; ++u)if (t[u] == a) {
for (var l = 0, h = s, r = 0; a > r; ++r)l = l << 1 | 1 & h, h >>= 1;
for (var r = l; i > r; r += c)o[r] = a << 16 | u;
++s
}
return [o, n]
}, e.prototype.readBlock = function () {
function e(t, e, n, r, i) {for (var o = t.getBits(n) + r; o-- > 0;)e[A++] = i}
var s = this.getBits(3);
if (1 & s && (this.eof = !0), s >>= 1, 0 == s) {
var c, u = this.bytes, l = this.bytesPos;
"undefined" == typeof(c = u[l++]) && t("Bad block header in flate stream");
var h = c;
"undefined" == typeof(c = u[l++]) && t("Bad block header in flate stream"), h |= c << 8, "undefined" == typeof(c = u[l++]) && t("Bad block header in flate stream");
var f = c;
"undefined" == typeof(c = u[l++]) && t("Bad block header in flate stream"), f |= c << 8, f != (65535 & ~h) && t("Bad uncompressed block length in flate stream"), this.codeBuf = 0, this.codeSize = 0;
var d = this.bufferLength, p = this.ensureBuffer(d + h), m = d + h;
this.bufferLength = m;
for (var g = d; m > g; ++g) {
if ("undefined" == typeof(c = u[l++])) {
this.eof = !0;
break
}
p[g] = c
}
return void(this.bytesPos = l)
}
var w, y;
if (1 == s)w = o, y = a; else if (2 == s) {
for (var v = this.getBits(5) + 257, b = this.getBits(5) + 1, x = this.getBits(4) + 4, k = Array(n.length), A = 0; x > A;)k[n[A++]] = this.getBits(3);
for (var C = this.generateHuffmanTable(k), _ = 0, A = 0, q = v + b, S = new Array(q); q > A;) {
var T = this.getCode(C);
16 == T ? e(this, S, 2, 3, _) : 17 == T ? e(this, S, 3, 3, _ = 0) : 18 == T ? e(this, S, 7, 11, _ = 0) : S[A++] = _ = T
}
w = this.generateHuffmanTable(S.slice(0, v)), y = this.generateHuffmanTable(S.slice(v, q))
} else t("Unknown block type in flate stream");
for (var p = this.buffer, E = p ? p.length : 0, P = this.bufferLength; ;) {
var I = this.getCode(w);
if (256 > I)P + 1 >= E && (p = this.ensureBuffer(P + 1), E = p.length), p[P++] = I; else {
if (256 == I)return void(this.bufferLength = P);
I -= 257, I = r[I];
var F = I >> 16;
F > 0 && (F = this.getBits(F));
var _ = (65535 & I) + F;
I = this.getCode(y), I = i[I], F = I >> 16, F > 0 && (F = this.getBits(F));
var O = (65535 & I) + F;
P + _ >= E && (p = this.ensureBuffer(P + _), E = p.length);
for (var B = 0; _ > B; ++B, ++P)p[P] = p[P - O]
}
}
}, e
}
}();
!function (t) {
var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
"undefined" == typeof t.btoa && (t.btoa = function (t) {
var n, r, i, o, a, s, c, u, l = 0, h = 0, f = "", d = [];
if (!t)return t;
do n = t.charCodeAt(l++), r = t.charCodeAt(l++), i = t.charCodeAt(l++), u = n << 16 | r << 8 | i, o = u >> 18 & 63, a = u >> 12 & 63, s = u >> 6 & 63, c = 63 & u, d[h++] = e.charAt(o) + e.charAt(a) + e.charAt(s) + e.charAt(c); while (l < t.length);
f = d.join("");
var p = t.length % 3;
return (p ? f.slice(0, p - 3) : f) + "===".slice(p || 3)
}), "undefined" == typeof t.atob && (t.atob = function (t) {
var n, r, i, o, a, s, c, u, l = 0, h = 0, f = "", d = [];
if (!t)return t;
t += "";
do o = e.indexOf(t.charAt(l++)), a = e.indexOf(t.charAt(l++)), s = e.indexOf(t.charAt(l++)), c = e.indexOf(t.charAt(l++)), u = o << 18 | a << 12 | s << 6 | c, n = u >> 16 & 255, r = u >> 8 & 255, i = 255 & u, 64 == s ? d[h++] = String.fromCharCode(n) : 64 == c ? d[h++] = String.fromCharCode(n, r) : d[h++] = String.fromCharCode(n, r, i); while (l < t.length);
return f = d.join("")
}), Array.prototype.map || (Array.prototype.map = function (t) {
if (void 0 === this || null === this || "function" != typeof t)throw new TypeError;
for (var e = Object(this), n = e.length >>> 0, r = new Array(n), i = arguments.length > 1 ? arguments[1] : void 0, o = 0; n > o; o++)o in e && (r[o] = t.call(i, e[o], o, e));
return r
}), Array.isArray || (Array.isArray = function (t) {return "[object Array]" === Object.prototype.toString.call(t)}), Array.prototype.forEach || (Array.prototype.forEach = function (t, e) {
if (void 0 === this || null === this || "function" != typeof t)throw new TypeError;
for (var n = Object(this), r = n.length >>> 0, i = 0; r > i; i++)i in n && t.call(e, n[i], i, n)
}), Object.keys || (Object.keys = function () {
var t = Object.prototype.hasOwnProperty, e = !{toString: null}.propertyIsEnumerable("toString"), n = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"], r = n.length;
return function (i) {
if ("object" != typeof i && ("function" != typeof i || null === i))throw new TypeError;
var o, a, s = [];
for (o in i)t.call(i, o) && s.push(o);
if (e)for (a = 0; r > a; a++)t.call(i, n[a]) && s.push(n[a]);
return s
}
}()), String.prototype.trim || (String.prototype.trim = function () {return this.replace(/^\s+|\s+$/g, "")}), String.prototype.trimLeft || (String.prototype.trimLeft = function () {return this.replace(/^\s+/g, "")}), String.prototype.trimRight || (String.prototype.trimRight = function () {return this.replace(/\s+$/g, "")})
}("undefined" != typeof self && self || "undefined" != typeof window && window || this);
var e = e;
return e
});