PageSourceSearch

https://kansabook.com/themes/wowonder/javascript/html2pdf.bundle.js?version=4.3.4

js kansabook.com collected 2026-09-24 09:35:00 UTC 703,132 bytes, 9,358 lines download raw bytes

1/**
2 * html2pdf.js v0.9.2
3 * Copyright (c) 2020 Erik Koopmans
4 * Released under the MIT License.
5 */
6(function (global, factory) {
7	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
8	typeof define === 'function' && define.amd ? define(factory) :
9	(global.html2pdf = factory());
10}(this, (function () { 'use strict';
11
12var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
13
14function commonjsRequire () {
15	throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');
16}
17
18function unwrapExports (x) {
19	return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
20}
21
22function createCommonjsModule(fn, module) {
23	return module = { exports: {} }, fn(module, module.exports), module.exports;
24}
25
26var jspdf_min = createCommonjsModule(function (module, exports) {
27!function(t,e){module.exports=e();}(commonjsGlobal,function(){var t,y,e,I,i,o,a,h,C,T,d,p,F,n,r,s,c,P,E,q,g,m,w,l,v,b,x,S,u,k,_,f,A,O,B,R,j,D,M,U,N,z,L,H,W,G,V,Y,X,J,K,Q,Z,vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$=function(pt){var gt="1.3",mt={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]};function wt(o){var a={};this.subscribe=function(t,e,n){if("function"!=typeof e)return!1;a.hasOwnProperty(t)||(a[t]={});var r=Math.random().toString(35);return a[t][r]=[e,!!n], r}, this.unsubscribe=function(t){for(var e in a)if(a[e][t])return delete a[e][t], !0;return!1}, this.publish=function(t){if(a.hasOwnProperty(t)){var e=Array.prototype.slice.call(arguments,1),n=[];for(var r in a[t]){var i=a[t][r];try{i[0].apply(o,e);}catch(t){pt.console&&console.error("jsPDF PubSub Error",t.message,t);}i[1]&&n.push(r);}n.length&&n.forEach(this.unsubscribe);}};}function yt(t,e,n,r){var i={};"object"===(void 0===t?"undefined":vt(t))&&(t=(i=t).orientation, e=i.unit||e, n=i.format||n, r=i.compress||i.compressPdf||r), e=e||"mm", n=n||"a4", t=(""+(t||"P")).toLowerCase();(""+n).toLowerCase();var K,w,y,o,u,v,a,s,h,c,l,f=!!r&&"function"==typeof Uint8Array,Q=i.textColor||"0 g",d=i.drawColor||"0 G",Z=i.fontSize||16,$=i.charSpace||0,tt=i.R2L||!1,et=i.lineHeight||1.15,p=i.lineWidth||.200025,g="00000000000000000000000000000000",m=2,b=!1,x=[],nt={},S={},k=0,_=[],A=[],I=[],C=[],T=[],F=0,P=0,E=0,q={title:"",subject:"",author:"",keywords:"",creator:""},O={},rt=new wt(O),B=i.hotfixes||[],R=function(t){var e,n=t.ch1,r=t.ch2,i=t.ch3,o=t.ch4,a=(t.precision, "draw"===t.pdfColorType?["G","RG","K"]:["g","rg","k"]);if("string"==typeof n&&"#"!==n.charAt(0)){var s=new RGBColor(n);s.ok&&(n=s.toHex());}if("string"==typeof n&&/^#[0-9A-Fa-f]{3}$/.test(n)&&(n="#"+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]), "string"==typeof n&&/^#[0-9A-Fa-f]{6}$/.test(n)){var h=parseInt(n.substr(1),16);n=h>>16&255, r=h>>8&255, i=255&h;}if(void 0===r||void 0===o&&n===r&&r===i)if("string"==typeof n)e=n+" "+a[0];else switch(t.precision){case 2:e=N(n/255)+" "+a[0];break;case 3:default:e=z(n/255)+" "+a[0];}else if(void 0===o||"object"===(void 0===o?"undefined":vt(o))){if("string"==typeof n)e=[n,r,i,a[1]].join(" ");else switch(t.precision){case 2:e=[N(n/255),N(r/255),N(i/255),a[1]].join(" ");break;default:case 3:e=[z(n/255),z(r/255),z(i/255),a[1]].join(" ");}o&&0===o.a&&(e=["255","255","255",a[1]].join(" "));}else if("string"==typeof n)e=[n,r,i,o,a[2]].join(" ");else switch(t.precision){case 2:e=[N(n),N(r),N(i),N(o),a[2]].join(" ");break;case 3:default:e=[z(n),z(r),z(i),z(o),a[2]].join(" ");}return e},j=function(t){var e=function(t){return("0"+parseInt(t)).slice(-2)},n=t.getTimezoneOffset(),r=n<0?"+":"-",i=Math.floor(Math.abs(n/60)),o=Math.abs(n%60),a=[r,e(i),"'",e(o),"'"].join("");return["D:",t.getFullYear(),e(t.getMonth()+1),e(t.getDate()),e(t.getHours()),e(t.getMinutes()),e(t.getSeconds()),a].join("")},D=function(t){var e;return void 0===(void 0===t?"undefined":vt(t))&&(t=new Date), e="object"===(void 0===t?"undefined":vt(t))&&"[object Date]"===Object.prototype.toString.call(t)?j(t):/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|\-0[0-9]|\-1[0-1])\'(0[0-9]|[1-5][0-9])\'?$/.test(t)?t:j(new Date), c=e},M=function(t){var e=c;return"jsDate"===t&&(e=function(t){var e=parseInt(t.substr(2,4),10),n=parseInt(t.substr(6,2),10)-1,r=parseInt(t.substr(8,2),10),i=parseInt(t.substr(10,2),10),o=parseInt(t.substr(12,2),10),a=parseInt(t.substr(14,2),10);parseInt(t.substr(16,2),10), parseInt(t.substr(20,2),10);return new Date(e,n,r,i,o,a,0)}(c)), e},U=function(t){return t=t||"12345678901234567890123456789012".split("").map(function(){return"ABCDEF0123456789".charAt(Math.floor(16*Math.random()))}).join(""), g=t},N=function(t){return t.toFixed(2)},z=function(t){return t.toFixed(3)},it=function(t){t="string"==typeof t?t:t.toString(), b?_[o].push(t):(E+=t.length+1, C.push(t));}
27,L=function(){return x[++m]=E, it(m+" 0 obj"), m},H=function(t){it("stream"), it(t), it("endstream");},W=function(){for(var t in it("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), it("/Font <<"), nt)nt.hasOwnProperty(t)&&it("/"+t+" "+nt[t].objectNumber+" 0 R");it(">>"), it("/XObject <<"), rt.publish("putXobjectDict"), it(">>");},G=function(){!function(){for(var t in nt)nt.hasOwnProperty(t)&&(e=nt[t], rt.publish("putFont",{font:e,out:it,newObject:L}), !0!==e.isAlreadyPutted&&(e.objectNumber=L(), it("<<"), it("/Type /Font"), it("/BaseFont /"+e.postScriptName), it("/Subtype /Type1"), "string"==typeof e.encoding&&it("/Encoding /"+e.encoding), it("/FirstChar 32"), it("/LastChar 255"), it(">>"), it("endobj")));var e;}(), rt.publish("putResources"), x[2]=E, it("2 0 obj"), it("<<"), W(), it(">>"), it("endobj"), rt.publish("postPutResources");},V=function(t,e,n){S.hasOwnProperty(e)||(S[e]={}), S[e][n]=t;},Y=function(t,e,n,r){var i="F"+(Object.keys(nt).length+1).toString(10),o=nt[i]={id:i,postScriptName:t,fontName:e,fontStyle:n,encoding:r,metadata:{}};return V(i,e,n), rt.publish("addFont",o), i},ot=function(t,e){return function(t,e){var n,r,i,o,a,s,h,c,l;if(i=(e=e||{}).sourceEncoding||"Unicode", a=e.outputEncoding, (e.autoencode||a)&&nt[K].metadata&&nt[K].metadata[i]&&nt[K].metadata[i].encoding&&(o=nt[K].metadata[i].encoding, !a&&nt[K].encoding&&(a=nt[K].encoding), !a&&o.codePages&&(a=o.c
27odePages[0]), "string"==typeof a&&(a=o[a]), a)){for(h=!1, s=[], n=0, r=t.length;n<r;n++)(c=a[t.charCodeAt(n)])?s.push(String.fromCharCode(c)):s.push(t[n]), s[n].charCodeAt(0)>>8&&(h=!0);t=s.join("");}for(n=t.length;void 0===h&&0!==n;)t.charCodeAt(n-1)>>8&&(h=!0), n--;if(!h)return t;for(s=e.noBOM?[]:[254,255], n=0, r=t.length;n<r;n++){if((l=(c=t.charCodeAt(n))>>8)>>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(c-(l<<8));}return String.fromCharCode.apply(void 0,s)}(t,e).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},X=function(){(function(t,e){var n="string"==typeof e&&e.toLowerCase();if("string"==typeof t){var r=t.toLowerCase();mt.hasOwnProperty(r)&&(t=mt[r][0]/w, e=mt[r][1]/w);}if(Array.isArray(t)&&(e=t[1], t=t[0]), n){switch(n.substr(0,1)){case"l":t<e&&(n="s");break;case"p":e<t&&(n="s");}"s"===n&&(y=t, t=e, e=y);}b=!0, _[++k]=[], I[k]={width:Number(t)||u,height:Number(e)||v}, A[k]={}, J(k);}).apply(this,arguments), it(N(p*w)+" w"), it(d), 0!==F&&it(F+" J"), 0!==P&&it(P+" j"), rt.publish("addPage",{pageNumber:k});},J=function(t){0<t&&t<=k&&(u=I[o=t].width, v=I[t].height);},at=function(t,e,n){var r,i=void 0;return n=n||{}, t=void 0!==t?t:nt[K].fontName, e=void 0!==e?e:nt[K].fontStyle, r=t.toLowerCase(), void 0!==S[r]&&void 0!==S[r][e]?i=S[r][e]:void 0!==S[t]&&void 0!==S[t][e]?i=S[t][e]:!1===n.disableWarning&&console.warn("Unable to look up font label for font '"+t+"', '"+e+"'. Refer to getFontList() for available fonts."), i||n.noFallback||null==(i=S.times[e])&&(i=S.times.normal), i},st=function(){b=!1, m=2, E=0, C=[], x=[], T=[], rt.publish("buildDocument"), it("%PDF-"+gt), it("%ºß¬à"), function(){var t,e,n,r,i,o,a,s,h,c=[];for(a=pt.adler32cs||yt.API.adler32cs, f&&void 0===a&&(f=!1), t=1;t<=k;t++){if(c.push(L()), s=(u=I[t].width)*w, h=(v=I[t].height)*w, it("<</Type /Page"), it("/Parent 1 0 R"), it("/Resources 2 0 R"), it("/MediaBox [0 0 "+N(s)+" "+N(h)+"]"), rt.publish("putPage",{pageNumber:t,page:_[t]}), it("/Contents "+(m+1)+" 0 R"), it(">>"), it("endobj"), e=_[t].join("\n"), L(), f){for(n=[], r=e.length;r--;)n[r]=e.charCodeAt(r);o=a.from(e), (i=new Deflater(6)).append(new Uint8Array(n)), e=i.flush(), (n=new Uint8Array(e.length+6)).set(new Uint8Array([120,156])), n.set(e,2), n.set(new Uint8Array([255&o,o>>8&255,o>>16&255,o>>24&255]),e.length+2), e=String.fromCharCode.apply(null,n), it("<</Length "+e.length+" /Filter [/FlateDecode]>>");}else it("<</Length "+e.length+">>");H(e), it("endobj");}x[1]=E, it("1 0 obj"), it("<</Type /Pages");var l="/Kids [";for(r=0;r<k;r++)l+=c[r]+" 0 R ";it(l+"]"), it("/Count "+k), it(">>"), it("endobj"), rt.publish("postPutPages");}(), function(){rt.publish("putAdditionalObjects");for(var t=0;t<T.length;t++){var e=T[t];x[e.objId]=E, it(e.objId+" 0 obj"), it(e.content), it("endobj");}m+=T.length, rt.publish("postPutAdditionalObjects");}(), G(), L(), it("<<"), function(){for(var t in it("/Producer (jsPDF "+yt.version+")"), q)q.hasOwnProperty(t)&&q[t]&&it("/"+t.substr(0,1).toUpperCase()+t.substr(1)+" ("+ot(q[t])+")");it("/CreationDate ("+c+")");}(), it(">>"), it("endobj"), L(), it("<<"), function(){switch(it("/Type /Catalog"), it("/Pages 1 0 R"), s||(s="fullwidth"), s){case"fullwidth":it("/OpenAction [3 0 R /FitH null]");break;case"fullheight":it("/OpenAction [3 0 R /FitV null]");break;case"fullpage":it("/OpenAction [3 0 R /Fit]");break;case"original":it("/OpenAction [3 0 R /XYZ null null 1]");break;default:var t=""+s;"%"===t.substr(t.length-1)&&(s=parseInt(s)/100), "number"==typeof s&&it("/OpenAction [3 0 R /XYZ null null "+N(s)+"]");}switch(h||(h="continuous"), h){case"continuous":it("/PageLayout /OneColumn");break;case"single":it("/PageLayout /SinglePage");break;case"two":case"twoleft":it("/PageLayout /TwoColumnLeft");break;case"tworight":it("/PageLayout /TwoColumnRight");}a&&it("/PageMode /"+a), rt.publish("putCatalog");}(), it(">>"), it("endobj");var t,e=E,n="0000000000";for(it("xref"), it("0 "+(m+1)), it(n+" 65535 f "), t=1;t<=m;t++){var r=x[t];it("function"==typeof r?(n+x[t]()).slice(-10)+" 00000 n ":(n+x[t]).slice(-10)+" 00000 n ");}return it("trailer"), it("<<"), it("/Size "+(m+1)), it("/Root "+m+" 0 R"), it("/Info "+(m-1)+" 0 R"), it("/ID [ <"+g+"> <"+g+"> ]"), it(">>
27"), it("startxref"), it(""+e), it("%%EOF"), b=!0, C.join("\n")},ht=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=st(),e=t.length,n=new ArrayBuffer(e),r=new Uint8Array(n);e--;)r[e]=t.charCodeAt(e);return n},lt=function(){return new Blob([ct()],{type:"application/pdf"})},ut=((l=function(t,e){var n="dataur"===(""+t).substr(0,6)?"data:application/pdf;base64,"+btoa(st()):0;switch(t){case void 0:return st();case"save":if("object"===("undefined"==typeof navigator?"undefined":vt(navigator))&&navigator.getUserMedia&&(void 0===pt.URL||void 0===pt.URL.createObjectURL))return O.output("dataurlnewwindow");bt(lt(),e), "function"==typeof bt.unload&&pt.setTimeout&&setTimeout(bt.unload,911);break;case"arraybuffer":return ct();case"blob":return lt();case"bloburi":case"bloburl":return pt.URL&&pt.URL.createObjectURL(lt())||void 0;case"datauristring":case"dataurlstring":return n;case"dataurlnewwindow":var r=pt.open(n);if(r||"undefined"==typeof safari)return r;case"datauri":case"dataurl":return pt.document.location.href=n;default:throw new Error('Output type "'+t+'" is not supported.')}}).foo=function(){try{return l.apply(this,arguments)}catch(t){var e=t.stack||"";~e.indexOf(" at ")&&(e=e.split(" at ")[1]);var n="Error in function "+e.split("\n")[0].split("<")[0]+": "+t.message;if(!pt.console)throw new Error(n);pt.console.error(n,t), pt.alert&&alert(n);}}, (l.foo.bar=l).foo),ft=function(t){return!0===Array.isArray(B)&&-1<B.indexOf(t)};switch(e){case"pt":w=1;break;case"mm":w=72/25.4;break;case"cm":w=72/2.54;break;case"in":w=72;break;case"px":w=1==ft("px_scaling")?.75:96/72;break;case"pc":case"em":w=12;break;case"ex":w=6;break;default:throw"Invalid unit: "+e}for(var dt in D(), U(), O.internal={pdfEscape:ot,getStyle:ht,getFont:function(){return nt[at.apply(O,arguments)]},getFontSize:function(){return Z},getCharSpace:function(){return $},getTextColor:function(){var t=Q.split(" ");if(2===t.length&&"g"===t[1]){var e=parseFloat(t[0]);t=[e,e,e,"r"];}for(var n="#",r=0;r<3;r++)n+=("0"+Math.floor(255*parseFloat(t[r])).toString(16)).slice(-2);return n},getLineHeight:function(){return Z*et},write:function(t){it(1===arguments.length?t:Array.prototype.join.call(arguments," "));},getCoordinateString:function(t){return N(t*w)},getVerticalCoordinateString:function(t){return N((v-t)*w)},collections:{},newObject:L,newAdditionalObject:function(){var t=2*_.length+1,e={objId:t+=T.length,content:""};return T.push(e), e},newObjectDeferred:function(){return x[++m]=function(){return E}, m},newObjectDeferredBegin:function(t){x[t]=E;},putStream:H,events:rt,scaleFactor:w,pageSize:{getWidth:function(){return u},getHeight:function(){return v}},output:function(t,e){return ut(t,e)},getNumberOfPages:function(){return _.length-1},pages:_,out:it,f2:N,getPageInfo:function(t){return{objId:2*(t-1)+3,pageNumber:t,pageContext:A[t]}},getCurrentPageInfo:function(){return{objId:2*(o-1)+3,pageNumber:o,pageContext:A[o]}},getPDFVersion:function(){return gt},hasHotfix:ft}, O.addPage=function(){return X.apply(this,arguments), this}, O.setPage=function(){return J.apply(this,arguments), this}, O.insertPage=function(t){return this.addPage(), this.movePage(o,t), this}, O.movePage=function(t,e){if(e<t){for(var n=_[t],r=I[t],i=A[t],o=t;e<o;o--)_[o]=_[o-1], I[o]=I[o-1], A[o]=A[o-1];_[e]=n, I[e]=r, A[e]=i, this.setPage(e);}else if(t<e){for(n=_[t], r=I[t], i=A[t], o=t;o<e;o++)_[o]=_[o+1], I[o]=I[o+1], A[o]=A[o+1];_[e]=n, I[e]=r, A[e]=i, this.setPage(e);}return this}, O.deletePage=function(){return function(t){0<t&&t<=k&&(_.splice(t,1), I.splice(t,1), --k<o&&(o=k), this.setPage(o));}.apply(this,arguments), this}, O.setCreationDate=function(t){return D(t), this}, O.getCreationDate=function(t){return M(t)}, O.setFileId=function(t){return U(t), this}, O.getFileId=function(){return g}, O.setDisplayMode=function(t,e,n){if(s=t, h=e, -1==[void 0,null,"UseNone","UseOutlines","UseThumbs","FullScreen"].indexOf(a=n))throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "'+n+'" is not recognized.');return this}, O.text=function(t,e,n,i){var r,o,a="",s=et,h=this;function c(t){for(var e,n=t.concat(),r=[],i=n.length;i--;
27)"string"==typeof(e=n.shift())?r.push(e):"[object Array]"===Object.prototype.toString.call(t)&&1===e.length?r.push(e[0]):r.push([e[0],e[1],e[2]]);return r}function l(t,e){var n;if("string"==typeof t)n=e(t)[0];else if("[object Array]"===Object.prototype.toString.call(t)){for(var r,i,o=t.concat(),a=[],s=o.length;s--;)"string"==typeof(r=o.shift())?a.push(e(r)[0]):"[object Array]"===Object.prototype.toString.call(r)&&"string"===r[0]&&(i=e(r[0],r[1],r[2]), a.push([i[0],i[1],i[2]]));n=a;}return n}"number"==typeof t&&(o=n, n=e, e=t, t=o);var u=i,f=arguments[4],d=arguments[5];"object"===(void 0===u?"undefined":vt(u))&&null!==u||("string"==typeof f&&(d=f, f=null), "string"==typeof u&&(d=u, u=null), "number"==typeof u&&(f=u, u=null), i={flags:u,angle:f,align:d});var p=!1,g=!0;if("string"==typeof t)p=!0;else if("[object Array]"===Object.prototype.toString.call(t)){for(var m,w=t.concat(),y=[],v=w.length;v--;)("string"!=typeof(m=w.shift())||"[object Array]"===Object.prototype.toString.call(m)&&"string"!=typeof m[0])&&(g=!1);p=g;}if(!1===p)throw new Error('Type of text must be string or Array. "'+t+'" is not recognized.');var b=nt[K].encoding;"WinAnsiEncoding"!==b&&"StandardEncoding"!==b||(t=l(t,function(t,e,n){return[(r=t, r=r.split("\t").join(Array(i.TabLen||9).join(" ")), ot(r,u)),e,n];var r;})), "string"==typeof t&&(t=t.match(/[\r?\n]/)?t.split(/\r\n|\r|\n/g):[t]), 0<(j=i.maxWidth||0)&&("string"==typeof t?t=h.splitTextToSize(t,j):"[object Array]"===Object.prototype.toString.call(t)&&(t=h.splitTextToSize(t.join(" "),j)));var x={text:t,x:e,y:n,options:i,mutex:{pdfEscape:ot,activeFontKey:K,fonts:nt,activeFontSize:Z}};rt.publish("preProcessText",x), t=x.text;f=(i=x.options).angle;var S=h.internal.scaleFactor,k=(h.internal.pageSize.getHeight(), []);if(f){f*=Math.PI/180;var _=Math.cos(f),A=Math.sin(f),I=function(t){return t.toFixed(2)};k=[I(_),I(A),I(-1*A),I(_)];}void 0!==(R=i.charSpace)&&(a+=R+" Tc\n");i.lang;var C=-1,T=i.renderingMode||i.stroke,F=h.internal.getCurrentPageInfo().pageContext;switch(T){case 0:case!1:case"fill":C=0;break;case 1:case!0:case"stroke":C=1;break;case 2:case"fillThenStroke":C=2;break;case 3:case"invisible":C=3;break;case 4:case"fillAndAddForClipping":C=4;break;case 5:case"strokeAndAddPathForClipping":C=5;break;case 6:case"fillThenStrokeAndAddToPathForClipping":C=6;break;case 7:case"addToPathForClipping":C=7;}var P=F.usedRenderingMode||-1;-1!==C?a+=C+" Tr\n":-1!==P&&(a+="0 Tr\n"), -1!==C&&(F.usedRenderingMode=C);d=i.align||"left";var E=Z*s,q=h.internal.pageSize.getHeight(),O=h.internal.pageSize.getWidth(),B=(S=h.internal.scaleFactor, nt[K]),R=i.charSpace||$,j=i.maxWidth||0,D=(u={}, []);if("[object Array]"===Object.prototype.toString.call(t)){var M,U;y=c(t);"left"!==d&&(U=y.map(function(t){return h.getStringUnitWidth(t,{font:B,charSpace:R,fontSize:Z})*Z/S}));var N,z=Math.max.apply(Math,U),L=0;if("right"===d){e-=U[0], t=[];var H=0;for(v=y.length;H<v;H++)z-U[H], 0===H?(N=e*S, M=(q-n)*S):(N=(L-U[H])*S, M=-E), t.push([y[H],N,M]), L=U[H];}else if("center"===d){e-=U[0]/2, t=[];for(H=0, v=y.length;H<v;H++)(z-U[H])/2, 0===H?(N=e*S, M=(q-n)*S):(N=(L-U[H])/2*S, M=-E), t.push([y[H],N,M]), L=U[H];}else if("left"===d){t=[];for(H=0, v=y.length;H<v;H++)M=0===H?(q-n)*S:-E, N=0===H?e*S:0, t.push(y[H]);}else{if("justify"!==d)throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');t=[];for(j=0!==j?j:O, H=0, v=y.length;H<v;H++)M=0===H?(q-n)*S:-E, N=0===H?e*S:0, H<v-1&&D.push(((j-U[H])/(y[H].split(" ").length-1)*S).toFixed(2)), t.push([y[H],N,M]);}}!0===("boolean"==typeof i.R2L?i.R2L:tt)&&(t=l(t,function(t,e,n){return[t.split("").reverse().join(""),e,n]}));x={text:t,x:e,y:n,options:i,mutex:{pdfEscape:ot,activeFontKey:K,fonts:nt,activeFontSize:Z}};rt.publish("postProcessText",x), t=x.text, r=x.mutex.isHex;y=c(t);t=[];var W,G,V,Y=0,X=(v=y.length, "");for(H=0;H<v;H++)X="", "[object Array]"!==Object.prototype.toString.call(y[H])?(W=parseFloat(e*S).toFixed(2), G=parseFloat((q-n)*S).toFixed(2), V=(r?"<":"(")+y[H]+(r?">":")")):"[object Array]"===Object.prototype.toString.call(y[H])&&(W=parseFloat(y[H][1]).toFixed(2), G=parseFloat(y[H][2]).toFixed(2), V=(r?"<":"(")+y[H][0]+(r?">":")"), Y=1), void 0!==D&&void 0!==D[H]&&(X=D[H]+" Tw\n"), 0!==k.length&&0===H?t.push(X+k.join(" ")+" "+W+" "+G+" Tm\n"+V):1===Y||0===Y&&0===H?t.push(X+W+" "+G+" Td\n"+V):t.push(X+V);t=0===Y?t.join(" Tj\nT* "):t.join(" Tj\n"), t+=" Tj\n";var J="BT\n/"+K+" "+Z+" Tf\n"+(Z*s).toFixed(2)+" TL\n"+Q+"\n";return J+=a, J+=t, it(J+="ET"), h}, O.lstext=function(t,e,n,r){console.warn("jsPDF.lstext is deprecated");for(var i=0,o=t.length;i<o;i++, e+=r)this.text(t[i],e,n);return this}, O.line=function(t,e,n,r){return this.lines([[n-t,r-e]],t,e)}
27, O.clip=function(){it("W"), it("S");}, O.clip_fixed=function(t){it("evenodd"===t?"W*":"W"), it("n");}, O.lines=function(t,e,n,r,i,o){var a,s,h,c,l,u,f,d,p,g,m;for("number"==typeof t&&(y=n, n=e, e=t, t=y), r=r||[1,1], it(z(e*w)+" "+z((v-n)*w)+" m "), a=r[0], s=r[1], c=t.length, g=e, m=n, h=0;h<c;h++)2===(l=t[h]).length?(g=l[0]*a+g, m=l[1]*s+m, it(z(g*w)+" "+z((v-m)*w)+" l")):(u=l[0]*a+g, f=l[1]*s+m, d=l[2]*a+g, p=l[3]*s+m, g=l[4]*a+g, m=l[5]*s+m, it(z(u*w)+" "+z((v-f)*w)+" "+z(d*w)+" "+z((v-p)*w)+" "+z(g*w)+" "+z((v-m)*w)+" c"));return o&&it(" h"), null!==i&&it(ht(i)), this}, O.rect=function(t,e,n,r,i){ht(i);return it([N(t*w),N((v-e)*w),N(n*w),N(-r*w),"re"].join(" ")), null!==i&&it(ht(i)), this}, O.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}, O.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],[2*i-n,0],[-i*s,0,-i,-o*s,-i,-o],[0,2*o-r],[0,-o*s,i*s,-o,i,-o]],t+i,e,[1,1],a), this}, O.ellipse=function(t,e,n,r,i){var o=4/3*(Math.SQRT2-1)*n,a=4/3*(Math.SQRT2-1)*r;return it([N((t+n)*w),N((v-e)*w),"m",N((t+n)*w),N((v-(e-a))*w),N((t+o)*w),N((v-(e-r))*w),N(t*w),N((v-(e-r))*w),"c"].join(" ")), it([N((t-o)*w),N((v-(e-r))*w),N((t-n)*w),N((v-(e-a))*w),N((t-n)*w),N((v-e)*w),"c"].join(" ")), it([N((t-n)*w),N((v-(e+a))*w),N((t-o)*w),N((v-(e+r))*w),N(t*w),N((v-(e+r))*w),"c"].join(" ")), it([N((t+o)*w),N((v-(e+r))*w),N((t+n)*w),N((v-(e+a))*w),N((t+n)*w),N((v-e)*w),"c"].join(" ")), null!==i&&it(ht(i)), this}, O.circle=function(t,e,n,r){return this.ellipse(t,e,n,n,r)}, O.setProperties=function(t){for(var e in q)q.hasOwnProperty(e)&&t[e]&&(q[e]=t[e]);return this}, O.setFontSize=function(t){return Z=t, this}, O.setFont=function(t,e){return K=at(t,e), this}, O.setFontStyle=O.setFontType=function(t){return K=at(void 0,t), this}, O.getFontList=function(){var t,e,n,r={};for(t in S)if(S.hasOwnProperty(t))for(e in r[t]=n=[], S[t])S[t].hasOwnProperty(e)&&n.push(e);return r}, O.addFont=function(t,e,n,r){Y(t,e,n,r=r||"Identity-H");}, O.setLineWidth=function(t){return it((t*w).toFixed(2)+" w"), this}, O.setDrawColor=function(t,e,n,r){return it(R({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"draw",precision:2})), this}, O.setFillColor=function(t,e,n,r){return it(R({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"fill",precision:2})), this}, O.setTextColor=function(t,e,n,r){return Q=R({ch1:t,ch2:e,ch3:n,ch4:r,pdfColorType:"text",precision:3}), this}, O.setCharSpace=function(t){return $=t, this}, O.setR2L=function(t){return tt=t, this}, O.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}, O.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 it((F=e)+" J"), this}, O.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 it((P=e)+" j"), this}, O.output=ut, O.save=function(t){O.output("save",t);}, yt.API)yt.API.hasOwnProperty(dt)&&("events"===dt&&yt.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));}(rt,yt.API.events):O[dt]=yt.API[dt]);return function(){for(var t="helvetica",e="times",n="courier",r="normal",i="bold",o="italic",a="bolditalic",s=[["Helvetica",t,r,"WinAnsiEncoding"],["Helvetica-Bold",t,i,"WinAnsiEncoding"],["Helvetica-Oblique",t,o,"WinAnsiEncoding"],["Helvetica-BoldOblique",t,a,"WinAnsiEncoding"],["Courier",n,r,"WinAnsiEncoding"],["Courier-Bold",n,i,"WinAnsiEncoding"],["Courier-Oblique",n,o,"WinAnsiEncoding"],["Courier-BoldOblique",n,a,"WinAnsiEncoding"],["Times-Roman",e,r,"WinAnsiEncoding"],["Times-Bold",e,i,"WinAnsiEncoding"],["Times-Italic",e,o,"WinAnsiEncoding"],["Times-BoldItalic",e,a,"WinAnsiEncoding"],["ZapfDingbats","zapfdingbats",r,null],["Symbol","symbol",r,null]],h=0,c=s.length;h<c;h++){var l=Y(s[h][0],s[h][1],s[h][2],s[h][3]),u=s[h][0].split("-");V(l,u[0],u[1]||"");}rt.publish("addFonts",{fonts:nt,dictionary:S});}(), K="F1", X(n,t), rt.publish("initialized"), O}return yt.API={events:[]}, yt.version="0.0.0", "function"==typeof undefined&&undefined.amd?undefined("jsPDF",function(){return yt}):"undefined"!='object'&&module.exports?(module.exports=yt, module.exports.jsPDF=yt):pt.jsPDF=yt, yt}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")());
28/** @preserve
29   * jsPDF - PDF Document creation from JavaScript
30   * Version 1.4.1 Built on 2018-06-06T07:49:34.040Z
31   *                           CommitID 3233f44044
32   *
33   * Copyright (c) 2010-2016 James Hall <[email protected]>, https://github.com/MrRio/jsPDF
34   *               2010 Aaron Spike, https://github.com/acspike
35   *               2012 Willow Systems Corporation, willow-systems.com
36   *               2012 Pablo Hess, https://github.com/pablohess
37   *               2012 Florian Jenett, https://github.com/fjenett
38   *               2013 Warren Weckesser, https://github.com/warrenweckesser
39   *               2013 Youssef Beddad, https://github.com/lifof
40   *               2013 Lee Driscoll, https://github.com/lsdriscoll
41   *               2013 Stefan Slonevskiy, https://github.com/stefslon
42   *               2013 Jeremy Morel, https://github.com/jmorel
43   *               2013 Christoph Hartmann, https://github.com/chris-rock
44   *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
45   *               2014 James Makes, https://github.com/dollaruw
46   *               2014 Diego Casorran, https://github.com/diegocr
47   *               2014 Steven Spungin, https://github.com/Flamenco
48   *               2014 Kenneth Glassey, https://github.com/Gavver
48s
49   *
50   * Licensed under the MIT License
51   *
52   * Contributor(s):
53   *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
54   *    kim3er, mfo, alnorth, Flamenco
55   */
56/**
57   * jsPDF AcroForm Plugin Copyright (c) 2016 Alexander Weidt,
58   * https://github.com/BiggA94
59   * 
60   * Licensed under the MIT License. http://opensource.org/licenses/mit-license
61   */
62!function(n,t){var l,a,e=1,r=function(t,e){t.prototype=Object.create(e.prototype), t.prototype.constructor=t;},s=function(t){return t*(e/1)},h=function(t){var e=new I,n=N.internal.getHeight(t)||0,r=N.internal.getWidth(t)||0;return e.BBox=[0,0,r.toFixed(2),n.toFixed(2)], e},i=function(t,e,n){t=t||0;var r=1;if(r<<=e-1, 1==(n=n||1))t=t|r;else t=t&~r;return t},o=function(t,e,n){n=n||1.3, t=t||0;return 1==e.readOnly&&(t=i(t,1)), 1==e.required&&(t=i(t,2)), 1==e.noExport&&(t=i(t,3)), 1==e.multiline&&(t=i(t,13)), e.password&&(t=i(t,14)), e.noToggleToOff&&(t=i(t,15)), e.radio&&(t=i(t,16)), e.pushbutton&&(t=i(t,17)), e.combo&&(t=i(t,18)), e.edit&&(t=i(t,19)), e.sort&&(t=i(t,20)), e.fileSelect&&1.4<=n&&(t=i(t,21)), e.multiSelect&&1.4<=n&&(t=i(t,22)), e.doNotSpellCheck&&1.4<=n&&(t=i(t,23)), 1==e.doNotScroll&&1.4<=n&&(t=i(t,24)), e.richText&&1.4<=n&&(t=i(t,25)), t},u=function(t){var e=t[0],n=t[1],r=t[2],i=t[3],o={};return Array.isArray(e)?(e[0]=s(e[0]), e[1]=s(e[1]), e[2]=s(e[2]), e[3]=s(e[3])):(e=s(e), n=s(n), r=s(r), i=s(i)), o.lowerLeft_X=e||0, o.lowerLeft_Y=s(a)-n-i||0, o.upperRight_X=e+r||0, o.upperRight_Y=s(a)-n||0, [o.lowerLeft_X.toFixed(2),o.lowerLeft_Y.toFixed(2),o.upperRight_X.toFixed(2),o.upperRight_Y.toFixed(2)]},f=function(t){if(t.appearanceStreamContent)return t.appearanceStreamContent;if(t.V||t.DV){var e=[],n=t.V||t.DV,r=c(t,n);e.push("/Tx BMC"), e.push("q"), e.push("/F1 "+r.fontSize.toFixed(2)+" Tf"), e.push("1 0 0 1 0 0 Tm"), e.push("BT"), e.push(r.text), e.push("ET"), e.push("Q"), e.push("EMC");var i=new h(t);return i.stream=e.join("\n"), i}},c=function(t,e,i,n){n=n||12, i=i||"helvetica";var r={text:"",fontSize:""},o=(e=")"==(e="("==e.substr(0,1)?e.substr(1):e).substr(e.length-1)?e.substr(0,e.length-1):e).split(" "),a=n,s=N.internal.getHeight(t)||0;s=s<0?-s:s;var h=N.internal.getWidth(t)||0;h=h<0?-h:h;var c=function(t,e,n){if(t+1<o.length){var r=e+" "+o[t+1];return A(r,n+"px",i).width<=h-4}return!1};a++;t:for(;;){e="";var l=A("3",--a+"px",i).height,u=t.multiline?s-a:(s-l)/2,f=-2,d=u+=2,p=0,g=0,m=0;if(a<=0){a=12, e="(...) Tj\n", e+="% Width of Text: "+A(e,"1px").width+", FieldWidth:"+h+"\n";break}m=A(o[0]+" ",a+"px",i).width;var w="",y=0;for(var v in o){w=" "==(w+=o[v]+" ").substr(w.length-1)?w.substr(0,w.length-1):w;var b=parseInt(v);m=A(w+" ",a+"px",i).width;var x=c(b,w,a),S=v>=o.length-1;if(!x||S){if(x||S){if(S)g=b;else if(t.multiline&&s<(l+2)*(y+2)+2)continue t}else{if(!t.multiline)continue t;if(s<(l+2)*(y+2)+2)continue t;g=b;}for(var k="",_=p;_<=g;_++)k+=o[_]+" ";switch(k=" "==k.substr(k.length-1)?k.substr(0,k.length-1):k, m=A(k,a+"px",i).width, t.Q){case 2:f=h-m-2;break;case 1:f=(h-m)/2;break;case 0:default:f=2;}e+=f.toFixed(2)+" "+d.toFixed(2)+" Td\n", e+="("+k+") Tj\n", e+=-f.toFixed(2)+" 0 Td\n", d=-(a+2), m=0, p=g+1, y++, w="";}else w+=" ";}break}return r.text=e, r.fontSize=a, r},A=function(t,e,n){n=n||"helvetica";var r=l.internal.getFont(n),i=l.getStringUnitWidth(t,{font:r,fontSize:parseFloat(e),charSpace:0})*parseFloat(e);return{height:l.getStringUnitWidth("3",{font:r,fontSize:parseFloat(e),charSpace:0})*parseFloat(e)*1.5,width:i}},d={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null,isInitialized:!1},p=function(){for(var t in l.internal.acroformPlugin.acroFormDictionaryRoot.Fields){var e=l.internal.acroformPlugin.acroFormDictionaryRoot.Fields[t];e.hasAnnotation&&m.call(l,e);}},g=function(t){l.internal.acroformPlugin.printedOut&&(l.internal.acroformPlugin.printedOut=!1, l.internal.acroformPlugin.acroFormDictionaryRoot=null), l.internal.acroformPlugin.acroFormDictionaryRoot||x.call(l), l.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(t);},m=function(t){var e={type:"reference",object:t};l.annotationPlugin.annotations[l.internal.getPageInfo(t.page).pageNumber].push(e);},w=function(){void 0!==l.internal.acroformPlugin.acroFormDictionaryRoot?l.internal.write("/AcroForm "+l.internal.acroformPlugin.acroFormDictionaryRoot.objId+" 0 R"):console.log("Root missing...");},y=function(){l.internal.events.unsubscribe(l.internal.acroformPlugin.acroFormDictionaryRoot._eventID), delete l.internal.acroformPlugin.acroFormDictionaryRoot._eventID, l.internal.acroformPlugin.printedOut=!0;},v=function(t){var e=!t;t||(l.internal.newObjectDeferredBegin(l.internal.acroformPlugin.acroFormDictionaryRoot.objId), l.internal.out(l.internal.acroformPlugin.acroFormDictionaryRoot.getString()));t=t||l.internal.acroformPlugin.acroFormDictionaryRoot.Kids;for(var n in t){var r=t[n],i=r.Rect;r.Rect&&(r.Rect=u.call(this,r.Rect)), l.internal.newObjectDeferredBegin(r.objId);var o=r.objId+" 0 obj\n<<\n";if("object"===(void 0===r?"undefined":vt(r))&&"function"==typeof r.getContent&&(o+=r.getContent()), r.Rect=i, r.hasAppearanceStream&&!r.appearanceStreamContent){var a=f.call(this,r);o+="/AP << /N "+a+" >>\n", l.internal.acroformPlugin.xForms.push(a);}if(r.appearanceStreamContent){for(var s in o+="/AP << ", r.appearanceStreamContent){var h=r.appearanceStreamContent[s];if(o+="/"+s+" ", o+="<< ", 1<=Object.keys(h).length||Array.isArray(h))for(var n in h){var c;"function"==typeof(c=h[n])&&(c=c.call(this,r)), o+="/"+n+" "+c+" ", 0<=l.internal.acroformPlugin.xForms.indexOf(c)||l.internal.acroformPlugin.xForms.push(c);}
62else"function"==typeof(c=h)&&(c=c.call(this,r)), o+="/"+n+" "+c+" \n", 0<=l.internal.acroformPlugin.xForms.indexOf(c)||l.internal.acroformPlugin.xForms.push(c);o+=" >>\n";}o+=">>\n";}o+=">>\nendobj\n", l.internal.out(o);}e&&b.call(this,l.internal.acroformPlugin.xForms);},b=function(t){for(var e in t){var n=e,r=t[e];l.internal.newObjectDeferredBegin(r&&r.objId);var i="";"object"===(void 0===r?"undefined":vt(r))&&"function"==typeof r.getString&&(i=r.getString()), l.internal.out(i), delete t[n];}},x=function(){if(void 0!==this.internal&&(void 0===this.internal.acroformPlugin||!1===this.internal.acroformPlugin.isInitialized)){if(l=this, T.FieldNum=0, this.internal.acroformPlugin=JSON.parse(JSON.stringify(d)), this.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error("Exception while creating AcroformDictionary");e=l.internal.scaleFactor, a=l.internal.pageSize.getHeight(), l.internal.acroformPlugin.acroFormDictionaryRoot=new C, l.internal.acroformPlugin.acroFormDictionaryRoot._eventID=l.internal.events.subscribe("postPutResources",y), l.internal.events.subscribe("buildDocument",p), l.internal.events.subscribe("putCatalog",w), l.internal.events.subscribe("postPutPages",v), l.internal.acroformPlugin.isInitialized=!0;}},S=function(t){if(Array.isArray(t)){var e=" [";for(var n in t){e+=t[n].toString(), e+=n<t.length-1?" ":"";}return e+="]"}},k=function(t){return 0!==(t=t||"").indexOf("(")&&(t="("+t), ")"!=t.substring(t.length-1)&&(t+=")"), t},_=function(){var t;Object.defineProperty(this,"objId",{get:function(){return t||(t=l.internal.newObjectDeferred()), t||console.log("Couldn't create Object ID"), t},configurable:!1});};_.prototype.toString=function(){return this.objId+" 0 R"}, _.prototype.getString=function(){var t=this.objId+" 0 obj\n<<";return t+=this.getContent()+">>\n", this.stream&&(t+="stream\n", t+=this.stream, t+="\nendstream\n"), t+="endobj\n"}, _.prototype.getContent=function(){var t="";return t+=function(t){var e="",n=Object.keys(t).filter(function(t){return"content"!=t&&"appearanceStreamContent"!=t&&"_"!=t.substring(0,1)});for(var r in n){var i=n[r],o=t[i];o&&(Array.isArray(o)?e+="/"+i+" "+S(o)+"\n":e+=o instanceof _?"/"+i+" "+o.objId+" 0 R\n":"/"+i+" "+o+"\n");}return e}(this)};var I=function(){var e;_.call(this), this.Type="/XObject", this.Subtype="/Form", this.FormType=1, this.BBox, this.Matrix, this.Resources="2 0 R", this.PieceInfo, Object.defineProperty(this,"Length",{enumerable:!0,get:function(){return void 0!==e?e.length:0}}), Object.defineProperty(this,"stream",{enumerable:!1,set:function(t){e=t.trim();},get:function(){return e||null}});};r(I,_);var C=function(){_.call(this);var t=[];Object.defineProperty(this,"Kids",{enumerable:!1,configurable:!0,get:function(){return 0<t.length?t:void 0}}), Object.defineProperty(this,"Fields",{enumerable:!0,configurable:!0,get:function(){return t}}), this.DA;};r(C,_);var T=function t(){var e;_.call(this), Object.defineProperty(this,"Rect",{enumerable:!0,configurable:!1,get:function(){if(e)return e},set:function(t){e=t;}});var n,r,i,o,a="";Object.defineProperty(this,"FT",{enumerable:!0,set:function(t){a=t;},get:function(){return a}}), Object.defineProperty(this,"T",{enumerable:!0,configurable:!1,set:function(t){n=t;},get:function(){if(!n||n.length<1){if(this instanceof j)return;return"(FieldObject"+t.FieldNum+++")"}return"("==n.substring(0,1)&&n.substring(n.length-1)?n:"("+n+")"}}), Object.defineProperty(this,"DA",{enumerable:!0,get:function(){if(r)return"("+r+")"},set:function(t){r=t;}}), Object.defineProperty(this,"DV",{enumerable:!0,configurable:!0,get:function(){if(i)return i},set:function(t){i=t;}}), Object.defineProperty(this,"V",{enumerable:!0,configurable:!0,get:function(){if(o)return o},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,
62configurable:!0,writable:!0}), Object.defineProperty(this,"page",{enumerable:!1,configurable:!0,writable:!0});};r(T,_);var F=function(){T.call(this), this.FT="/Ch", this.Opt=[], this.V="()", this.TI=0;var e=!1;Object.defineProperty(this,"combo",{enumerable:!1,get:function(){return e},set:function(t){e=t;}}), 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},configurable:!1}), this.hasAppearanceStream=!0;};r(F,T);var P=function(){F.call(this), this.combo=!1;};r(P,F);var E=function(){P.call(this), this.combo=!0;};r(E,P);var q=function(){E.call(this), this.edit=!0;};r(q,E);var O=function(){T.call(this), this.FT="/Btn";};r(O,T);var B=function(){O.call(this);var e=!0;Object.defineProperty(this,"pushbutton",{enumerable:!1,get:function(){return e},set:function(t){e=t;}});};r(B,O);var R=function(){O.call(this);var e=!0;Object.defineProperty(this,"radio",{enumerable:!1,get:function(){return e},set:function(t){e=t;}});var n,t=[];Object.defineProperty(this,"Kids",{enumerable:!0,get:function(){if(0<t.length)return t}}), Object.defineProperty(this,"__Kids",{get:function(){return t}}), Object.defineProperty(this,"noToggleToOff",{enumerable:!1,get:function(){return n},set:function(t){n=t;}});};r(R,O);var j=function(t,e){T.call(this), this.Parent=t, this._AppearanceType=N.RadioButton.Circle, this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(e), this.F=i(this.F,3,1), this.MK=this._AppearanceType.createMK(), this.AS="/Off", this._Name=e;};r(j,T), R.prototype.setAppearance=function(t){if("createAppearanceStream"in t&&"createMK"in t)for(var e in this.__Kids){var n=this.__Kids[e];n.appearanceStreamContent=t.createAppearanceStream(n._Name), n.MK=t.createMK();}else console.log("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");}, R.prototype.createOption=function(t){this.__Kids.length;var e=new j(this,t);return this.__Kids.push(e), n.addField(e), e};var D=function(){O.call(this), this.appearanceStreamContent=N.CheckBox.createAppearanceStream(), this.MK=N.CheckBox.createMK(), this.AS="/On", this.V="/On";};r(D,O);var M=function(){var e,n;T.call(this), this.DA=N.createDefaultAppearanceStream(), this.F=4, Object.defineProperty(this,"V",{get:function(){return e?k(e):e},enumerable:!0,set:function(t){e=t;}}), Object.defineProperty(this,"DV",{get:function(){return n?k(n):n},enumerable:!0,set:function(t){n=t;}});var r=!1;Object.defineProperty(this,"multiline",{enumerable:!1,get:function(){return r},set:function(t){r=t;}});var i=!1;Object.defineProperty(this,"fileSelect",{enumerable:!1,get:function(){return i},set:function(t){i=t;}});var o=!1;Object.defineProperty(this,"doNotSpellCheck",{enumerable:!1,get:function(){return o},set:function(t){o=t;}});var a=!1;Object.defineProperty(this,"doNotScroll",{enumerable:!1,get:function(){return a}
62,set:function(t){a=t;}});var s=!1;Object.defineProperty(this,"MaxLen",{enumerable:!0,get:function(){return s},set:function(t){s=t;}}), Object.defineProperty(this,"hasAppearanceStream",{enumerable:!1,get:function(){return this.V||this.DV}});};r(M,T);var U=function(){M.call(this);var e=!0;Object.defineProperty(this,"password",{enumerable:!1,get:function(){return e},set:function(t){e=t;}});};r(U,M);var N={CheckBox:{createAppearanceStream:function(){return{N:{On:N.CheckBox.YesNormal},D:{On:N.CheckBox.YesPushDown,Off:N.CheckBox.OffPushDown}}},createMK:function(){return"<< /CA (3)>>"},YesPushDown:function(t){var e=h(t),n=[],r=l.internal.getFont("zapfdingbats","normal").id;t.Q=1;var i=c(t,"3","ZapfDingbats",50);return n.push("0.749023 g"), n.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), n.push("f"), n.push("BMC"), n.push("q"), n.push("0 0 1 rg"), n.push("/"+r+" "+i.fontSize.toFixed(2)+" Tf 0 g"), n.push("BT"), n.push(i.text), n.push("ET"), n.push("Q"), n.push("EMC"), e.stream=n.join("\n"), e},YesNormal:function(t){var e=h(t),n=l.internal.getFont("zapfdingbats","normal").id,r=[];t.Q=1;var i=N.internal.getHeight(t),o=N.internal.getWidth(t),a=c(t,"3","ZapfDingbats",.9*i);return r.push("1 g"), r.push("0 0 "+o.toFixed(2)+" "+i.toFixed(2)+" re"), r.push("f"), r.push("q"), r.push("0 0 1 rg"), r.push("0 0 "+(o-1).toFixed(2)+" "+(i-1).toFixed(2)+" re"), r.push("W"), r.push("n"), r.push("0 g"), r.push("BT"), r.push("/"+n+" "+a.fontSize.toFixed(2)+" Tf 0 g"), r.push(a.text), r.push("ET"), r.push("Q"), e.stream=r.join("\n"), e},OffPushDown:function(t){var e=h(t),n=[];return n.push("0.749023 g"), n.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), n.push("f"), e.stream=n.join("\n"), e}},RadioButton:{Circle:{createAppearanceStream:function(t){var e={D:{Off:N.RadioButton.Circle.OffPushDown},N:{}};return e.N[t]=N.RadioButton.Circle.YesNormal, e.D[t]=N.RadioButton.Circle.YesPushDown, e},createMK:function(){return"<< /CA (l)>>"},YesNormal:function(t){var e=h(t),n=[],r=N.internal.getWidth(t)<=N.internal.getHeight(t)?N.internal.getWidth(t)/4:N.internal.getHeight(t)/4;r*=.9;var i=N.internal.Bezier_C;return n.push("q"), n.push("1 0 0 1 "+N.internal.getWidth(t)/2+" "+N.internal.getHeight(t)/2+" cm"), n.push(r+" 0 m"), n.push(r+" "+r*i+" "+r*i+" "+r+" 0 "+r+" c"), n.push("-"+r*i+" "+r+" -"+r+" "+r*i+" -"+r+" 0 c"), n.push("-"+r+" -"+r*i+" -"+r*i+" -"+r+" 0 -"+r+" c"), n.push(r*i+" -"+r+" "+r+" -"+r*i+" "+r+" 0 c"), n.push("f"), n.push("Q"), e.stream=n.join("\n"), e},YesPushDown:function(t){var e=h(t),n=[],r=N.internal.getWidth(t)<=N.internal.getHeight(t)?N.internal.getWidth(t)/4:N.internal.getHeight(t)/4,i=2*(r*=.9),o=i*N.internal.Bezier_C,a=r*N.internal.Bezier_C;return n.push("0.749023 g"), n.push("q"), n.push("1 0 0 1 "+(N.internal.getWidth(t)/2).toFixed(2)+" "+(N.internal.getHeight(t)/2).toFixed(2)+" cm"), n.push(i+" 0 m"), n.push(i+" "+o+" "+o+" "+i+" 0 "+i+" c"), n.push("-"+o+" "+i+" -"+i+" "+o+" -"+i+" 0 c"), n.push("-"+i+" -"+o+" -"+o+" -"+i+" 0 -"+i+" c"), n.push(o+" -"+i+" "+i+" -"+o+" "+i+" 0 c"), n.push("f"), n.push("Q"), n.push("0 g"), n.push("q"), n.push("1 0 0 1 "+(N.internal.getWidth(t)/2).toFixed(2)+" "+(N.internal.getHeight(t)/2).toFixed(2)+" cm"), n.push(r+" 0 m"), n.push(r+" "+a+" "+a+" "+r+" 0 "+r+" c"), n.push("-"+a+" "+r+" -"+r+" "+a+" -"+r+" 0 c"), n.push("-"+r+" -"+a+" -"+a+" -"+r+" 0 -"+r+" c"), n.push(a+" -"+r+" "+r+" -"+a+" "+r+" 0 c"), n.push("f"), n.push("Q"), e.stream=n.join("\n"), e},OffPushDown:function(t){var e=h(t),n=[],r=N.internal.getWidth(t)<=N.internal.getHeight(t)?N.internal.getWidth(t)/4:N.internal.getHeight(t)/4,i=2*(r*=.9),o=i*N.internal.Bezier_C;return n.push("0.749023 g"), n.push("q"), n.push("1 0 0 1 "+(N.internal.getWidth(t)/2).toFixed(2)+" "+(N.internal.getHeight(t)/2).toFixed(2)+" cm"), n.push(i+" 0 m"), n.push(i+" "+o+" "+o+" "+i+" 0 "+i+" c"), n.push("-"+o+" "+i+" -"+i+" "+o+" -"+i+" 0 c"), n.push("-"+i+" -"+o+" -"+o+" -"+i+" 0 -"+i+" c"), n.push(o+" -"+i+" "+i+" -"+o+" "+i+" 0 c"), n.push("f"), n.push("Q"), e.stream=n.join("\n"), e}},Cross:{createAppearanceStream:function(t){var e={D:{Off:N.RadioButton.Cross.OffPushDown},N:{}}
62;return e.N[t]=N.RadioButton.Cross.YesNormal, e.D[t]=N.RadioButton.Cross.YesPushDown, e},createMK:function(){return"<< /CA (8)>>"},YesNormal:function(t){var e=h(t),n=[],r=N.internal.calculateCross(t);return n.push("q"), n.push("1 1 "+(N.internal.getWidth(t)-2).toFixed(2)+" "+(N.internal.getHeight(t)-2).toFixed(2)+" re"), n.push("W"), n.push("n"), n.push(r.x1.x.toFixed(2)+" "+r.x1.y.toFixed(2)+" m"), n.push(r.x2.x.toFixed(2)+" "+r.x2.y.toFixed(2)+" l"), n.push(r.x4.x.toFixed(2)+" "+r.x4.y.toFixed(2)+" m"), n.push(r.x3.x.toFixed(2)+" "+r.x3.y.toFixed(2)+" l"), n.push("s"), n.push("Q"), e.stream=n.join("\n"), e},YesPushDown:function(t){var e=h(t),n=N.internal.calculateCross(t),r=[];return r.push("0.749023 g"), r.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), r.push("f"), r.push("q"), r.push("1 1 "+(N.internal.getWidth(t)-2).toFixed(2)+" "+(N.internal.getHeight(t)-2).toFixed(2)+" re"), r.push("W"), r.push("n"), r.push(n.x1.x.toFixed(2)+" "+n.x1.y.toFixed(2)+" m"), r.push(n.x2.x.toFixed(2)+" "+n.x2.y.toFixed(2)+" l"), r.push(n.x4.x.toFixed(2)+" "+n.x4.y.toFixed(2)+" m"), r.push(n.x3.x.toFixed(2)+" "+n.x3.y.toFixed(2)+" l"), r.push("s"), r.push("Q"), e.stream=r.join("\n"), e},OffPushDown:function(t){var e=h(t),n=[];return n.push("0.749023 g"), n.push("0 0 "+N.internal.getWidth(t).toFixed(2)+" "+N.internal.getHeight(t).toFixed(2)+" re"), n.push("f"), e.stream=n.join("\n"), e}}},createDefaultAppearanceStream:function(t){return"/F1 0 Tf 0 g"}};N.internal={Bezier_C:.551915024494,calculateCross:function(t){var e,n,r=N.internal.getWidth(t),i=N.internal.getHeight(t),o=(n=i)<(e=r)?n:e;return{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}}}}, N.internal.getWidth=function(t){var e=0;return"object"===(void 0===t?"undefined":vt(t))&&(e=s(t.Rect[2])), e}, N.internal.getHeight=function(t){var e=0;return"object"===(void 0===t?"undefined":vt(t))&&(e=s(t.Rect[3])), e}, n.addField=function(t){return x.call(this), t instanceof M?this.addTextField.call(this,t):t instanceof F?this.addChoiceField.call(this,t):t instanceof O?this.addButton.call(this,t):t instanceof j?g.call(this,t):t&&g.call(this,t), t.page=l.internal.getCurrentPageInfo().pageNumber, this}, n.addButton=function(t){x.call(this);var e=t||new T;e.FT="/Btn", e.Ff=o(e.Ff,t,l.internal.getPDFVersion()), g.call(this,e);}, n.addTextField=function(t){x.call(this);var e=t||new T;e.FT="/Tx", e.Ff=o(e.Ff,t,l.internal.getPDFVersion()), g.call(this,e);}, n.addChoiceField=function(t){x.call(this);var e=t||new T;e.FT="/Ch", e.Ff=o(e.Ff,t,l.internal.getPDFVersion()), g.call(this,e);}, "object"==(void 0===t?"undefined":vt(t))&&(t.ChoiceField=F, t.ListBox=P, t.ComboBox=E, t.EditBox=q, t.Button=O, t.PushButton=B, t.RadioButton=R, t.CheckBox=D, t.TextField=M, t.PasswordField=U, t.AcroForm={Appearance:N}), n.AcroFormChoiceField=F, n.AcroFormListBox=P, n.AcroFormComboBox=E, n.AcroFormEditBox=q, n.AcroFormButton=O, n.AcroFormPushButton=B, n.AcroFormRadioButton=R, n.AcroFormCheckBox=D, n.AcroFormTextField=M, n.AcroFormPasswordField=U, n.AcroForm={ChoiceField:F,ListBox:P,ComboBox:E,EditBox:q,Button:O,PushButton:B,RadioButton:R,CheckBox:D,TextField:M,PasswordField:U};}($.API,"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal), $.API.addHTML=function(t,p,g,s,m){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 p&&(s=p, m=g), "function"==typeof s&&(m=s, s=null), "function"!=typeof m&&(m=function(){});var e=this.internal,w=e.scaleFactor,y=e.pageSize.getWidth(),v=e.pageSize.getHeight();if((s=s||{}).onrendered=function(h){p=parseInt(p)||0, g=parseInt(g)||0;var t=s.dim||{},c=Object.assign({top:0,right:0,bottom:0,left:0,useFor:"content"},s.margin),e=t.h||Math.min(v,h.height/w),l=t.w||Math.min(y,h.width/w)-p,u=s.format||"JPEG",f=s.imageCompression||"SLOW";if(h.height>v-c.top-c.bottom&&s.pagesplit){var d=function(t,e,n,r,i){var o=document.createElement("canvas");o.height=i, o.width=r;var a=o.getContext("2d");return a.mozImageSmoothingEnabled=!1, a.webkitImageSmoothingEnabled=!1, a.msImageSmoothingEnabled=!1, a.imageSmoothingEnabled=!1, a.fillStyle=s.backgroundColor||"#ffffff", a.fillRect(0,0,r,i), a.drawImage(t,e,n,r,i,0,0,r,i), o},n=function(){for(var t,e,n=0,r=0,i={},o=!1;;){var a;
62if(r=0, i.top=0!==n?c.top:g, i.left=0!==n?c.left:p, o=(y-c.left-c.right)*w<h.width, "content"===c.useFor?0===n?(t=Math.min((y-c.left)*w,h.width), e=Math.min((v-c.top)*w,h.height-n)):(t=Math.min(y*w,h.width), e=Math.min(v*w,h.height-n), i.top=0):(t=Math.min((y-c.left-c.right)*w,h.width), e=Math.min((v-c.bottom-c.top)*w,h.height-n)), o)for(;;){"content"===c.useFor&&(0===r?t=Math.min((y-c.left)*w,h.width):(t=Math.min(y*w,h.width-r), i.left=0));var s=[a=d(h,r,n,t,e),i.left,i.top,a.width/w,a.height/w,u,null,f];if(this.addImage.apply(this,s), (r+=t)>=h.width)break;this.addPage();}else s=[a=d(h,0,n,t,e),i.left,i.top,a.width/w,a.height/w,u,null,f], this.addImage.apply(this,s);if((n+=e)>=h.height)break;this.addPage();}m(l,n,null,s);}.bind(this);if("CANVAS"===h.nodeName){var r=new Image;r.onload=n, r.src=h.toDataURL("image/png"), h=r;}else n();}else{var i=Math.random().toString(35),o=[h,p,g,l,e,u,i,f];this.addImage.apply(this,o), m(l,e,i,o);}}.bind(this), "undefined"!=typeof html2canvas&&!s.rstz)return html2canvas(t,s);if("undefined"!=typeof rasterizeHTML){var n="drawDocument";return"string"==typeof t&&(n=/^http/.test(t)?"drawURL":"drawHTML"), s.width=s.width||y*w, rasterizeHTML[n](t,void 0,s).then(function(t){s.onrendered(t.image);},function(t){m(null,t);})}return null}, function(b){var x="addImage_",h={PNG:[[137,80,78,71]],TIFF:[[77,77,0,42],[73,73,42,0]],JPEG:[[255,216,255,224,void 0,void 0,74,70,73,70,0],[255,216,255,225,void 0,void 0,69,120,105,102,0,0]],JPEG2000:[[0,0,0,12,106,80,32,32]],GIF87a:[[71,73,70,56,55,97]],GIF89a:[[71,73,70,56,57,97]],BMP:[[66,77],[66,65],[67,73],[67,80],[73,67],[80,84]]};b.getImageFileTypeByImageData=function(t,e){var n,r;e=e||"UNKNOWN";var i,o,a,s="UNKNOWN";for(a in h)for(i=h[a], n=0;n<i.length;n+=1){for(o=!0, r=0;r<i[n].length;r+=1)if(void 0!==i[n][r]&&i[n][r]!==t.charCodeAt(r)){o=!1;break}if(!0===o){s=a;break}}return"UNKOWN"===s&&"UNKNOWN"!==e&&(console.warn('FileType of Image not recognized. Processing image as "'+e+'".'), s=e), s};var n=function t(e){var n=this.internal.newObject(),r=this.internal.write,i=this.internal.putStream;if(e.n=n, r("<</Type /XObject"), r("/Subtype /Image"), r("/Width "+e.w), r("/Height "+e.h), e.cs===this.color_spaces.INDEXED?r("/ColorSpace [/Indexed /DeviceRGB "+(e.pal.length/3-1)+" "+("smask"in e?n+2:n+1)+" 0 R]"):(r("/ColorSpace /"+e.cs), e.cs===this.color_spaces.DEVICE_CMYK&&r("/Decode [1 0 1 0 1 0 1 0]")), r("/BitsPerComponent "+e.bpc), "f"in e&&r("/Filter /"+e.f), "dp"in e&&r("/DecodeParms <<"+e.dp+">>"), "trns"in e&&e.trns.constructor==Array){for(var o="",a=0,s=e.trns.length;a<s;a++)o+=e.trns[a]+" "+e.trns[a]+" ";r("/Mask ["+o+"]");}if("smask"in e&&r("/SMask "+(n+1)+" 0 R"), r("/Length "+e.data.length+">>"), i(e.data), r("endobj"), "smask"in e){var h="/Predictor "+e.p+" /Colors 1 /BitsPerComponent "+e.bpc+" /Columns "+e.w,c={w:e.w,h:e.h,cs:"DeviceGray",bpc:e.bpc,dp:h,data:e.smask};"f"in e&&(c.f=e.f), t.call(this,c);}e.cs===this.color_spaces.INDEXED&&(this.internal.newObject(), r("<< /Length "+e.pal.length+">>"), i(this.arrayBufferToBinaryString(new Uint8Array(e.pal))), r("endobj"));},S=function(){var t=this.internal.collections[x+"images"];for(var e in t)n.call(this,t[e]);},k=function(){var t,e=this.internal.collections[x+"images"],n=this.internal.write;for(var r in e)n("/I"+(t=e[r]).i,t.n,"0","R");},_=function(t){return"function"==typeof b["process"+t.toUpperCase()]},A=function(t){return"object"===(void 0===t?"undefined":vt(t))&&1===t.nodeType},I=function(t,e){if("IMG"===t.nodeName&&t.hasAttribute("src")){var n=""+t.getAttribute("src");if(0===n.indexOf("data:image/"))return n;!e&&/\.png(?:[?#].*)?$/i.test(n)&&(e="png");}if("CANVAS"===t.nodeName)var r=t;else{(r=document.createElement("canvas")).width=t.clientWidth||t.width, r.height=t.clientHeight||t.height;var i=r.getContext("2d");if(!i)throw"addImage requires canvas to be supported by browser.";i.drawImage(t,0,0,r.width,r.height);}return r.toDataURL("png"==(""+e).toLowerCase()?"image/png":"image/jpeg")},C=function(t,e){var n;if(e)for(var r in e)if(t===e[r].alias){n=e[r];break}return n};b.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",SEPARATION:"Separation",DEVICE_N:"DeviceN"}, b.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"}, b.image_compression={NONE:"NONE",FAST:"FAST",MEDIUM:"MEDIUM",SLOW:"SLOW"}, b.sHashCode=function(t){return t=t||"", Array.prototype.reduce&&t.split("").reduce(function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t},0)}, b.isString=function(t){return"string"==typeof t}
62, b.validateStringAsBase64=function(t){var e=!0;return(t=t||"").length%4!=0&&(e=!1), !1===/[A-Za-z0-9\/]+/.test(t.substr(0,t.length-2))&&(e=!1), !1===/[A-Za-z0-9\/][A-Za-z0-9+\/]|[A-Za-z0-9+\/]=|==/.test(t.substr(-2))&&(e=!1), e}, b.extractInfoFromBase64DataURI=function(t){return/^data:([\w]+?\/([\w]+?));base64,(.+)$/g.exec(t)}, b.supportsArrayBuffer=function(){return"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array}, b.isArrayBuffer=function(t){return!!this.supportsArrayBuffer()&&t instanceof ArrayBuffer}, b.isArrayBufferView=function(t){return!!this.supportsArrayBuffer()&&("undefined"!=typeof Uint32Array&&(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))}, b.binaryStringToUint8Array=function(t){for(var e=t.length,n=new Uint8Array(e),r=0;r<e;r++)n[r]=t.charCodeAt(r);return n}, b.arrayBufferToBinaryString=function(t){if("function"==typeof atob)return atob(this.arrayBufferToBase64(t));if("function"==typeof TextDecoder){var e=new TextDecoder("ascii");if("ascii"===e.encoding)return e.decode(t)}for(var n=this.isArrayBuffer(t)?t:new Uint8Array(t),r=20480,i="",o=Math.ceil(n.byteLength/r),a=0;a<o;a++)i+=String.fromCharCode.apply(null,n.slice(a*r,a*r+r));return i}, b.arrayBufferToBase64=function(t){for(var e,n="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(t),o=i.byteLength,a=o%3,s=o-a,h=0;h<s;h+=3)n+=r[(16515072&(e=i[h]<<16|i[h+1]<<8|i[h+2]))>>18]+r[(258048&e)>>12]+r[(4032&e)>>6]+r[63&e];return 1==a?n+=r[(252&(e=i[s]))>>2]+r[(3&e)<<4]+"==":2==a&&(n+=r[(64512&(e=i[s]<<8|i[s+1]))>>10]+r[(1008&e)>>4]+r[(15&e)<<2]+"="), n}, b.createImageInfo=function(t,e,n,r,i,o,a,s,h,c,l,u,f){var d={alias:s,w:e,h:n,cs:r,bpc:i,i:a,data:t};return o&&(d.f=o), h&&(d.dp=h), c&&(d.trns=c), l&&(d.pal=l), u&&(d.smask=u), f&&(d.p=f), d}, b.addImage=function(t,e,n,r,i,o,a,s,h){var c="";if("string"!=typeof e){var l=o;o=i, i=r, r=n, n=e, e=l;}if("object"===(void 0===t?"undefined":vt(t))&&!A(t)&&"imageData"in t){var u=t;t=u.imageData, e=u.format||e, n=u.x||n||0, r=u.y||r||0, i=u.w||i, o=u.h||o, a=u.alias||a, s=u.compression||s, h=u.rotation||u.angle||h;}if(isNaN(n)||isNaN(r))throw console.error("jsPDF.addImage: Invalid coordinates",arguments), new Error("Invalid coordinates passed to jsPDF.addImage");var f,d,p,g,m,w,y,v=function(){var t=this.internal.collections[x+"images"];return t||(this.internal.collections[x+"images"]=t={}, this.internal.events.subscribe("putResources",S), this.internal.events.subscribe("putXobjectDict",k)), t}.call(this);if(!(f=C(t,v))&&(A(t)&&(t=I(t,e)), (null==(y=a)||0===y.length)&&(a="string"==typeof(w=t)&&b.sHashCode(w)), !(f=C(a,v)))){if(this.isString(t)&&(""!==(c=this.convertStringToImageData(t))?t=c:void 0!==(c=this.loadImageFile(t))&&(t=c)), e=this.getImageFileTypeByImageData(t,e), !_(e))throw new Error("addImage does not support files of type '"+e+"', please ensure that a plugin for '"+e+"' support is added.");if(this.supportsArrayBuffer()&&(t instanceof Uint8Array||(d=t, t=this.binaryStringToUint8Array(t))), !(f=this["process"+e.toUpperCase()](t,(m=0, (g=v)&&(m=Object.keys?Object.keys(g).length:function(t){var e=0;for(var n in t)t.hasOwnProperty(n)&&e++;return e}(g)), m),a,((p=s)&&"string"==typeof p&&(p=p.toUpperCase()), p in b.image_compression?p:b.image_compression.NONE),d)))throw new Error("An unkwown error occurred whilst processing the image")}return function(t,e,n,r,i,o,a,s){var h=function(t,e,n){return t||e||(e=t=-96), t<0&&(t=-1*n.w*72/t/this.internal.scaleFactor), e<0&&(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]}.call(this,n,r,i),c=this.internal.getCoordinateString,l=this.internal.getVerticalCoordinateString;if(n=h[0], r=h[1], a[o]=i, s){s*=Math.PI/180;var u=Math.cos(s),f=Math.sin(s),d=function(t){return t.toFixed(4)},p=[d(u),d(f),d(-1*f),d(u),0,0,"cm"];}this.internal.write("q"), s?(this.internal.write([1,"0","0",1,c(t),l(e+r),"cm"].join(" ")), this.internal.write(p.join(" ")), this.internal.write([c(n),"0","0",c(r),"0","0","cm"].join(" "))):this.internal.write([c(n),"0","0",c(r),c(t),l(e+r),"cm"].join(" ")), this.internal.write("/I"+i.i+" Do"), this.internal.write("Q");}.call(this,n,r,i,o,f,f.i,v,h), this}, b.convertStringToImageData=function(t){var e,n="";this.isString(t)&&(null!==(e=this.extractInfoFromBase64DataURI(t))?b.validateStringAs
62Base64(e[3])&&(n=atob(e[3])):b.validateStringAsBase64(t)&&(n=atob(t)));return n};var c=function(t,e){return t.subarray(e,e+5)};b.processJPEG=function(t,e,n,r,i,o){var a,s=this.decode.DCT_DECODE;if(!this.isString(t)&&!this.isArrayBuffer(t)&&!this.isArrayBufferView(t))return null;if(this.isString(t)&&(a=function(t){var e;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 n=256*t.charCodeAt(4)+t.charCodeAt(5),r=4,i=t.length;r<i;){if(r+=n, 255!==t.charCodeAt(r))throw new Error("getJpegSize could not find the size of the image");if(192===t.charCodeAt(r+1)||193===t.charCodeAt(r+1)||194===t.charCodeAt(r+1)||195===t.charCodeAt(r+1)||196===t.charCodeAt(r+1)||197===t.charCodeAt(r+1)||198===t.charCodeAt(r+1)||199===t.charCodeAt(r+1))return e=256*t.charCodeAt(r+5)+t.charCodeAt(r+6), [256*t.charCodeAt(r+7)+t.charCodeAt(r+8),e,t.charCodeAt(r+9)];r+=2, n=256*t.charCodeAt(r)+t.charCodeAt(r+1);}}(t)), this.isArrayBuffer(t)&&(t=new Uint8Array(t)), this.isArrayBufferView(t)&&(a=function(t){if(65496!=(t[0]<<8|t[1]))throw new Error("Supplied data is not a JPEG");for(var e,n=t.length,r=(t[4]<<8)+t[5],i=4;i<n;){if(r=((e=c(t,i+=r))[2]<<8)+e[3], (192===e[1]||194===e[1])&&255===e[0]&&7<r)return{width:((e=c(t,i+5))[2]<<8)+e[3],height:(e[0]<<8)+e[1],numcomponents:e[4]};i+=2;}throw new Error("getJpegSizeFromBytes could not find the size of the image")}(t), t=i||this.arrayBufferToBinaryString(t)), void 0===o)switch(a.numcomponents){case 1:o=this.color_spaces.DEVICE_GRAY;break;case 4:o=this.color_spaces.DEVICE_CMYK;break;default:case 3:o=this.color_spaces.DEVICE_RGB;}return this.createImageInfo(t,a.width,a.height,o,8,s,e,n)}, b.processJPG=function(){return this.processJPEG.apply(this,arguments)}, b.loadImageFile=function(t,e,n){e=e||!0, n=n||function(){};Object.prototype.toString.call("undefined"!=typeof process?process:0);if(void 0!==("undefined"==typeof window?"undefined":vt(window))&&"object"===("undefined"==typeof location?"undefined":vt(location))&&"http"===location.protocol.substr(0,4))return function(t,e,n){var r=new XMLHttpRequest,i=[],o=0,a=function(t){var e=t.length,n=String.fromCharCode;for(o=0;o<e;o+=1)i.push(n(255&t.charCodeAt(o)));return i.join("")};if(r.open("GET",t,!e), r.overrideMimeType("text/plain; charset=x-user-defined"), !1===e&&(r.onload=function(){return a(this.responseText)}), r.send(null), 200===r.status)return e?a(r.responseText):void 0;console.warn('Unable to load file "'+t+'"');}(t,e)}, b.getImageProperties=function(t){var e,n,r="";if(A(t)&&(t=I(t)), this.isString(t)&&(""!==(r=this.convertStringToImageData(t))?t=r:void 0!==(r=this.loadImageFile(t))&&(t=r)), n=this.getImageFileTypeByImageData(t), !_(n))throw new Error("addImage does not support files of type '"+n+"', please ensure that a plugin for '"+n+"' support is added.");if(this.supportsArrayBuffer()&&(t instanceof Uint8Array||(t=this.binaryStringToUint8Array(t))), !(e=this["process"+n.toUpperCase()](t)))throw new Error("An unkwown error occurred whilst processing the image");return{fileType:n,width:e.w,height:e.h,colorSpace:e.cs,compressionMode:e.f,bitsPerComponent:e.bpc}};}($.API), t=$.API, y={annotations:[],f2:function(t){return t.toFixed(2)},notEmpty:function(t){if(void 0!==t&&""!=t)return!0}}, $.API.annotationPlugin=y, $.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],n=!1,r=0;r<e.length&&!n;r++)switch((h=e[r]).type){case"link":if(y.notEmpty(h.options.url)||y.notEmpty(h.options.pageNumber)){n=!0;break}case"reference":case"text":case"freetext":n=!0;}if(0!=n){this.internal.write("/Annots [");var i=this.annotationPlugin.f2,o=this.internal.scaleFactor,a=this.internal.pageSize.getHeight(),s=this.internal.getPageInfo(t.pageNumber);for(r=0;r<e.length;r++){var h;
62switch((h=e[r]).type){case"reference":this.internal.write(" "+h.object.objId+" 0 R ");break;case"text":var c=this.internal.newAdditionalObject(),l=this.internal.newAdditionalObject(),u=h.title||"Note";m="<</Type /Annot /Subtype /Text "+(d="/Rect ["+i(h.bounds.x*o)+" "+i(a-(h.bounds.y+h.bounds.h)*o)+" "+i((h.bounds.x+h.bounds.w)*o)+" "+i((a-h.bounds.y)*o)+"] ")+"/Contents ("+h.contents+")", m+=" /Popup "+l.objId+" 0 R", m+=" /P "+s.objId+" 0 R", m+=" /T ("+u+") >>", c.content=m;var f=c.objId+" 0 R";m="<</Type /Annot /Subtype /Popup "+(d="/Rect ["+i((h.bounds.x+30)*o)+" "+i(a-(h.bounds.y+h.bounds.h)*o)+" "+i((h.bounds.x+h.bounds.w+30)*o)+" "+i((a-h.bounds.y)*o)+"] ")+" /Parent "+f, h.open&&(m+=" /Open true"), m+=" >>", l.content=m, this.internal.write(c.objId,"0 R",l.objId,"0 R");break;case"freetext":var d="/Rect ["+i(h.bounds.x*o)+" "+i((a-h.bounds.y)*o)+" "+i(h.bounds.x+h.bounds.w*o)+" "+i(a-(h.bounds.y+h.bounds.h)*o)+"] ",p=h.color||"#000000";m="<</Type /Annot /Subtype /FreeText "+d+"/Contents ("+h.contents+")", m+=" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#"+p+")", m+=" /Border [0 0 0]", m+=" >>", this.internal.write(m);break;case"link":if(h.options.name){var g=this.annotations._nameMap[h.options.name];h.options.pageNumber=g.page, h.options.top=g.y;}else h.options.top||(h.options.top=0);d="/Rect ["+i(h.x*o)+" "+i((a-h.y)*o)+" "+i((h.x+h.w)*o)+" "+i((a-(h.y+h.h))*o)+"] ";var m="";if(h.options.url)m="<</Type /Annot /Subtype /Link "+d+"/Border [0 0 0] /A <</S /URI /URI ("+h.options.url+") >>";else if(h.options.pageNumber)switch(m="<</Type /Annot /Subtype /Link "+d+"/Border [0 0 0] /Dest ["+(t=this.internal.getPageInfo(h.options.pageNumber)).objId+" 0 R", h.options.magFactor=h.options.magFactor||"XYZ", h.options.magFactor){case"Fit":m+=" /Fit]";break;case"FitH":m+=" /FitH "+h.options.top+"]";break;case"FitV":h.options.left=h.options.left||0, m+=" /FitV "+h.options.left+"]";break;case"XYZ":default:var w=i((a-h.options.top)*o);h.options.left=h.options.left||0, void 0===h.options.zoom&&(h.options.zoom=0), m+=" /XYZ "+h.options.left+" "+w+" "+h.options.zoom+"]";}""!=m&&(m+=" >>", this.internal.write(m));}}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.textWithLink=function(t,e,n,r){var i=this.getTextWidth(t),o=this.internal.getLineHeight()/this.internal.scaleFactor;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();return this.getStringUnitWidth(t)*e/this.internal.scaleFactor}, t.getLineHeight=function(){return this.internal.getLineHeight()}, function(t){var a=Object.keys({ar:"Arabic (Standard)","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (U.A.E.)","ar-YE":"Arabic (Yemen)",fa:"Persian","fa-IR":"Persian/Iran",ur:"Urdu"}),u={1569:[65152],1570:[65153,65154,65153,65154],1571:[65155,65156,65155,65156],1572:[65157,65158],1573:[65159,65160,65159,65160],1574:[65161,65162,65163,65164],1575:[65165,65166,65165,65166],1576:[65167,65168,65169,65170],1577:[65171,65172],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194,65193],1584:[65195,65196,65195],1585:[65197,65198,65197],1586:[65199,65200,65199],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262,65261],1609:[65263,65264,64488,64489],1610:[65265,652
6266,65267,65268],1649:[64336,64337],1655:[64477],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393],1676:[64388,64389],1677:[64386,64387],1678:[64390,64391],1681:[64396,64397],1688:[64394,64395,64394],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421],1729:[64422,64423,64424,64425],1733:[64480,64481],1734:[64473,64474],1735:[64471,64472],1736:[64475,64476],1737:[64482,64483],1739:[64478,64479],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431],1747:[64432,64433]},f={1570:[65269,65270,65269,65270],1571:[65271,65272,65271,65272],1573:[65273,65274,65273,65274],1575:[65275,65276,65275,65276]},d={1570:[65153,65154,65153,65154],1571:[65155,65156,65155,65156],1573:[65159,65160,65159,65160],1575:[65165,65166,65165,65166]},p={1612:64606,1613:64607,1614:64608,1615:64609,1616:64610},e=[1570,1571,1573,1575],n=[1569,1570,1571,1572,1573,1575,1577,1583,1584,1585,1586,1608,1688],o=0,s=1,h=2,c=3;function g(t){return void 0!==t&&void 0!==u[t.charCodeAt(0)]}function l(t){return void 0!==t&&0<=n.indexOf(t.charCodeAt(0))}function m(t){return void 0!==t&&0<=e.indexOf(t.charCodeAt(0))}function w(t){return g(t)&&2<=u[t.charCodeAt(0)].length}function y(t,e,n,r){return g(t)?(r=r||{}, u=Object.assign(u,r), !w(t)||!g(e)&&!g(n)||!g(n)&&l(e)||l(t)&&!g(e)||l(t)&&m(e)||l(t)&&l(e)?(u=Object.assign(u,d), o):g(i=t)&&4==u[i.charCodeAt(0)].length&&g(e)&&!l(e)&&g(n)&&w(n)?(u=Object.assign(u,d), c):l(t)||!g(n)?(u=Object.assign(u,d), s):(u=Object.assign(u,d), h)):-1;var i;}var v=t.processArabic=function(t,e){t=t||"", e=e||!1;var n,r,i,o="",a=0,s=0,h="",c="",l="";for(a=0;a<t.length;a+=1)h=t[a], c=t[a-1], l=t[a+1], g(h)?void 0!==c&&1604===c.charCodeAt(0)&&m(h)?(s=y(h,t[a-2],t[a+1],f), n=String.fromCharCode(f[h.charCodeAt(0)][s]), o=o.substr(0,o.length-1)+n):void 0!==c&&1617===c.charCodeAt(0)&&(void 0!==(r=h)&&void 0!==p[r.charCodeAt(0)])?(s=y(h,t[a-2],t[a+1],d), n=String.fromCharCode(p[h.charCodeAt(0)][s]), o=o.substr(0,o.length-1)+n):(s=y(h,c,l,d), o+=String.fromCharCode(u[h.charCodeAt(0)][s])):o+=e?{"(":")",")":"("}[i=h]||i:h;return e?o.split("").reverse().join(""):o};t.events.push(["preProcessText",function(t){var e=t.text,n=(t.x, t.y, t.options||{}),r=(t.mutex, n.lang),i=[];if(0<=a.indexOf(r)){if("[object Array]"===Object.prototype.toString.call(e)){var o=0;for(i=[], o=0;o<e.length;o+=1)"[object Array]"===Object.prototype.toString.call(e[o])?i.push([v(e[o][0],!0),e[o][1],e[o][2]]):i.push([v(e[o],!0)]);t.text=i;}else t.text=v(e,!0);void 0===n.charSpace&&(t.options.charSpace=0), !0===n.R2L&&(t.options.R2L=!1);}}]);}($.API), $.API.autoPrint=function(t){var e;switch((t=t||{}).variant=t.variant||"non-conform", t.variant){case"javascript":this.addJS("print({});");break;case"non-conform":default:this.internal.events.subscribe("postPutResources",function(){e=this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /Named"), this.internal.out("/Type /Action"), this.internal.out("/N /Print"), this.internal.out(">>"), this.internal.out("endobj");}), this.internal.events.subscribe("putCatalog",function(){this.internal.out("/OpenAction "+e+" 0 R");});}return this}, (
63/**
64   * jsPDF Canvas PlugIn
65   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  [email protected]
66   *
67   * Licensed under the MIT License.
68   * http://opensource.org/licenses/mit-license
69   */
70e=$.API).events.push(["initialized",function(){this.canvas.pdf=this;}]), e.canvas={getContext:function(t){return(this.pdf.context2d._canvas=this).pdf.context2d},childNodes:[]}, Object.defineProperty(e.canvas,"width",{get:function(){return this._width}
70,set:function(t){this._width=t, this.getContext("2d").pageWrapX=t+1;}}), Object.defineProperty(e.canvas,"height",{get:function(){return this._height},set:function(t){this._height=t, this.getContext("2d").pageWrapY=t+1;}}), I=$.API, C={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0}, T=1, d=function(t,e,n,r,i){C={x:t,y:e,w:n,h:r,ln:i};}, p=function(){return C}, F={left:0,top:0,bottom:0}, I.setHeaderFunction=function(t){h=t;}, I.getTextDimensions=function(e){i=this.internal.getFont().fontName, o=this.table_font_size||this.internal.getFontSize(), a=this.internal.getFont().fontStyle;var t,n,r=19.049976/25.4;(n=document.createElement("font")).id="jsPDFCell";try{n.style.fontStyle=a;}catch(t){n.style.fontWeight=a;}n.style.fontSize=o+"pt", n.style.fontFamily=i;try{n.textContent=e;}catch(t){n.innerText=e;}return document.body.appendChild(n), t={w:(n.offsetWidth+1)*r,h:(n.offsetHeight+1)*r}, document.body.removeChild(n), t}, I.cellAddPage=function(){var t=this.margins||F;this.addPage(), d(t.left,t.top,void 0,void 0), T+=1;}, I.cellInitialize=function(){C={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0}, T=1;}, I.cell=function(t,e,n,r,i,o,a){var s=p(),h=!1;if(void 0!==s.ln)if(s.ln===o)t=s.x+s.w, e=s.y;else{var c=this.margins||F;s.y+s.h+r+13>=this.internal.pageSize.getHeight()-c.bottom&&(this.cellAddPage(), h=!0, this.printHeaders&&this.tableHeaderRow&&this.printHeaderRow(o,!0)), e=p().y+p().h, h&&(e=23);}if(void 0!==i[0])if(this.printingHeaderRow?this.rect(t,e,n,r,"FD"):this.rect(t,e,n,r), "right"===a){i instanceof Array||(i=[i]);for(var l=0;l<i.length;l++){var u=i[l],f=this.getStringUnitWidth(u)*this.internal.getFontSize();this.text(u,t+n-f-3,e+this.internal.getLineHeight()*(l+1));}}else this.text(i,t+3,e+this.internal.getLineHeight());return d(t,e,n,r,o), this}, I.arrayMax=function(t,e){var n,r,i,o=t[0];for(n=0, r=t.length;n<r;n+=1)i=t[n], e?-1===e(o,i)&&(o=i):o<i&&(o=i);return o}, I.table=function(t,e,n,r,i){if(!n)throw"No data for PDF table";var o,a,s,h,c,l,u,f,d,p,g=[],m=[],w={},y={},v=[],b=[],x=!1,S=!0,k=12,_=F;if(_.width=this.internal.pageSize.getWidth(), i&&(!0===i.autoSize&&(x=!0), !1===i.printHeaders&&(S=!1), i.fontSize&&(k=i.fontSize), i.css&&void 0!==i.css["font-size"]&&(k=16*i.css["font-size"]), i.margins&&(_=i.margins)), this.lnMod=0, C={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0}, T=1, this.printHeaders=S, this.margins=_, this.setFontSize(k), this.table_font_size=k, null==r)g=Object.keys(n[0]);else if(r[0]&&"string"!=typeof r[0])for(a=0, s=r.length;a<s;a+=1)o=r[a], g.push(o.name), m.push(o.prompt), y[o.name]=o.width*(19.049976/25.4);else g=r;if(x)for(p=function(t){return t[o]}, a=0, s=g.length;a<s;a+=1){for(w[o=g[a]]=n.map(p), v.push(this.getTextDimensions(m[a]||o).w), u=0, h=(l=w[o]).length;u<h;u+=1)c=l[u], v.push(this.getTextDimensions(c).w);y[o]=I.arrayMax(v), v=[];}if(S){var A=this.calculateLineHeight(g,y,m.length?m:g);for(a=0, s=g.length;a<s;a+=1)o=g[a], b.push([t,e,y[o],A,String(m.length?m[a]:o)]);this.setTableHeaderRow(b), this.printHeaderRow(1,!1);}for(a=0, s=n.length;a<s;a+=1)for(f=n[a], A=this.calculateLineHeight(g,y,f), u=0, d=g.length;u<d;u+=1)o=g[u], this.cell(t,e,y[o],A,f[o],a+2,o.align);return this.lastCellPos=C, this.table_x=t, this.table_y=e, this}, I.calculateLineHeight=function(t,e,n){for(var r,i=0,o=0;o<t.length;o++){n[r=t[o]]=this.splitTextToSize(String(n[r]),e[r]-3);var a=this.internal.getLineHeight()*n[r].length+3;i<a&&(i=a);}return i}, I.setTableHeaderRow=function(t){this.tableHeaderRow=t;}, I.printHeaderRow=function(t,e){if(!this.tableHeaderRow)throw"Property tableHeaderRow does not exist.";var n,r,i,o;if(this.printingHeaderRow=!0, void 0!==h){var a=h(this,T);d(a[0],a[1],a[2],a[3],-1);}this.setFontStyle("bold");var s=[];for(i=0, o=this.tableHeaderRow.length;i<o;i+=1)this.setFillColor(200,200,200), n=this.tableHeaderRow[i], e&&(this.margins.top=13, n[1]=this.margins&&this.margins.top||0, s.push(n)), r=[].concat(n), this.cell.apply(this,r.concat(t));0<s.length&&this.setTableHeaderRow(s), this.setFontStyle("normal"), this.printingHeaderRow=!1;}, function(t){t.events.push(["initialized",function(){((this.context2d.pdf=this).context2d.internal.pdf=this).context2d.ctx=new e, this.context2d.ctxStack=[], this.context2d.path=[];}]), t.context2d={pageWrapXEnabled:!1,pageWrapYEnabled:!1,pageWrapX:9999999,pageWrapY:9999999,ctx:new e,f2:function(t){return t.toFixed(2)}
70,fillRect:function(t,e,n,r){if(!this._isFillTransparent()){t=this._wrapX(t), e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.pdf.rect(i.x,i.y,i.w,i.h,"f");}},strokeRect:function(t,e,n,r){if(!this._isStrokeTransparent()){t=this._wrapX(t), e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.pdf.rect(i.x,i.y,i.w,i.h,"s");}},clearRect:function(t,e,n,r){if(!this.ctx.ignoreClearRect){t=this._wrapX(t), e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.save(), this.setFillStyle("#ffffff"), this.pdf.rect(i.x,i.y,i.w,i.h,"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);},rect:function(t,e,n,r){this.moveTo(t,e), this.lineTo(t+n,e), this.lineTo(t+n,e+r), this.lineTo(t,e+r), this.lineTo(t,e), this.closePath();},beginPath:function(){this.path=[];},closePath:function(){this.path.push({type:"close"});},_getRGBA:function(t){var e,n,r,i,o=new RGBColor(t);if(!t)return{r:0,g:0,b:0,a:0,style:t};if(this.internal.rxTransparent.test(t))i=r=n=e=0;else{var a=this.internal.rxRgb.exec(t);null!=a?(e=parseInt(a[1]), n=parseInt(a[2]), r=parseInt(a[3]), i=1):null!=(a=this.internal.rxRgba.exec(t))?(e=parseInt(a[1]), n=parseInt(a[2]), r=parseInt(a[3]), i=parseFloat(a[4])):(i=1, "#"!=t.charAt(0)&&(t=o.ok?o.toHex():"#000000"), 4===t.length?(e=t.substring(1,2), e+=e, n=t.substring(2,3), n+=n, r=t.substring(3,4), r+=r):(e=t.substring(1,3), n=t.substring(3,5), r=t.substring(5,7)), e=parseInt(e,16), n=parseInt(n,16), r=parseInt(r,16));}return{r:e,g:n,b:r,a:i,style:t}},setFillStyle:function(t){var e=this._getRGBA(t);this.ctx.fillStyle=t, this.ctx._isFillTransparent=0===e.a, this.ctx._fillOpacity=e.a, this.pdf.setFillColor(e.r,e.g,e.b,{a:e.a}), this.pdf.setTextColor(e.r,e.g,e.b,{a:e.a});},setStrokeStyle:function(t){var e=this._getRGBA(t);this.ctx.strokeStyle=e.style, this.ctx._isStrokeTransparent=0===e.a, this.ctx._strokeOpacity=e.a, 0===e.a?this.pdf.setDrawColor(255,255,255):(e.a, this.pdf.setDrawColor(e.r,e.g,e.b));},fillText:function(t,e,n,r){if(!this._isFillTransparent()){e=this._wrapX(e), n=this._wrapY(n);var i=this._matrix_map_point(this.ctx._transform,[e,n]);e=i[0], n=i[1];var o=57.2958*this._matrix_rotation(this.ctx._transform);if(0<this.ctx._clip_path.length){var a;(a=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var s=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._fill(null,!0), this.ctx._clip_path=this.path, this.path=s;}var h=1;try{h=this._matrix_decompose(this._getTransform()).scale[0];}catch(t){console.warn(t);}if(h<.01)this.pdf.text(t,e,this._getBaseline(n),null,o);else{var c=this.pdf.internal.getFontSize();this.pdf.setFontSize(c*h), this.pdf.text(t,e,this._getBaseline(n),null,o), this.pdf.setFontSize(c);}0<this.ctx._clip_path.length&&a.push("Q");}}
70,strokeText:function(t,e,n,r){if(!this._isStrokeTransparent()){e=this._wrapX(e), n=this._wrapY(n);var i=this._matrix_map_point(this.ctx._transform,[e,n]);e=i[0], n=i[1];var o=57.2958*this._matrix_rotation(this.ctx._transform);if(0<this.ctx._clip_path.length){var a;(a=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var s=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._fill(null,!0), this.ctx._clip_path=this.path, this.path=s;}var h=1;try{h=this._matrix_decompose(this._getTransform()).scale[0];}catch(t){console.warn(t);}if(1===h)this.pdf.text(t,e,this._getBaseline(n),{stroke:!0},o);else{var c=this.pdf.internal.getFontSize();this.pdf.setFontSize(c*h), this.pdf.text(t,e,this._getBaseline(n),{stroke:!0},o), this.pdf.setFontSize(c);}0<this.ctx._clip_path.length&&a.push("Q");}},setFont:function(t){if(this.ctx.font=t, null!=(c=/\s*(\w+)\s+(\w+)\s+(\w+)\s+([\d\.]+)(px|pt|em)\s+(.*)?/.exec(t))){var e=c[1],n=(c[2], c[3]),r=c[4],i=c[5],o=c[6];r="px"===i?Math.floor(parseFloat(r)):"em"===i?Math.floor(parseFloat(r)*this.pdf.getFontSize()):Math.floor(parseFloat(r)), this.pdf.setFontSize(r), "bold"===n||"700"===n?this.pdf.setFontStyle("bold"):"italic"===e?this.pdf.setFontStyle("italic"):this.pdf.setFontStyle("normal"), l="bold"===n||"700"===n?"italic"===e?"bolditalic":"bold":"italic"===e?"italic":"normal";for(var a=o.toLowerCase().split(/\s*,\s*/),s="Times",h=0;h<a.length;h++){if(void 0!==this.pdf.internal.getFont(a[h],l,{noFallback:!0,disableWarning:!0})){s=a[h];break}if("bolditalic"===l&&void 0!==this.pdf.internal.getFont(a[h],"bold",{noFallback:!0,disableWarning:!0}))s=a[h], l="bold";else if(void 0!==this.pdf.internal.getFont(a[h],"normal",{noFallback:!0,disableWarning:!0})){s=a[h], l="normal";break}}this.pdf.setFont(s,l);}else{var c=/\s*(\d+)(pt|px|em)\s+([\w "]+)\s*([\w "]+)?/.exec(t);if(null!=c){var l,u=c[1],f=(c[2], c[3]);(l=c[4])||(l="normal"), u="em"===i?Math.floor(parseFloat(r)*this.pdf.getFontSize()):Math.floor(parseFloat(u)), this.pdf.setFontSize(u), this.pdf.setFont(f,l);}}},setTextBaseline:function(t){this.ctx.textBaseline=t;},getTextBaseline:function(){return this.ctx.textBaseline},setTextAlign:function(t){this.ctx.textAlign=t;},getTextAlign:function(){return this.ctx.textAlign},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.lineJoin=t, this.pdf.setLineJoin(t);},moveTo:function(t,e){t=this._wrapX(t), e=this._wrapY(e);var n=this._matrix_map_point(this.ctx._transform,[t,e]),r={type:"mt",x:t=n[0],y:e=n[1]};this.path.push(r);},_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},transform:function(t,e,n,r,i,o){this.ctx._transform=this._matrix_multiply(this.ctx._transform,[t,e,n,r,i,o]);},setTransform:function(t,e,n,r,i,o){this.ctx._transform=[t,e,n,r,i,o];},_getTransform:function(){return this.ctx._transform},lastBreak:0,pageBreaks:[],_page:function(t){if(this.pageWrapYEnabled){for(var e=this.lastBreak=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], n+=Math.floor(i/this.pageWrapY);}if(0===this.lastBreak)n+=Math.floor(t/this.pageWrapY)+1;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=this._matrix_map_point(this.ctx._transform,[t,e]),r={type:"lt",x:t=n[0],y:e=n[1]};this.path.push(r);},bezierCurveTo:function(t,e,n,r,i,o){var a;t=this._wrapX(t), e=this._wrapY(e), n=this._wrapX(n), r=this._wrapY(r), i=this._wrapX(i), o=this._wrapY(o), i=(a=this._matrix_map_point(this.ctx._transform,[i,o]))[0], o=a[1];var s={type:"bct",x1:t=(a=this._matrix_map_point(this.ctx._transform,[t,e]))[0],y1:e=a[1],x2:n=(a=this._matrix_map_point(this.ctx._transform,[n,r]))[0],y2:r=a[1],x:i,y:o};this.path.push(s);},quadraticCurveTo:function(t,e,n,r){var i;t=this._wrapX(t), e=this._wrapY(e), n=this._wrapX(n), r=this._wrapY(r), n=(i=this._matrix_map_point(this.ctx._transform,[n,r]))[0], r=i[1];var o={type:"qct",x1:t=(i=this._matrix_map_point(this.ctx._transform,[t,e]))[0],y1:e=i[1],x:n,y:r};this.path.push(o);},arc:function(t,e,n,r,i,o){if(t=this._wrapX(t), e=this._wrapY(e), !this._matrix_is_identity(this.ctx._transform)){var a=this._matrix_map_point(this.ctx._transform,[t,e]);t=a[0], e=a[1];var s=this._matrix_map_point(this.ctx._transform,[0,0]),h=this._matrix_map_point(this.ctx._transform,[0,n]);n=Math.sqrt(Math.pow(h[0]-s[0],2)+Math.pow(h[1]-s[1],2));}
70var c={type:"arc",x:t,y:e,radius:n,startAngle:r,endAngle:i,anticlockwise:o};this.path.push(c);},drawImage:function(t,e,n,r,i,o,a,s,h){void 0!==o&&(e=o, n=a, r=s, i=h), e=this._wrapX(e), n=this._wrapY(n);var c,l=this._matrix_map_rect(this.ctx._transform,{x:e,y:n,w:r,h:i}),u=(this._matrix_map_rect(this.ctx._transform,{x:o,y:a,w:s,h:h}), /data:image\/(\w+).*/i.exec(t));c=null!=u?u[1]:"png", this.pdf.addImage(t,c,l.x,l.y,l.w,l.h);},_matrix_multiply:function(t,e){var n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],h=n*t[0]+r*t[2],c=i*t[0]+o*t[2],l=a*t[0]+s*t[2]+t[4];return r=n*t[1]+r*t[3], o=i*t[1]+o*t[3], s=a*t[1]+s*t[3]+t[5], [n=h,r,i=c,o,a=l,s]},_matrix_rotation:function(t){return Math.atan2(t[2],t[0])},_matrix_decompose:function(t){var e=t[0],n=t[1],r=t[2],i=t[3],o=Math.sqrt(e*e+n*n),a=(e/=o)*r+(n/=o)*i;r-=e*a, i-=n*a;var s=Math.sqrt(r*r+i*i);return a/=s, e*(i/=s)<n*(r/=s)&&(e=-e, n=-n, a=-a, o=-o), {scale:[o,0,0,s,0,0],translate:[1,0,0,1,t[4],t[5]],rotate:[e,n,-n,e,0,0],skew:[1,0,a,1,0,0]}},_matrix_map_point:function(t,e){var n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],s=t[5],h=e[0],c=e[1];return[h*n+c*i+a,h*r+c*o+s]},_matrix_map_point_obj:function(t,e){var n=this._matrix_map_point(t,[e.x,e.y]);return{x:n[0],y:n[1]}},_matrix_map_rect:function(t,e){var n=this._matrix_map_point(t,[e.x,e.y]),r=this._matrix_map_point(t,[e.x+e.w,e.y+e.h]);return{x:n[0],y:n[1],w:r[0]-n[0],h:r[1]-n[1]}},_matrix_is_identity:function(t){return 1==t[0]&&(0==t[1]&&(0==t[2]&&(1==t[3]&&(0==t[4]&&0==t[5]))))},rotate:function(t){var e=[Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0];this.ctx._transform=this._matrix_multiply(this.ctx._transform,e);},scale:function(t,e){var n=[t,0,0,e,0,0];this.ctx._transform=this._matrix_multiply(this.ctx._transform,n);},translate:function(t,e){var n=[1,0,0,1,t,e];this.ctx._transform=this._matrix_multiply(this.ctx._transform,n);},stroke:function(){if(0<this.ctx._clip_path.length){var t;(t=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var e=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._stroke(!0), this.ctx._clip_path=this.path, this.path=e, this._stroke(!1), t.push("Q");}else this._stroke(!1);}
70,_stroke:function(t){if(t||!this._isStrokeTransparent()){for(var e=[],n=this.path,r=0;r<n.length;r++){var i=n[r];switch(i.type){case"mt":e.push({start:i,deltas:[],abs:[]});break;case"lt":var o=[i.x-n[r-1].x,i.y-n[r-1].y];e[e.length-1].deltas.push(o), e[e.length-1].abs.push(i);break;case"bct":o=[i.x1-n[r-1].x,i.y1-n[r-1].y,i.x2-n[r-1].x,i.y2-n[r-1].y,i.x-n[r-1].x,i.y-n[r-1].y];e[e.length-1].deltas.push(o);break;case"qct":var a=n[r-1].x+2/3*(i.x1-n[r-1].x),s=n[r-1].y+2/3*(i.y1-n[r-1].y),h=i.x+2/3*(i.x1-i.x),c=i.y+2/3*(i.y1-i.y),l=i.x,u=i.y;o=[a-n[r-1].x,s-n[r-1].y,h-n[r-1].x,c-n[r-1].y,l-n[r-1].x,u-n[r-1].y];e[e.length-1].deltas.push(o);break;case"arc":0==e.length&&e.push({start:{x:0,y:0},deltas:[],abs:[]}), e[e.length-1].arc=!0, Array.isArray(e[e.length-1].abs)&&e[e.length-1].abs.push(i);}}for(r=0;r<e.length;r++){var f;if(f=r==e.length-1?"s":null, e[r].arc)for(var d=e[r].abs,p=0;p<d.length;p++){var g=d[p],m=360*g.startAngle/(2*Math.PI),w=360*g.endAngle/(2*Math.PI),y=g.x,v=g.y;this.internal.arc2(this,y,v,g.radius,m,w,g.anticlockwise,f,t);}else{y=e[r].start.x, v=e[r].start.y;t?(this.pdf.lines(e[r].deltas,y,v,null,null), this.pdf.clip_fixed()):this.pdf.lines(e[r].deltas,y,v,null,f);}}}},_isFillTransparent:function(){return this.ctx._isFillTransparent||0==this.globalAlpha},_isStrokeTransparent:function(){return this.ctx._isStrokeTransparent||0==this.globalAlpha},fill:function(t){if(0<this.ctx._clip_path.length){var e;(e=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage()).push("q");var n=this.path;this.path=this.ctx._clip_path, this.ctx._clip_path=[], this._fill(t,!0), this.ctx._clip_path=this.path, this.path=n, this._fill(t,!1), e.push("Q");}else this._fill(t,!1);},_fill:function(t,e){if(!this._isFillTransparent()){var n,r="function"==typeof this.pdf.internal.newObject2;n=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage();var i=[],o=window.outIntercept;if(r)switch(this.ctx.globalCompositeOperation){case"normal":case"source-over":break;case"destination-in":case"destination-out":var a=this.pdf.internal.newStreamObject(),s=this.pdf.internal.newObject2();s.push("<</Type /ExtGState"), s.push("/SMask <</S /Alpha /G "+a.objId+" 0 R>>"), s.push(">>");var h="MASK"+s.objId;this.pdf.internal.addGraphicsState(h,s.objId);var c="/"+h+" gs";n.splice(0,0,"q"), n.splice(1,0,c), n.push("Q"), window.outIntercept=a;break;default:var l="/"+this.pdf.internal.blendModeMap[this.ctx.globalCompositeOperation.toUpperCase()];l&&this.pdf.internal.out(l+" gs");}var u=this.ctx.globalAlpha;if(this.ctx._fillOpacity<1&&(u=this.ctx._fillOpacity), r){var f=this.pdf.internal.newObject2();f.push("<</Type /ExtGState"), f.push("/CA "+u), f.push("/ca "+u), f.push(">>");h="GS_O_"+f.objId;this.pdf.internal.addGraphicsState(h,f.objId), this.pdf.internal.out("/"+h+" gs");}for(var d=this.path,p=0;p<d.length;p++){var g=d[p];switch(g.type){case"mt":i.push({start:g,deltas:[],abs:[]});break;case"lt":var m=[g.x-d[p-1].x,g.y-d[p-1].y];i[i.length-1].deltas.push(m), i[i.length-1].abs.push(g);break;case"bct":m=[g.x1-d[p-1].x,g.y1-d[p-1].y,g.x2-d[p-1].x,g.y2-d[p-1].y,g.x-d[p-1].x,g.y-d[p-1].y];i[i.length-1].deltas.push(m);break;case"qct":var w=d[p-1].x+2/3*(g.x1-d[p-1].x),y=d[p-1].y+2/3*(g.y1-d[p-1].y),v=g.x+2/3*(g.x1-g.x),b=g.y+2/3*(g.y1-g.y),x=g.x,S=g.y;m=[w-d[p-1].x,y-d[p-1].y,v-d[p-1].x,b-d[p-1].y,x-d[p-1].x,S-d[p-1].y];i[i.length-1].deltas.push(m);break;case"arc":0===i.length&&i.push({deltas:[],abs:[]}), i[i.length-1].arc=!0, Array.isArray(i[i.length-1].abs)&&i[i.length-1].abs.push(g);break;case"close":i.push({close:!0});}}for(p=0;p<i.length;p++){var k;if(p==i.length-1?(k="f", "evenodd"===t&&(k+="*")):k=null, i[p].close)this.pdf.internal.out("h"), k&&this.pdf.internal.out(k);else if(i[p].arc){i[p].start&&this.internal.move2(this,i[p].start.x,i[p].start.y);for(var _=i[p].abs,A=0;A<_.length;A++){var I=_[A];if(void 0!==I.startAngle){var C=360*I.startAngle/(2*Math.PI),T=360*I.endAngle/(2*Math.PI),F=I.x,P=I.y;if(0===A&&this.internal.move2(this,F,P), this.internal.arc2(this,F,P,I.radius,C,T,I.anticlockwise,null,e), A===_.length-1&&i[p].start){F=i[p].start.x, P=i[p].start.y;this.internal.line2(E,F,P);}}else this.internal.line2(E,I.x,I.y);}}else{F=i[p].start.x, P=i[p].start.y;
70e?(this.pdf.lines(i[p].deltas,F,P,null,null), this.pdf.clip_fixed()):this.pdf.lines(i[p].deltas,F,P,null,k);}}window.outIntercept=o;}},pushMask:function(){if("function"==typeof this.pdf.internal.newObject2){var t=this.pdf.internal.newStreamObject(),e=this.pdf.internal.newObject2();e.push("<</Type /ExtGState"), e.push("/SMask <</S /Alpha /G "+t.objId+" 0 R>>"), e.push(">>");var n="MASK"+e.objId;this.pdf.internal.addGraphicsState(n,e.objId);var r="/"+n+" gs";this.pdf.internal.out(r);}else console.log("jsPDF v2 not enabled");},clip:function(){if(0<this.ctx._clip_path.length)for(var t=0;t<this.path.length;t++)this.ctx._clip_path.push(this.path[t]);else this.ctx._clip_path=this.path;this.path=[];},measureText:function(n){var r=this.pdf;return{getWidth:function(){var t=r.internal.getFontSize(),e=r.getStringUnitWidth(n)*t/r.internal.scaleFactor;return e*=1.3333},get width(){return this.getWidth(n)}}},_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 E=t.context2d;function e(){this._isStrokeTransparent=!1, this._strokeOpacity=1, this.strokeStyle="#000000", this.fillStyle="#000000", this._isFillTransparent=!1, this._fillOpacity=1, this.font="12pt times", this.textBaseline="alphabetic", this.textAlign="start", this.lineWidth=1, this.lineJoin="miter", this.lineCap="butt", this._transform=[1,0,0,1,0,0], this.globalCompositeOperation="normal", this.globalAlpha=1, this._clip_path=[], this.ignoreClearRect=!1, this.copy=function(t){this._isStrokeTransparent=t._isStrokeTransparent, this._strokeOpacity=t._strokeOpacity, this.strokeStyle=t.strokeStyle, this._isFillTransparent=t._isFillTransparent, this._fillOpacity=t._fillOpacity, this.fillStyle=t.fillStyle, this.font=t.font, this.lineWidth=t.lineWidth, this.lineJoin=t.lineJoin, this.lineCap=t.lineCap, this.textBaseline=t.textBaseline, this.textAlign=t.textAlign, this._fontSize=t._fontSize, this._transform=t._transform.slice(0), this.globalCompositeOperation=t.globalCompositeOperation, this.globalAlpha=t.globalAlpha, this._clip_path=t._clip_path.slice(0), this.ignoreClearRect=t.ignoreClearRect;};}Object.defineProperty(E,"fillStyle",{set:function(t){this.setFillStyle(t);},get:function(){return this.ctx.fillStyle}}), Object.defineProperty(E,"strokeStyle",{set:function(t){this.setStrokeStyle(t);},get:function(){return this.ctx.strokeStyle}}), Object.defineProperty(E,"lineWidth",{set:function(t){this.setLineWidth(t);},get:function(){return this.ctx.lineWidth}}), Object.defineProperty(E,"lineCap",{set:function(t){this.setLineCap(t);},get:function(){return this.ctx.lineCap}}), Object.defineProperty(E,"lineJoin",{set:function(t){this.setLineJoin(t);},get:function(){return this.ctx.lineJoin}}), Object.defineProperty(E,"miterLimit",{set:function(t){this.ctx.miterLimit=t;},get:function(){return this.ctx.miterLimit}}), Object.defineProperty(E,"textBaseline",{set:function(t){this.setTextBaseline(t);},get:function(){return this.getTextBaseline()}}), Object.defineProperty(E,"textAlign",{set:function(t){this.setTextAlign(t);},get:function(){return this.getTextAlign()}}), Object.defineProperty(E,"font",{set:function(t){this.setFont(t);},get:function(){return this.ctx.font}}), Object.defineProperty(E,"globalCompositeOperation",{set:function(t){this.ctx.globalCompositeOperation=t;},get:function(){return this.ctx.globalCompositeOperation}}), Object.defineProperty(E,"globalAlpha",{set:function(t){this.ctx.globalAlpha=t;},get:function(){return this.ctx.globalAlpha}}), Object.defineProperty(E,"canvas",{get:function(){return{parentNode:!1,style:!1}}}), Object.defineProperty(E,"ignoreClearRect",{set:function(t){this.ctx.ignoreClearRect=t;},get:function(){return this.ctx.ignoreClearRect}}), E.internal={}, E.internal.rxRgb=/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/, E.internal.rxRgba=/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/, E.internal.rxTransparent=/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/, E.internal.arc=function(t,e,n,r,i,o,a,s){for(var h=this.pdf.internal.scaleFactor,c=this.pdf.internal.pageSize.getHeight(),l=this.pdf.internal.f2,u=i*(Math.PI/180),f=o*(Math.PI/180),d=this.createArc(r,u,f,a),p=0;p<d.length;p++){var g=d[p];0===p?this.pdf.internal.out([l((g.x1+e)*h),l((c-(g.y1+n))*h),"m",l((g.x2+e)*h),l((c-(g.y2+n))*h),l((g.x3+e)*h),l((c-(g.y3+n))*h),l((g.x4+e)*h),l((c-(g.y4
70+n))*h),"c"].join(" ")):this.pdf.internal.out([l((g.x2+e)*h),l((c-(g.y2+n))*h),l((g.x3+e)*h),l((c-(g.y3+n))*h),l((g.x4+e)*h),l((c-(g.y4+n))*h),"c"].join(" ")), t._lastPoint={x:e,y:n};}null!==s&&this.pdf.internal.out(this.pdf.internal.getStyle(s));}, E.internal.arc2=function(t,e,n,r,i,o,a,s,h){var c=e,l=n;h?(this.arc(t,c,l,r,i,o,a,null), this.pdf.clip_fixed()):this.arc(t,c,l,r,i,o,a,s);}, E.internal.move2=function(t,e,n){var r=this.pdf.internal.scaleFactor,i=this.pdf.internal.pageSize.getHeight(),o=this.pdf.internal.f2;this.pdf.internal.out([o(e*r),o((i-n)*r),"m"].join(" ")), t._lastPoint={x:e,y:n};}, E.internal.line2=function(t,e,n){var r=this.pdf.internal.scaleFactor,i=this.pdf.internal.pageSize.getHeight(),o=this.pdf.internal.f2,a={x:e,y:n};this.pdf.internal.out([o(a.x*r),o((i-a.y)*r),"l"].join(" ")), t._lastPoint=a;}, E.internal.createArc=function(t,e,n,r){var i=2*Math.PI,o=Math.PI/2,a=e;for((a<i||i<a)&&(a%=i), a<0&&(a=i+a);n<e;)e-=i;var s=Math.abs(n-e);s<i&&r&&(s=i-s);for(var h=[],c=r?-1:1,l=a;1e-5<s;){var u=l+c*Math.min(s,o);h.push(this.createSmallArc(t,l,u)), s-=Math.abs(u-l), l=u;}return h}, E.internal.getCurrentPage=function(){return this.pdf.internal.pages[this.pdf.internal.getCurrentPageInfo().pageNumber]}, E.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,h=a*a+s*s,c=h+a*i+s*o,l=4/3*(Math.sqrt(2*h*c)-c)/(a*o-s*i),u=a-l*s,f=s+l*a,d=u,p=-f,g=r+e,m=Math.cos(g),w=Math.sin(g);return{x1:t*Math.cos(e),y1:t*Math.sin(e),x2:u*m-f*w,y2:u*w+f*m,x3:d*m-p*w,y3:d*w+p*m,x4:t*Math.cos(n),y4:t*Math.sin(n)}};}($.API,"undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), function(t){var T,F,i,a,s,h,c,l,P,v,f,u,d,n,E,q,p,g,m,O;T=function(){return function(t){return e.prototype=t, new e};function e(){}}(), v=function(t){var e,n,r,i,o,a,s;for(n=0, r=t.length, e=void 0, a=i=!1;!i&&n!==r;)(e=t[n]=t[n].trimLeft())&&(i=!0), n++;for(n=r-1;r&&!a&&-1!==n;)(e=t[n]=t[n].trimRight())&&(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}, u=function(t){var e,n,r;for(e=void 0, n=(r=t.split(",")).shift();!e&&n;)e=i[n.trim().toLowerCase()], n=r.shift();return e}, d=function(t){var e;return-1<(t="auto"===t?"0px":t).indexOf("em")&&!isNaN(Number(t.replace("em","")))&&(t=18.719*Number(t.replace("em",""))+"px"), -1<t.indexOf("pt")&&!isNaN(Number(t.replace("pt","")))&&(t=1.333*Number(t.replace("pt",""))+"px"), (e=n[t])?e:void 0!==(e={"xx-small":9,"x-small":11,small:13,medium:16,large:19,"x-large":23,"xx-large":28,auto:0}[t])?n[t]=e/16:(e=parseFloat(t))?n[t]=e/16:(e=t.match(/([\d\.]+)(px)/), Array.isArray(e)&&3===e.length?n[t]=parseFloat(e[1])/16:n[t]=1)}, P=function(t){var e,n,r,i,o;return o=t, i=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(o,null):o.currentStyle?o.currentStyle:o.style, n=void 0, (e={})["font-family"]=u((r=function(t){return t=t.replace(/-\D/g,function(t){return t.charAt(1).toUpperCase()}), i[t]})("font-family"))||"times", e["font-style"]=a[r("font-style")]||"normal", e["text-align"]=s[r("text-align")]||"left", "bold"===(n=h[r("font-weight")]||"normal")&&("normal"===e["font-style"]?e["font-style"]=n:e["font-style"]=n+e["font-style"]), e["font-size"]=d(r("font-size"))||1, e["line-height"]=d(r("line-height"))||1, e.display="inline"===r("display")?"inline":"block", n="block"===e.display, e["margin-top"]=n&&d(r("margin-top"))||0, e["margin-bottom"]=n&&d(r("margin-bottom"))||0, e["padding-top"]=n&&d(r("padding-top"))||0, e["padding-bottom"]=n&&d(r("padding-bottom"))||0, e["margin-left"]=n&&d(r("margin-left"))||0, e["margin-right"]=n&&d(r("margin-right"))||0, e["padding-left"]=n&&d(r("padding-left"))||0, e["padding-right"]=n&&d(r("padding-right"))||0, e["page-break-before"]=r("page-break-before")||"auto", e.float=c[r("cssFloat")]||"none", e.clear=l[r("clear")]||"none", e.color=r("color"), e}, E=function(t,e,n){var r,i,o,a,s;if(o=!1, a=i=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++;for(s="string"==typeof t.className?t.className.split(" "):[], i=0;i<s.length;i++)if(r=n["."+s[i]], !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}, O=function(t,e){var n,r,i,o,a,s,h,c,l;
70for(n=[], r=[], i=0, l=t.rows[0].cells.length, h=t.clientWidth;i<l;)c=t.rows[0].cells[i], r[i]={name:c.textContent.toLowerCase().replace(/\s+/g,""),prompt:c.textContent.replace(/\r?\n/g,""),width:c.clientWidth/h*e.pdf.internal.pageSize.getWidth()}, 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{rows:n,headers:r}};var B={SCRIPT:1,STYLE:1,NOSCRIPT:1,OBJECT:1,EMBED:1,SELECT:1},R=1;F=function(t,i,e){var n,r,o,a,s,h,c,l;for(r=t.childNodes, n=void 0, (s="block"===(o=P(t)).display)&&(i.setBlockBoundary(), i.setBlockStyle(o)), a=0, h=r.length;a<h;){if("object"===(void 0===(n=r[a])?"undefined":vt(n))){if(i.executeWatchFunctions(n), 1===n.nodeType&&"HEADER"===n.nodeName){var u=n,f=i.pdf.margins_doc.top;i.pdf.internal.events.subscribe("addPage",function(t){i.y=f, F(u,i,e), i.pdf.margins_doc.top=i.y+10, i.y+=10;},!1);}if(8===n.nodeType&&"#comment"===n.nodeName)~n.textContent.indexOf("ADD_PAGE")&&(i.pdf.addPage(), i.y=i.pdf.margins_doc.top);else if(1!==n.nodeType||B[n.nodeName])if(3===n.nodeType){var d=n.nodeValue;if(n.nodeValue&&"LI"===n.parentNode.nodeName)if("OL"===n.parentNode.parentNode.nodeName)d=R+++". "+d;else{var p=o["font-size"],g=(3-.75*p)*i.pdf.internal.scaleFactor,m=.75*p*i.pdf.internal.scaleFactor,w=1.74*p/i.pdf.internal.scaleFactor;l=function(t,e){this.pdf.circle(t+g,e+m,w,"FD");};}16&n.ownerDocument.body.compareDocumentPosition(n)&&i.addText(d,o);}else"string"==typeof n&&i.addText(n,o);else{var y;if("IMG"===n.nodeName){var v=n.getAttribute("src");y=q[i.pdf.sHashCode(v)||v];}if(y){i.pdf.internal.pageSize.getHeight()-i.pdf.margins_doc.bottom<i.y+n.height&&i.y>i.pdf.margins_doc.top&&(i.pdf.addPage(), i.y=i.pdf.margins_doc.top, i.executeWatchFunctions(n));var b=P(n),x=i.x,S=12/i.pdf.internal.scaleFactor,k=(b["margin-left"]+b["padding-left"])*S,_=(b["margin-right"]+b["padding-right"])*S,A=(b["margin-top"]+b["padding-top"])*S,I=(b["margin-bottom"]+b["padding-bottom"])*S;void 0!==b.float&&"right"===b.float?x+=i.settings.width-n.width-_:x+=k, i.pdf.addImage(y,x,i.y+A,n.width,n.height), y=void 0, "right"===b.float||"left"===b.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&&!B[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)}.bind(this,"left"===b.float?-n.width-k-_:0,i.y+n.height+A+I,n.width)), i.watchFunctions.push(function(t,e,n){return!(i.y<t&&e===i.pdf.internal.getNumberOfPages())||1===n.nodeType&&"both"===P(n).clear&&(i.y=t, !0)}.bind(this,i.y+n.height,i.pdf.internal.getNumberOfPages())), i.settings.width-=n.width+k+_, "left"===b.float&&(i.x+=n.width+k+_)):i.y+=n.height+A+I;}else if("TABLE"===n.nodeName)c=O(n,i), i.y+=10, i.pdf.table(i.x,i.y,c.rows,c.headers,{autoSize:!1,printHeaders:e.printHeaders,margins:i.pdf.margins_doc,css:P(n)}), i.y=i.pdf.lastCellPos.y+i.pdf.lastCellPos.h+20;else if("OL"===n.nodeName||"UL"===n.nodeName)R=1, E(n,i,e)||F(n,i,e), i.y+=10;else if("LI"===n.nodeName){var C=i.x;i.x+=20/i.pdf.internal.scaleFactor, i.y+=3, E(n,i,e)||F(n,i,e), i.x=C;}else"BR"===n.nodeName?(i.y+=o["font-size"]*i.pdf.internal.scaleFactor, i.addText("\u2028",T(o))):E(n,i,e)||F(n,i,e);}}a++;}if(e.outY=i.y, s)return i.setBlockBoundary(l)}, q={}, p=function(t,o,e,n){var a,r=t.getElementsByTagName("img"),i=r.length,s=0;function h(){o.pdf.internal.events.publish("imagesLoaded"), n(a);}function c(e,n,r){if(e){var i=new Image;a=++s, i.crossOrigin="", i.onerror=i.onload=function(){if(i.complete&&(0===i.src.indexOf("data:image/")&&(i.width=n||i.width||0, i.height=r||i.height||0), i.width+i.height)){var t=o.pdf.sHashCode(e)||e;q[t]=q[t]||i;}--s||h();}, i.src=e;}}for(;i--;)c(r[i].getAttribute("src"),r[i].width,r[i].height);return s||h()}, g=function(t,o,a){var s=t.getElementsByTagName("footer");if(0<s.length){s=s[0];var e=o.pdf.internal.write,n=o.y;o.pdf.internal.write=function(){}, F(s,o,a);var h=Math.ceil(o.y-n)+5;o.y=n, o.pdf.internal.write=e, o.pdf.margins_doc.bottom+=h;for(var r=function(t){var e=void 0!==t?t.pageNumber:1,n=o.y;o.y=o.pdf.internal.pageSize.getHeight()-o.pdf.margins_doc.bottom, o.pdf.margins_doc.bottom-=h;for(var r=s.getElementsByTagName("span"),i=0;i<r.length;++i)-1<(" "+r[i].className+" ").replace(/[\n\t]/g," ").indexOf(" pageCounter ")&&(r[i].innerHTML=e), -1<(" "+r[i].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")&&(r[i].innerHTML="###jsPDFVarTotalPages###");F(s,o,a), o.pdf.margins_doc.bottom+=h, o.y=n;},i=s.getElementsByTagName("span"),c=0;c<i.length;++c)-1<(" "+i[c].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")&&o.pdf.internal.events.subscribe("htmlRenderingFinished",o.pdf.putTotalPages.bind(o.pdf,"###jsPDFVarTotalPages###"),!0);o.pdf.internal.events.subscribe("addPage",r,!1), r(), B.FOOTER=1;}}, m=function(t,e,n,r,i,o){if(!e)return!1;var a,s,h,c;"string"==typeof e||e.parentNode||(e=""+e.innerHTML), "string"==typeof e&&(a=e.replace(/<\/?script[^>]*?>/gi,""), c="jsPDFhtmlText"+Date.now().toString()+(1e3*Math.random()).toFixed(0), (h=document.createElement("div")).style.cssText="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;", h.innerHTML='<iframe style="height:1px;width:1px" name="'+c+'" />', document.body.appendChild(h), (s=window.frames[c]).document.open(), s.document.writeln(a), s.document.close(), e=s.document.body);var l,u=new f(t,n,r,i);return p.call(this,e,u,i.elementHandlers,function(t){g(e,u,i.elementHandlers), F(e,u,i.elementHandlers), u.pdf.internal.events.publish("htmlRenderingFinished"), l=u.dispose(), "function"==typeof o?o(l):t&&console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!");}), l||{x:u.x,y:u.y}}, (f=function(t,e,n,r){return this.pdf=t, this.x=e, this.y=n, this.settings=r, this.watchFunctions=[], this.init(), this}).prototype.init=function(){return this.paragraph={text:[],style:[]}, this.pdf.internal.write("q")}, f.prototype.dispose=function(){return this.pdf.internal.write("Q"), {x:this.x,y:this.y,ready:!0}}, f.prototype.executeWatchFunctions=function(t){var e=!1,n=[];if(0<this.watchFunctions.length){for(var r=0;r<this.watchFunctions.length;++r)!0===this.watchFunctions[r](t)?e=!0:n.push(this.watchFunctions[r]);this.watchFunctions=n;}return e}, f.prototype.splitFragmentsIntoLines=function(t,e){var n,r,i,o,a,s,h,c,l,u,f,d,p,g;for(u=this.pdf.internal.scaleFactor, o={}
70, s=h=c=g=a=i=l=r=void 0, d=[f=[]], n=0, p=this.settings.width;t.length;)if(a=t.shift(), g=e.shift(), a)if((i=o[(r=g["font-family"])+(l=g["font-style"])])||(i=this.pdf.internal.getFont(r,l).metadata.Unicode, o[r+l]=i), c={widths:i.widths,kerning:i.kerning,fontSize:12*g["font-size"],textIndent:n}, h=this.pdf.getStringUnitWidth(a,c)*c.fontSize/u, "\u2028"==a)f=[], d.push(f);else if(p<n+h){for(s=this.pdf.splitTextToSize(a,p,c), f.push([s.shift(),g]);s.length;)f=[[s.shift(),g]], d.push(f);n=this.pdf.getStringUnitWidth(f[0][0],c)*c.fontSize/u;}else f.push([a,g]), n+=h;if(void 0!==g["text-align"]&&("center"===g["text-align"]||"right"===g["text-align"]||"justify"===g["text-align"]))for(var m=0;m<d.length;++m){var w=this.pdf.getStringUnitWidth(d[m][0][0],c)*c.fontSize/u;0<m&&(d[m][0][1]=T(d[m][0][1]));var y=p-w;if("right"===g["text-align"])d[m][0][1]["margin-left"]=y;else if("center"===g["text-align"])d[m][0][1]["margin-left"]=y/2;else if("justify"===g["text-align"]){var v=d[m][0][0].split(" ").length-1;d[m][0][1]["word-spacing"]=y/v, m===d.length-1&&(d[m][0][1]["word-spacing"]=0);}}return d}, f.prototype.RenderTextFragment=function(t,e){var n,r;r=0, this.pdf.internal.pageSize.getHeight()-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",this.getPdfColor(e.color),this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td"), r=Math.max(r,e["line-height"],e["font-size"]), this.pdf.internal.write(0,(-12*r).toFixed(2),"Td")), n=this.pdf.internal.getFont(e["font-family"],e["font-style"]);var i=this.getPdfColor(e.color);i!==this.lastTextColor&&(this.pdf.internal.write(i), this.lastTextColor=i), void 0!==e["word-spacing"]&&0<e["word-spacing"]&&this.pdf.internal.write(e["word-spacing"].toFixed(2),"Tw"), this.pdf.internal.write("/"+n.id,(12*e["font-size"]).toFixed(2),"Tf","("+this.pdf.internal.pdfEscape(t)+") Tj"), void 0!==e["word-spacing"]&&this.pdf.internal.write(0,"Tw");}, f.prototype.getPdfColor=function(t){var e,n,r,i=new RGBColor(t),o=/rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/.exec(t);if(null!=o?(e=parseInt(o[1]), n=parseInt(o[2]), r=parseInt(o[3])):("#"!=t.charAt(0)&&(t=i.ok?i.toHex():"#000000"), e=t.substring(1,3), e=parseInt(e,16), n=t.substring(3,5), n=parseInt(n,16), r=t.substring(5,7), r=parseInt(r,16)), "string"==typeof e&&/^#[0-9A-Fa-f]{6}$/.test(e)){var a=parseInt(e.substr(1),16);e=a>>16&255, n=a>>8&255, r=255&a;}var s=this.f3;return 0===e&&0===n&&0===r||void 0===n?s(e/255)+" g":[s(e/255),s(n/255),s(r/255),"rg"].join(" ")}, f.prototype.f3=function(t){return t.toFixed(3)}, f.prototype.renderParagraph=function(t){var e,n,r,i,o,a,s,h,c,l,u,f,d;if(r=v(this.paragraph.text), f=this.paragraph.style, e=this.paragraph.blockstyle, this.paragraph.priorblockstyle||{}, this.paragraph={text:[],style:[],blockstyle:{},priorblockstyle:e}, r.join("").trim()){s=this.splitFragmentsIntoLines(r,f), h=a=void 0, n=12/this.pdf.internal.scaleFactor, this.priorMarginBottom=this.priorMarginBottom||0, u=(Math.max((e["margin-top"]||0)-this.priorMarginBottom,0)+(e["padding-top"]||0))*n, l=((e["margin-bottom"]||0)+(e["padding-bottom"]||0))*n, this.priorMarginBottom=e["margin-bottom"]||0, "always"===e["page-break-before"]&&(this.pdf.addPage(), this.y=0, u=((e["margin-top"]||0)+(e["padding-top"]||0))*n), c=this.pdf.internal.write, o=i=void 0, this.y+=u, c("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td");for(var p=0;s.length;){for(i=h=0, o=(a=s.shift()).length;i!==o;)a[i][0].trim()&&(h=Math.max(h,a[i][1]["line-height"],a[i][1]["font-size"]), d=7*a[i][1]["font-size"]), i++;var g=0,m=0;for(void 0!==a[0][1]["margin-left"]&&0<a[0][1]["margin-left"]&&(g=(m=this.pdf.internal.getCoordinateString(a[0][1]["margin-left"]))-p, p=m), c(g+Math.max(e["margin-left"]||0,0)*n,(-12*h).toFixed(2),"Td"), i=0, o=a.length;i!==o;)a[i][0]&&this.RenderTextFragment(a[i][0],a[i][1]), i++;if(this.y+=h*n, this.executeWatchFunctions(a[0][1])&&0<s.length){var w=[],y=[];
70s.forEach(function(t){for(var e=0,n=t.length;e!==n;)t[e][0]&&(w.push(t[e][0]+" "), y.push(t[e][1])), ++e;}), s=this.splitFragmentsIntoLines(v(w),y), c("ET","Q"), c("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-d/2), c("ET","Q"), this.y+=l}}, f.prototype.setBlockBoundary=function(t){return this.renderParagraph(t)}, f.prototype.setBlockStyle=function(t){return this.paragraph.blockstyle=t}, f.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"}, h={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"}, c={none:"none",right:"right",left:"left"}, l={none:"none",both:"both"}, n={normal:1}, t.fromHTML=function(t,e,n,r,i,o){return this.margins_doc=o||{top:0,bottom:0}, r||(r={}), r.elementHandlers||(r.elementHandlers={}), m(this,t,isNaN(e)?4:e,isNaN(n)?4:n,r,i)};}($.API), $.API.addJS=function(t){return s=t, this.internal.events.subscribe("postPutResources",function(t){n=this.internal.newObject(), this.internal.out("<<"), this.internal.out("/Names [(EmbeddedJS) "+(n+1)+" 0 R]"), this.internal.out(">>"), this.internal.out("endobj"), r=this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /JavaScript"), this.internal.out("/JS ("+s+")"), this.internal.out(">>"), this.internal.out("endobj");}), this.internal.events.subscribe("putCatalog",function(){void 0!==n&&void 0!==r&&this.internal.out("/Names <</JavaScript "+n+" 0 R>>");}), this}, (
71/**
72   * jsPDF Outline PlugIn
73   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  [email protected]
74   *
75   * Licensed under the MIT License.
76   * http://opensource.org/licenses/mit-license
77   */
78c=$.API).events.push(["postPutResources",function(){var t=this,e=/^(\d+) 0 obj$/;if(0<this.outline.root.children.length)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){var s=this.internal.pages.length,h=[];for(r=0;r<s;r++){var c=t.internal.newObject();h.push(c);var l=t.internal.getPageInfo(r+1);t.internal.write("<< /D["+l.objId+" 0 R /XYZ null null null]>> endobj");}var u=t.internal.newObject();for(t.internal.write("<< /Names [ "), r=0;r<h.length;r++)t.internal.write("(page_"+(r+1)+")"+h[r]+" 0 R");t.internal.write(" ] >>","endobj"), t.internal.newObject(), t.internal.write("<< /Dests "+u+" 0 R"), t.internal.write(">>","endobj");}}]), c.events.push(["putCatalog",function(){0<this.outline.root.children.length&&(this.internal.write("/Outlines",this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations&&this.internal.write("/Names "+namesOid+" 0 R"));}]), c.events.push(["initialized",function(){var o=this;o.outline={createNamedDestinations:!1,root:{children:[]}}, o.outline.add=function(t,e,n){var r={title:e,options:n,children:[]};return null==t&&(t=this.root), t.children.push(r), r}, o.outline.render=function(){return this.ctx={}, this.ctx.val="", this.ctx.pdf=o, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val}, o.outline.genIds_r=function(t){t.id=o.internal.newObjectDeferred();for(var e=0;e<t.children.length;e++)this.genIds_r(t.children[e]);}, o.outline.renderRoot=function(t){this.objStart(t), this.line("/Type /Outlines"), 0<t.children.length&&(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();}, o.outline.renderItems=function(t){for(var e=0;e<t.children.length;e++){var n=t.children[e];this.objStart(n), this.line("/Title "+this.makeString(n.title)), this.line("/Parent "+this.makeRef(t)), 0<e&&this.line("/Prev "+this.makeRef(t.children[e-1])), e<t.children.length-1&&this.line("/Next "+this.makeRef(t.children[e+1])), 0<n.children.length&&(this.line("/First "+this.makeRef(n.children[0])), this.line("/Last "+this.makeRef(n.children[n.children.length-1])));var r=this.count=this.count_r({count:0},n);if(0<r&&this.line("/Count "+r), n.options&&n.options.pageNumber){var i=o.internal.getPageInfo(n.options.pageNumber);this.line("/Dest ["+i.objId+" 0 R /XYZ 0 "+this.ctx.pdf.internal.pageSize.getHeight()*this.ctx.pdf.internal.scaleFactor+" 0]");}this.objEnd();}for(e=0;e<t.children.length;e++)n=t.children[e], this.renderItems(n);}
78, o.outline.line=function(t){this.ctx.val+=t+"\r\n";}, o.outline.makeRef=function(t){return t.id+" 0 R"}, o.outline.makeString=function(t){return"("+o.internal.pdfEscape(t)+")"}, o.outline.objStart=function(t){this.ctx.val+="\r\n"+t.id+" 0 obj\r\n<<\r\n";}, o.outline.objEnd=function(t){this.ctx.val+=">> \r\nendobj\r\n";}, o.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};}]), P=$.API, E=function(){var t="function"==typeof Deflater;if(!t)throw new Error("requires deflate.js for compression");return t}, q=function(t,e,n,r){var i=5,o=b;switch(r){case P.image_compression.FAST:i=3, o=v;break;case P.image_compression.MEDIUM:i=6, o=x;break;case P.image_compression.SLOW:i=9, o=S;}t=w(t,e,n,o);var a=new Uint8Array(g(i)),s=m(t),h=new Deflater(i),c=h.append(t),l=h.flush(),u=a.length+c.length+l.length,f=new Uint8Array(u+4);return f.set(a), f.set(c,a.length), f.set(l,a.length+c.length), f[u++]=s>>>24&255, f[u++]=s>>>16&255, f[u++]=s>>>8&255, f[u++]=255&s, P.arrayBufferToBinaryString(f)}, g=function(t,e){var n=Math.LOG2E*Math.log(32768)-8<<4|8,r=n<<8;return r|=Math.min(3,(e-1&255)>>1)<<6, r|=0, [n,255&(r+=31-r%31)]}, m=function(t,e){for(var n,r=1,i=0,o=t.length,a=0;0<o;){for(o-=n=e<o?e:o;i+=r+=t[a++], --n;);r%=65521, i%=65521;}return(i<<16|r)>>>0}, w=function(t,e,n,r){for(var i,o,a,s=t.length/e,h=new Uint8Array(t.length+s),c=k(),l=0;l<s;l++){if(a=l*e, i=t.subarray(a,a+e), r)h.set(r(i,n,o),a+l);else{for(var u=0,f=c.length,d=[];u<f;u++)d[u]=c[u](i,n,o);var p=_(d.concat());h.set(d[p],a+l);}o=i;}return h}, l=function(t,e,n){var r=Array.apply([],t);return r.unshift(0), r}, v=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=1;o<a;o++)r=t[o-e]||0, i[o+1]=t[o]-r+256&255;return i}, b=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=2;o<a;o++)r=n&&n[o]||0, i[o+1]=t[o]-r+256&255;return i}, x=function(t,e,n){var r,i,o=[],a=0,s=t.length;for(o[0]=3;a<s;a++)r=t[a-e]||0, i=n&&n[a]||0, o[a+1]=t[a]+256-(r+i>>>1)&255;return o}, S=function(t,e,n){var r,i,o,a,s=[],h=0,c=t.length;for(s[0]=4;h<c;h++)r=t[h-e]||0, i=n&&n[h]||0, o=n&&n[h-e]||0, a=u(r,i,o), s[h+1]=t[h]-a+256&255;return s}, u=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 i<=o&&i<=a?t:o<=a?e:n}, k=function(){return[l,v,b,x,S]}, _=function(t){for(var e,n,r,i=0,o=t.length;i<o;)((e=f(t[i].slice(1)))<n||!n)&&(n=e, r=i), i++;return r}, f=function(t){for(var e=0,n=t.length,r=0;e<n;)r+=Math.abs(t[e++]);return r}, P.processPNG=function(t,e,n,r,i){var o,a,s,h,c,l,u=this.color_spaces.DEVICE_RGB,f=this.decode.FLATE_DECODE,d=8;if(this.isArrayBuffer(t)&&(t=new Uint8Array(t)), this.isArrayBufferView(t)){if("function"!=typeof PNG||"function"!=typeof kt)throw new Error("PNG support requires png.js and zlib.js");if(t=(o=new PNG(t)).imgData, d=o.bits, u=o.colorSpace, h=o.colors, -1!==[4,6].indexOf(o.colorType)){if(8===o.bits)for(var p,g=(I=32==o.pixelBitlength?new Uint32Array(o.decodePixels().buffer):16==o.pixelBitlength?new Uint16Array(o.decodePixels().buffer):new Uint8Array(o.decodePixels().buffer)).length,m=new Uint8Array(g*o.colors),w=new Uint8Array(g),y=o.pixelBitlength-o.bits,v=0,b=0;v<g;v++){for(x=I[v], p=0;p<y;)m[b++]=x>>>p&255, p+=o.bits;w[v]=x>>>p&255;}if(16===o.bits){g=(I=new Uint32Array(o.decodePixels().buffer)).length, m=new Uint8Array(g*(32/o.pixelBitlength)*o.colors), w=new Uint8Array(g*(32/o.pixelBitlength));for(var x,S=1<o.colors,k=b=v=0;v<g;)x=I[v++], m[b++]=x>>>0&255, S&&(m[b++]=x>>>16&255, x=I[v++], m[b++]=x>>>0&255), w[k++]=x>>>16&255;d=8;}r!==P.image_compression.NONE&&E()?(t=q(m,o.width*o.colors,o.colors,r), l=q(w,o.width,1,r)):(t=m, l=w, f=null);}if(3===o.colorType&&(u=this.color_spaces.INDEXED, c=o.palette, o.transparency.indexed)){var _=o.transparency.indexed,A=0;for(v=0, g=_.length;v<g;++v)A+=_[v];if((A/=255)==g-1&&-1!==_.indexOf(0))s=[_.indexOf(0)];else if(A!==g){var I=o.decodePixels();for(w=new Uint8Array(I.length), v=0, g=I.length;v<g;v++)w[v]=_[I[v]];l=q(w,o.width,1);}}var C=function(t){var e;switch(t){case P.image_compression.FAST:e=11;break;case P.image_compression.MEDIUM:e=13;break;case P.image_compression.SLOW:e=14;break;default:e=12;}return e}(r);return a=f===this.decode.FLATE_DECODE?"/Predictor "+C+" /Colors "+h+" /BitsPerComponent "+d+" /Columns "+o.width:"/Colors "+h+" /BitsPerComponent "+d+" /Columns "+o.width, (this.isArrayBuffer(t)||this.isArrayBufferView(t))&&(t=this.arrayBufferToBinaryString(t)), (l&&this.isArrayBuffer(l)||this.isArrayBufferView(l))&&(l=this.arrayBufferToBinaryString(l)), this.createImageInfo(t,o.width,o.height,u,d,f,e,n,a,s,c,l,C)}throw new Error("Unsupported PNG image data, try using JPEG instead.")}, (
79/**
80   * jsPDF gif Support PlugIn
81   * Copyright (c) 2017 Aras Abbasi 
82   *
83   * Licensed under the MIT License.
84   * http://opensource.org/licenses/mit-license
85   */
86A=$.API).processGIF89A=function(t,e,n,r,i){var o=new mt(t),a=o.width,s=o.height,h=[];o.decodeAndBlitFrameRGBA(0,h);var c={data:h,width:a,height:s},l=new yt(100).encode(c,100);return A.processJPEG.call(this,l,e,n,r)}, A.processGIF87A=A.processGIF89A, (
87/**
88   * jsPDF bmp Support PlugIn
89   * Copyright (c) 2018 Aras Abbasi 
90   *
91   * Licensed under the MIT License.
92   * http://opensource.org/licenses/mit-license
93   */
94O=$.API).processBMP=function(t,e,n,r,i){var o=new xt(t,!1),a=o.width,s=o.height,h={data:o.getData(),width:a,height:s},c=new yt(100).encode(h,100);return O.processJPEG.call(this,c,e,n,r)}, $.API.setLanguage=function(t){return void 0===this.internal.languageSettings&&(this.internal.languageSettings={}, this.internal.languageSettings.isSubscribed=!1), void 0!=={af:"Afrikaans",sq
94:"Albanian",ar:"Arabic (Standard)","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (U.A.E.)","ar-YE":"Arabic (Yemen)",an:"Aragonese",hy:"Armenian",as:"Assamese",ast:"Asturian",az:"Azerbaijani",eu:"Basque",be:"Belarusian",bn:"Bengali",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",zh:"Chinese","zh-HK":"Chinese (Hong Kong)","zh-CN":"Chinese (PRC)","zh-SG":"Chinese (Singapore)","zh-TW":"Chinese (Taiwan)",cv:"Chuvash",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch (Standard)","nl-BE":"Dutch (Belgian)",en:"English","en-AU":"English (Australia)","en-BZ":"English (Belize)","en-CA":"English (Canada)","en-IE":"English (Ireland)","en-JM":"English (Jamaica)","en-NZ":"English (New Zealand)","en-PH":"English (Philippines)","en-ZA":"English (South Africa)","en-TT":"English (Trinidad & Tobago)","en-GB":"English (United Kingdom)","en-US":"English (United States)","en-ZW":"English (Zimbabwe)",eo:"Esperanto",et:"Estonian",fo:"Faeroese",fj:"Fijian",fi:"Finnish",fr:"French (Standard)","fr-BE":"French (Belgium)","fr-CA":"French (Canada)","fr-FR":"French (France)","fr-LU":"French (Luxembourg)","fr-MC":"French (Monaco)","fr-CH":"French (Switzerland)",fy:"Frisian",fur:"Friulian",gd:"Gaelic (Scots)","gd-IE":"Gaelic (Irish)",gl:"Galacian",ka:"Georgian",de:"German (Standard)","de-AT":"German (Austria)","de-DE":"German (Germany)","de-LI":"German (Liechtenstein)","de-LU":"German (Luxembourg)","de-CH":"German (Switzerland)",el:"Greek",gu:"Gujurati",ht:"Haitian",he:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",iu:"Inuktitut",ga:"Irish",it:"Italian (Standard)","it-CH":"Italian (Switzerland)",ja:"Japanese",kn:"Kannada",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ky:"Kirghiz",tlh:"Klingon",ko:"Korean","ko-KP":"Korean (North Korea)","ko-KR":"Korean (South Korea)",la:"Latin",lv:"Latvian",lt:"Lithuanian",lb:"Luxembourgish",mk:"FYRO Macedonian",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mo:"Moldavian",nv:"Navajo",ng:"Ndonga",ne:"Nepali",no:"Norwegian",nb:"Norwegian (Bokmal)",nn:"Norwegian (Nynorsk)",oc:"Occitan",or:"Oriya",om:"Oromo",fa:"Persian","fa-IR":"Persian/Iran",pl:"Polish",pt:"Portuguese","pt-BR":"Portuguese (Brazil)",pa:"Punjabi","pa-IN":"Punjabi (India)","pa-PK":"Punjabi (Pakistan)",qu:"Quechua",rm:"Rhaeto-Romanic",ro:"Romanian","ro-MO":"Romanian (Moldavia)",ru:"Russian","ru-MO":"Russian (Moldavia)",sz:"Sami (Lappish)",sg:"Sango",sa:"Sanskrit",sc:"Sardinian",sd:"Sindhi",si:"Singhalese",sr:"Serbian",sk:"Slovak",sl:"Slovenian",so:"Somani",sb:"Sorbian",es:"Spanish","es-AR":"Spanish (Argentina)","es-BO":"Spanish (Bolivia)","es-CL":"Spanish (Chile)","es-CO":"Spanish (Colombia)","es-CR":"Spanish (Costa Rica)","es-DO":"Spanish (Dominican Republic)","es-EC":"Spanish (Ecuador)","es-SV":"Spanish (El Salvador)","es-GT":"Spanish (Guatemala)","es-HN":"Spanish (Honduras)","es-MX":"Spanish (Mexico)","es-NI":"Spanish (Nicaragua)","es-PA":"Spanish (Panama)","es-PY":"Spanish (Paraguay)","es-PE":"Spanish (Peru)","es-PR":"Spanish (Puerto Rico)","es-ES":"Spanish (Spain)","es-UY":"Spanish (Uruguay)","es-VE":"Spanish (Venezuela)",sx:"Sutu",sw:"Swahili",sv:"Swedish","sv-FI":"Swedish (Finland)","sv-SV":"Swedish (Sweden)",ta:"Tamil",tt:"Tatar",te:"Teluga",th:"Thai",tig:"Tigre",ts:"Tsonga",tn:"Tswana",tr:"Turkish",tk:"Turkmen",uk:"Ukrainian",hsb:"Upper Sorbian",ur:"Urdu",ve:"Venda",vi:"Vietnamese",vo:"Volapuk",wa:"Walloon",cy:"Welsh",xh:"Xhosa",ji:"Yiddish",zu:"Zulu"}[t]&&(this.internal.languageSettings.languageCode=t, !1===this.internal.languageSettings.isSubscribed&&(this.internal.events.subscribe("putCatalog",function(){this.internal.write("/Lang ("+this.internal.languageSettings.languageCode+")");}), this.internal.languageSettings.isSubscribed=!0)), this}, B=$.API, R=B.getCharWidthsArray=function(t,e){var n,r,i,o=(e=e||{}).font||this.internal.getFont(),a=e.fontSize||this.internal.getFontSize(),s=e.charSpace||this.internal.getCharSpace(),h=e.widths?e.widths:o.metadata.Unicode.widths,c=h.fof?h.fof:1,l=e.kerning?e.kerning:o.metadata.Unicode.kerning,u=l.fof?l.fof:1,f=0,d=h[0]||c,p=[];for(n=0, r=t.length;n<r;n++)i=t.charCodeAt(n), "function"==typeof o.metadata.widthOfString?p.push((o.metadata.widthOfGlyph(o.metadata.characterToGlyph(i))+s*(1e3/a)||0)/1e3):p.push((h[i]||d)/c+(l[i]&&l[i][f]||0)/u), f=i;return p}, j=B.getArraySum=function(t){for(var e=t.length,n=0;e;)n+=t[--e];return n}, D=B.getStringUnitWidth=function(t,e){var n=(e=e||{}).fontSize||this.internal.getFontSize(),r=e.font||this.internal.getFont(),i=e.charSpace||this.internal.getCharSpace();return"function"==typeof r.metadata.widthOfString?r.metadata.widthOfString(t,n,i)/n:j(R.apply(this,arguments))}, M=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 h=o;for(s=0;o!==a;)s+e[o]>r&&(i.push(t.slice(h,o)), s=0, h=o), s+=e[o], o++;return h!==o&&i.push(t.slice(h,o)), i}, U=function(t,e,n){n||(n={});var r,i,o,a,s,h,c=[],l=[c],u=n.textIndent||0,f=0,d=0,p=t.split(" "),g=R.apply(this,[" ",n])[0];if(h=-1===n.lineIndent?p[0].length+2:n.lineIndent||0){var m=Array(h).join(" "),w=[];p.map(function(t){1<(t=t.split(/\s*\n/)).length?w=w.concat(t.map(function(t,e){return(e&&t.length?"\n":"")+t})):w.push(t[0]);}), p=w, h=D.apply(this,[m,n]);}for(o=0, a=p.length;o<a;o++){var y=0;if(r=p[o], h&&"\n"==r[0]&&(r=r.substr(1), y=1), i=R.apply(this,[r,n]), e<u+f+(d=j(i))||y){if(e<d){for(s=M.apply(this,[r,i,e-(u+f),e]), c.push(s.shift()), c=[s.pop()];s.length;)l.push([s.shift()]);d=j(i.slice(r.length-(c[0]?c[0].length:0)));}else c=[r];l.push(c), u=d+h, f=g;}else c.push(r), u+=f+d, f=g;}if(h)var v=function(t,e){return(e?m:"")+t.join(" ")};else v=function(t){return t.join(" ")};return l.map(v)}, B.splitTextToSize=function(t,e,n){var r,i=(n=n||{}).fontSize||this.internal.getFontSize(),o=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}:{font:r.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}.call(this,n);r=Array.isArray(t)?t:t.split(/\r?\n/);var a=1*this.internal.scaleFactor*e/i;o.textIndent=n.textIndent?1*n.textIndent*this.internal.scaleFactor/i:0, o.lineIndent=n.lineIndent;var s,h,c=[];for(s=0, h=r.length;s<h;s++)c=c.concat(U.apply(this,[r[s],a,o]));return c}, N=$.API, L={codePages:["WinAnsiEncoding"],WinAnsiEncoding:(z=function(t){for(var e="klmnopqrstuvwxyz",n={},r=0;r<e.length;r++)n[e[r]]="0123456789abcdef"[r];var i,o,a,s,h,c={},l=1,u=c,f=[],d="",p="",g=t.length-1;for(r=1;r!=g;)h=t[r], r+=1, "'"==h?o?(s=o.join(""), o=i):o=[]:o?o.push(h):"{"==h?(f.push([u,s]), u={}, s=i):"}"==h?((a=f.pop())[0][a[1]]=u, s=i, u=a[0]):"-"==h?l=-1:s===i?n.hasOwnProperty(h)?(d+=n[h], s=parseInt(d,16)*l, l=1, d=""):d+=h:n.hasOwnProperty(h)?(p+=n[h], u[s]=parseInt(p,16)*l, l=1, s=i, p=""):p+=h;return c})("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")}, H={Unicode:{Courier:L,"Courier-Bold":L,"Courier-BoldOblique":L,"Courier-Oblique":L,Helvetica:L,"Helvetica-Bold":L,"Helvetica-BoldOblique":L,"Helvetica-Oblique":L,"Times-Roman":L,"Times-Bold":L,"Times-BoldItalic":L,"Times-Italic":L}
95/** 
96    Resources:
97    Font metrics data is reprocessed derivative of contents of
98    "Font Metrics for PDF Core 14 Fonts" package, which exhibits the following copyright and license:
99    
100    Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
101    
102    This file and the 14 PostScript(R) AFM files it accompanies may be used,
103    copied, and distributed for any purpose and without charge, with or without
104    modification, provided that all copyright notices are retained; that the AFM
105    files are not distributed without this file; that all modifications to this
106    file or any of the AFM files are prominently noted in the modified file(s);
107    and that this paragraph is not modified. Adobe Systems has no responsibility
108    or obligation to support the use of the AFM files.
109    
110    */}, W={Unicode:{"Courier-Oblique":z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-BoldItalic":z("{'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":z("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'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:z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-BoldOblique":z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Bold":z("{'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}}}"),Symbol:z("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"),Helvetica:z("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'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":z("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'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}}}"),ZapfDingbats:z("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-Bold":z("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Italic":z("{'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}
110fv{17su5tu5qs}fw{17su5tu5qs}}}"),"Times-Roman":z("{'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":z("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4y
110dn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'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}}}")}}, N.events.push(["addFont",function(t){var e,n,r,i="Unicode";(e=W[i][t.postScriptName])&&((n=t.metadata[i]?t.metadata[i]:t.metadata[i]={}).widths=e.widths, n.kerning=e.kerning), (r=H[i][t.postScriptName])&&((n=t.metadata[i]?t.metadata[i]:t.metadata[i]={}).encoding=r).codePages&&r.codePages.length&&(t.encoding=r.codePages[0]);}]), G=$, "undefined"!=typeof self&&self||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||"undefined"!=typeof window&&window||Function("return this")(), G.API.events.push(["addFont",function(t){G.API.existsFileInVFS(t.postScriptName)?(t.metadata=G.API.TTFFont.open(t.postScriptName,t.fontName,G.API.getFileFromVFS(t.postScriptName),t.encoding), t.metadata.Unicode=t.metadata.Unicode||{encoding:{},kerning:{},widths:[]}):14<t.id.slice(1)&&console.error("Font does not exist in FileInVFS, import fonts or remove declaration doc.addFont('"+t.postScriptName+"').");}]), (
111/** @preserve
112  jsPDF SVG plugin
113  Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
114  */
115V=$.API).addSvg=function(t,e,n,r,i){if(void 0===e||void 0===n)throw new Error("addSVG needs values for 'x' and 'y'");function o(t){for(var e=parseFloat(t[1]),n=parseFloat(t[2]),r=[],i=3,o=t.length;i<o;)"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 a,s,h,c,l,u,f,d,p=(c=document, d=c.createElement("iframe"), l=".jsPDF_sillysvg_iframe {display:none;position:absolute;}", (f=(u=c).createElement("style")).type="text/css", f.styleSheet?f.styleSheet.cssText=l:f.appendChild(u.createTextNode(l)), u.getElementsByTagName("head")[0].appendChild(f), d.name="childframe", d.setAttribute("width",0), d.setAttribute("height",0), d.setAttribute("frameborder","0"), d.setAttribute("scrolling","no"), d.setAttribute("seamless","seamless"), d.setAttribute("class","jsPDF_sillysvg_iframe"), c.body.appendChild(d), d),g=(a=t, (h=((s=p).contentWindow||s.contentDocument).document).write(a), h.close(), h.getElementsByTagName("svg")[0]),m=[1,1],w=parseFloat(g.getAttribute("width")),y=parseFloat(g.getAttribute("height"));w&&y&&(r&&i?m=[r/w,i/y]:r?m=[r/w,r/w]:i&&(m=[i/y,i/y]));var v,b,x,S,k=g.childNodes;for(v=0, b=k.length;v<b;v++)(x=k[v]).tagName&&"PATH"===x.tagName.toUpperCase()&&((S=o(x.getAttribute("d").split(" ")))[0]=S[0]*m[0]+e, S[1]=S[1]*m[1]+n, this.lines.call(this,S[2],S[0],S[1],m));return this}, V.addSVG=V.addSvg, V.addSvgAsImage=function(t,e,n,r,i,o,a,s){if
115(isNaN(e)||isNaN(n))throw console.error("jsPDF.addSvgAsImage: Invalid coordinates",arguments), new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");if(isNaN(r)||isNaN(i))throw console.error("jsPDF.addSvgAsImage: Invalid measurements",arguments), new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");var h=document.createElement("canvas");h.width=r, h.height=i;var c=h.getContext("2d");return c.fillStyle="#fff", c.fillRect(0,0,h.width,h.height), canvg(h,t,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0}), this.addImage(h.toDataURL("image/jpeg",1),e,n,r,i,a,s), this}, $.API.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}, $.API.viewerPreferences=function(t,e){var n;t=t||{}, e=e||!1;var r,i,o={HideToolbar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:"UseNone",value:"UseNone",type:"name",explicitSet:!1,valueSet:["UseNone","UseOutlines","UseThumbs","UseOC"],pdfVersion:1.3},Direction:{defaultValue:"L2R",value:"L2R",type:"name",explicitSet:!1,valueSet:["L2R","R2L"],pdfVersion:1.3},ViewArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},ViewClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintScaling:{defaultValue:"AppDefault",value:"AppDefault",type:"name",explicitSet:!1,valueSet:["AppDefault","None"],pdfVersion:1.6},Duplex:{defaultValue:"",value:"none",type:"name",explicitSet:!1,valueSet:["Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","none"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:"",value:"",type:"array",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:"integer",explicitSet:!1,valueSet:null,pdfVersion:1.7}},a=Object.keys(o),s=[],h=0,c=0,l=0,u=!0;function f(t,e){var n,r=!1;for(n=0;n<t.length;n+=1)t[n]===e&&(r=!0);return r}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={}, this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(o)), this.internal.viewerpreferences.isSubscribed=!1), n=this.internal.viewerpreferences.configuration, "reset"===t||!0===e){var d=a.length;for(l=0;l<d;l+=1)n[a[l]].value=n[a[l]].defaultValue, n[a[l]].explicitSet=!1;}if("object"===(void 0===t?"undefined":vt(t)))for(r in t)if(i=t[r], f(a,r)&&void 0!==i){if("boolean"===n[r].type&&"boolean"==typeof i)n[r].value=i;else if("name"===n[r].type&&f(n[r].valueSet,i))n[r].value=i;else if("integer"===n[r].type&&Number.isInteger(i))n[r].value=i;else if("array"===n[r].type){for(h=0;h<i.length;h+=1)if(u=!0, 1===i[h].length&&"number"==typeof i[h][0])s.push(String(i[h]));else if(1<i[h].length){for(c=0;c<i[h].length;c+=1)"number"!=typeof i[h][c]&&(u=!1);!0===u&&s.push(String(i[h].join("-")));}n[r].value=String(s);}else n[r].value=n[r].defaultValue;n[r].explicitSet=!0;}return!1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe("putCatalog",function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&("name"===n[t].type?e.push("/"+t+" /"+n[t].value):e.push("/"+t+" "+n[t].value));0!==e.length&&this.internal.write("/ViewerPreferences\n<<\n"+e.join("\n")+"\n>>");}), this.internal.viewerpreferences.isSubscribed=!0), this.internal.viewerpreferences.configuration=n, this}, Y=$.API, K=J=X="", Y.addMetadata=function(t,e){return J=e||"http://jspdf.default.namespaceuri/", X=t, this.internal.events.subscribe("postPutResources",function(){if(X){var t='<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="'+J+'"><jspdf:metadata>',e=unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">')),n=unescape(encodeURIComponent(t)),r=unescape(encodeURIComponent(X)),i=unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>")),o=unescape(encodeURIComponent("</x:xmpmeta>")),a=n.length+r.length+i.length+e.length+o.length;K=this.internal.newObject(), this.internal.write("<< /Type /Metadata /Subtype /XML /Length "+a+" >>"), this.internal.write("stream"), this.internal.write(e+n+r+i+o), this.internal.write("endstream"), this.internal.write("endobj");}else K="";}), this.internal.events.subscribe("putCatalog",function(){K&&this.internal.write("/Metadata "+K+" 0 R");}), this}, function(l,t){var e=l.API,m=[0];e.events.push(["putFont",function(t){!function(t,e,n){if(t.metadata instanceof l.API.TTFFont&&"Identity-H"===t.encoding){for(var r=t.metadata.Unicode.widths,i=t.metadata.subset.encode(m),o="",a=0;a<i.length;a++)o+=String.fromCharCode(i[a]);var s=n();e("<<"), e("/Length "+o.length), e("/Length1 "+o.length), e(">>"), e("stream"), e(o), e("endstream"), e("endobj");var h=n();e("<<"), e("/Type /FontDescriptor"), e("/FontName /"+t.fontName), e("/FontFile2 "+s+" 0 R"), e("/FontBBox "+l.API.PDFObject.convert(t.metadata.bbox)), e("/Flags "+t.metadata.flags), e("/StemV "+t.metadata.stemV), e("/ItalicAngle "+t.metadata.italicAngle), e("/Asce
115nt "+t.metadata.ascender), e("/Descent "+t.metadata.decender), e("/CapHeight "+t.metadata.capHeight), e(">>"), e("endobj");var c=n();e("<<"), e("/Type /Font"), e("/BaseFont /"+t.fontName), e("/FontDescriptor "+h+" 0 R"), e("/W "+l.API.PDFObject.convert(r)), e("/CIDToGIDMap /Identity"), e("/DW 1000"), e("/Subtype /CIDFontType2"), e("/CIDSystemInfo"), e("<<"), e("/Supplement 0"), e("/Registry (Adobe)"), e("/Ordering ("+t.encoding+")"), e(">>"), e(">>"), e("endobj"), t.objectNumber=n(), e("<<"), e("/Type /Font"), e("/Subtype /Type0"), e("/BaseFont /"+t.fontName), e("/Encoding /"+t.encoding), e("/DescendantFonts ["+c+" 0 R]"), e(">>"), e("endobj"), t.isAlreadyPutted=!0;}}(t.font,t.out,t.newObject);}]);e.events.push(["putFont",function(t){!function(t,e,n){if(t.metadata instanceof l.API.TTFFont&&"WinAnsiEncoding"===t.encoding){t.metadata.Unicode.widths;for(var r=t.metadata.rawData,i="",o=0;o<r.length;o++)i+=String.fromCharCode(r[o]);var a=n();e("<<"), e("/Length "+i.length), e("/Length1 "+i.length), e(">>"), e("stream"), e(i), e("endstream"), e("endobj");var s=n();for(e("<<"), e("/Descent "+t.metadata.decender), e("/CapHeight "+t.metadata.capHeight), e("/StemV "+t.metadata.stemV), e("/Type /FontDescriptor"), e("/FontFile2 "+a+" 0 R"), e("/Flags 96"), e("/FontBBox "+l.API.PDFObject.convert(t.metadata.bbox)), e("/FontName /"+t.fontName), e("/ItalicAngle "+t.metadata.italicAngle), e("/Ascent "+t.metadata.ascender), e(">>"), e("endobj"), t.objectNumber=n(), o=0;o<t.metadata.hmtx.widths.length;o++)t.metadata.hmtx.widths[o]=parseInt(t.metadata.hmtx.widths[o]*(1e3/t.metadata.head.unitsPerEm));e("<</Subtype/TrueType/Type/Font/BaseFont/"+t.fontName+"/FontDescriptor "+s+" 0 R/Encoding/"+t.encoding+" /FirstChar 29 /LastChar 255 /Widths "+l.API.PDFObject.convert(t.metadata.hmtx.widths)+">>"), e("endobj"), t.isAlreadyPutted=!0;}}(t.font,t.out,t.newObject);}]);var c=function(t){var e,n,r=t.text||"",i=t.x,o=t.y,a=t.options||{},s=t.mutex||{},h=s.pdfEscape,c=s.activeFontKey,l=s.fonts,u=(s.activeFontSize, ""),f=0,d="",p=l[n=c].encoding;if("Identity-H"!==l[n].encoding)return{text:r,x:i,y:o,options:a,mutex:s};for(d=r, n=c, "[object Array]"===Object.prototype.toString.call(r)&&(d=r[0]), f=0;f<d.length;f+=1)l[n].metadata.hasOwnProperty("cmap")&&(e=l[n].metadata.cmap.unicode.codeMap[d[f].charCodeAt(0)]), e?u+=d[f]:d[f].charCodeAt(0)<256&&l[n].metadata.hasOwnProperty("Unicode")?u+=d[f]:u+="";var g="";return parseInt(n.slice(1))<14||"WinAnsiEncoding"===p?g=function(t){for(var e="",n=0;n<t.length;n++)e+=""+t.charCodeAt(n).toString(16);return e}(h(u,n)):"Identity-H"===p&&(g=function(t,e){for(var n,r=e.metadata.Unicode.widths,i=["","0","00","000","0000"],o=[""],a=0,s=t.length;a<s;++a){if(n=e.metadata.characterToGlyph(t.charCodeAt(a)), m.push(n), -1==r.indexOf(n)&&(r.push(n), r.push([parseInt(e.metadata.widthOfGlyph(n),10)])), "0"==n)return o.join("");n=n.toString(16), o.push(i[4-n.length],n);}return o.join("")}(u,l[n])), s.isHex=!0, {text:g,x:i,y:o,options:a,mutex:s}};e.events.push(["postProcessText",function(t){var e=t.text||"",n=t.x,r=t.y,i=t.options,o=t.mutex,a=(i.lang, []),s={text:e,x:n,y:r,options:i,mutex:o};if("[object Array]"===Object.prototype.toString.call(e)){var h=0;for(h=0;h<e.length;h+=1)"[object Array]"===Object.prototype.toString.call(e[h])&&3===e[h].length?a.push([c(Object.assign({},s,{text:e[h][0]})).text,e[h][1],e[h][2]]):a.push(c(Object.assign({},s,{text:e[h]})).text);t.text=a;}else t.text=c(Object.assign({},s,{text:e})).text;}]);}($,"undefined"!=typeof self&&self||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||"undefined"!=typeof window&&window||Function("return this")()), Q=$.API, Z={}, Q.existsFileInVFS=function(t){return Z.hasOwnProperty(t)}, Q.addFileToVFS=function(t,e){return Z[t]=e, this}, Q.getFileFromVFS=function(t){return Z.hasOwnProperty(t)?Z[t]:null}, function(t){if(t.URL=t.URL||t.webkitURL, t.Blob&&t.URL)try{return new Blob}catch(t){}var s=t.BlobBuilder||t.WebKitBlobBuilder||t.MozBlobBuilder||function(t){var s=function(t){return Object.prototype.toString.call(t).match(/^\[object\s(.*)\]$/)[1]},e=function(){this.data=[];},h=function(t,e,n){this.data=t, this.size=t.length, this.type=e, this.encoding=n;},n=e.prototype,r=h.prototype,c=t.FileReaderSync,l=function(t){this.co
115de=this[this.name=t];},i="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),o=i.length,a=t.URL||t.webkitURL||t,u=a.createObjectURL,f=a.revokeObjectURL,d=a,p=t.btoa,g=t.atob,m=t.ArrayBuffer,w=t.Uint8Array,y=/^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;for(h.fake=r.fake=!0;o--;)l.prototype[i[o]]=o+1;return a.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 h?(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)):u?u.call(a,t):void 0}, d.revokeObjectURL=function(t){"data:"!==t.substring(0,5)&&f&&f.call(a,t);}, n.append=function(t){var e=this.data;if(w&&(t instanceof m||t instanceof w)){for(var n="",r=new w(t),i=0,o=r.length;i<o;i++)n+=String.fromCharCode(r[i]);e.push(n);}else if("Blob"===s(t)||"File"===s(t)){if(!c)throw new l("NOT_READABLE_ERR");var a=new c;e.push(a.readAsBinaryString(t));}else t instanceof h?"base64"===t.encoding&&g?e.push(g(t.data)):"URI"===t.encoding?e.push(decodeURIComponent(t.data)):"raw"===t.encoding&&e.push(t.data):("string"!=typeof t&&(t+=""), e.push(unescape(encodeURIComponent(t))));}, n.getBlob=function(t){return arguments.length||(t=null), new h(this.data.join(""),t,"raw")}, n.toString=function(){return"[object BlobBuilder]"}, r.slice=function(t,e,n){var r=arguments.length;return r<3&&(n=null), new h(this.data.slice(t,1<r?e:this.data.length),n,this.encoding)}, r.toString=function(){return"[object Blob]"}, r.close=function(){this.size=0, delete this.data;}, e}(t);t.Blob=function(t,e){var n=e&&e.type||"",r=new s;if(t)for(var i=0,o=t.length;i<o;i++)Uint8Array&&t[i]instanceof Uint8Array?r.append(t[i].buffer):r.append(t[i]);var a=r.getBlob(n);return!a.slice&&a.webkitSlice&&(a.slice=a.webkitSlice), a};var e=Object.getPrototypeOf||function(t){return t.__proto__};t.Blob.prototype=e(new t.Blob);}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||window.content||window);var tt,et,nt,rt,it,ot,at,st,ht,ct,lt,ut,ft,dt,pt,gt,bt=bt||function(s){if(!(void 0===s||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var t=s.document,h=function(){return s.URL||s.webkitURL||s},c=t.createElementNS("http://www.w3.org/1999/xhtml","a"),l="download"in c,u=/constructor/i.test(s.HTMLElement)||s.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),d=function(t){(s.setImmediate||s.setTimeout)(function(){throw t},0);},p=function(t){setTimeout(function(){"string"==typeof t?h().revokeObjectURL(t):t.remove();},4e4);},g=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},r=function(t,n,e){e||(t=g(t));var r,i=this,o="application/octet-stream"===t.type,a=function(){!function(t,e,n){for(var r=(e=[].concat(e)).length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t);}catch(t){d(t);}}}(i,"writestart progress write writeend".split(" "));};if(i.readyState=i.INIT, l)return r=h().createObjectURL(t), void setTimeout(function(){var t,e;c.href=r, c.download=n, t=c, e=new MouseEvent("click"), t.dispatchEvent(e), a(), p(r), i.readyState=i.DONE;});!function(){if((f||o&&u)&&s.FileReader){var e=new FileReader;return e.onloadend=function(){var t=f?e.result:e.result.replace(/^data:[^;]*;/,"data:attachment/file;");s.open(t,"_blank")||(s.location.href=t), t=void 0, i.readyState=i.DONE, a();}, e.readAsDataURL(t), i.readyState=i.INIT}r||(r=h().createObjectURL(t)), o?s.location.href=r:s.open(r,"_blank")||(s.location.href=r);i.readyState=i.DONE, a(), p(r);}();},e=r.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return e=e||t.name||"download", n||(t=g(t)), navigator.msSaveOrOpenBlob(t,e)}:(e.abort=function(){}, e.readyState=e.INIT=0, e.WRITING=1, e.DONE=2, e.error=e.onwritestart=e.onprogress=e.onwrite=e.onabort=e.onerror=e.onwriteend=null, function(t,e,n){return new r(t,e||t.name||"download",n)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||window.content);function mt(x){var t=0;if(71!==x[t++]||73!==x[t++]||70!==x[t++]||56!==x[t++]||56!=(x[t++]+1&253)||97!==x[t++])throw"Invalid GIF 87a/89a header.";var S=x[t++]|x[t++]<<8,e=x[t++]|x[t++]<<8,n=x[t++],r=n>>7,i=1<<(7&n)+1;x[t++];x[t++];var o=null;r&&(o=t, t+=3*i);var a=!0,s=[],h=0,c=null,l=0,u=null;for(this.width=S, this.height=e;a&&t<x.length;)switch(x[t++]){case 33:switch(x[t++]){case 255:if(11!==x[t]||78==x[t+1]&&69==x[t+2]&&84==x[t+3]&&83==x[t+4]&&67==x[t+5]&&65==x[t+6]&&80==x[t+7]&&69==x[t+8]&&50==x[t+9]&&46==x[t+10]&&48==x[t+11]&&3==x[t+12]&&1==x[t+13]&&0==x[t+16]
115)t+=14, u=x[t++]|x[t++]<<8, t++;else for(t+=12;;){if(0===(_=x[t++]))break;t+=_;}break;case 249:if(4!==x[t++]||0!==x[t+4])throw"Invalid graphics extension block.";var f=x[t++];h=x[t++]|x[t++]<<8, c=x[t++], 0==(1&f)&&(c=null), l=f>>2&7, t++;break;case 254:for(;;){if(0===(_=x[t++]))break;t+=_;}break;default:throw"Unknown graphic control label: 0x"+x[t-1].toString(16)}break;case 44:var d=x[t++]|x[t++]<<8,p=x[t++]|x[t++]<<8,g=x[t++]|x[t++]<<8,m=x[t++]|x[t++]<<8,w=x[t++],y=w>>6&1,v=o,b=!1;if(w>>7){b=!0;v=t, t+=3*(1<<(7&w)+1);}var k=t;for(t++;;){var _;if(0===(_=x[t++]))break;t+=_;}s.push({x:d,y:p,width:g,height:m,has_local_palette:b,palette_offset:v,data_offset:k,data_length:t-k,transparent_index:c,interlaced:!!y,delay:h,disposal:l});break;case 59:a=!1;break;default:throw"Unknown gif block: 0x"+x[t-1].toString(16)}this.numFrames=function(){return s.length}, this.loopCount=function(){return u}, this.frameInfo=function(t){if(t<0||t>=s.length)throw"Frame index out of range.";return s[t]}, this.decodeAndBlitFrameBGRA=function(t,e){var n=this.frameInfo(t),r=n.width*n.height,i=new Uint8Array(r);wt(x,n.data_offset,i,r);var o=n.palette_offset,a=n.transparent_index;null===a&&(a=256);var s=n.width,h=S-s,c=s,l=4*(n.y*S+n.x),u=4*((n.y+n.height)*S+n.x),f=l,d=4*h;!0===n.interlaced&&(d+=4*(s+h)*7);for(var p=8,g=0,m=i.length;g<m;++g){var w=i[g];if(0===c&&(c=s, u<=(f+=d)&&(d=h+4*(s+h)*(p-1), f=l+(s+h)*(p<<1), p>>=1)), w===a)f+=4;else{var y=x[o+3*w],v=x[o+3*w+1],b=x[o+3*w+2];e[f++]=b, e[f++]=v, e[f++]=y, e[f++]=255;}--c;}}, this.decodeAndBlitFrameRGBA=function(t,e){var n=this.frameInfo(t),r=n.width*n.height,i=new Uint8Array(r);wt(x,n.data_offset,i,r);var o=n.palette_offset,a=n.transparent_index;null===a&&(a=256);var s=n.width,h=S-s,c=s,l=4*(n.y*S+n.x),u=4*((n.y+n.height)*S+n.x),f=l,d=4*h;!0===n.interlaced&&(d+=4*(s+h)*7);for(var p=8,g=0,m=i.length;g<m;++g){var w=i[g];if(0===c&&(c=s, u<=(f+=d)&&(d=h+4*(s+h)*(p-1), f=l+(s+h)*(p<<1), p>>=1)), w===a)f+=4;else{var y=x[o+3*w],v=x[o+3*w+1],b=x[o+3*w+2];e[f++]=y, e[f++]=v, e[f++]=b, e[f++]=255;}--c;}};}function wt(t,e,n,r){for(var i=t[e++],o=1<<i,a=o+1,s=a+1,h=i+1,c=(1<<h)-1,l=0,u=0,f=0,d=t[e++],p=new Int32Array(4096),g=null;;){for(;l<16&&0!==d;)u|=t[e++]<<l, l+=8, 1===d?d=t[e++]:--d;if(l<h)break;var m=u&c;if(u>>=h, l-=h, m!==o){if(m===a)break;for(var w=m<s?m:g,y=0,v=w;o<v;)v=p[v]>>8, ++y;var b=v;if(r<f+y+(w!==m?1:0))return void console.log("Warning, gif stream longer than expected.");n[f++]=b;var x=f+=y;for(w!==m&&(n[f++]=b), v=w;y--;)v=p[v], n[--x]=255&v, v>>=8;null!==g&&s<4096&&(p[s++]=g<<8|b, c+1<=s&&h<12&&(++h, c=c<<1|1)), g=m;}else s=a+1, c=(1<<(h=i+1))-1, g=null;}return f!==r&&console.log("Warning, gif stream shorter than expected."), n}"undefined"!='object'&&module.exports?module.exports.saveAs=bt:"undefined"!=typeof undefined&&null!==undefined&&null!==undefined.amd&&undefined("FileSaver.js",function(){return bt}), $.API.adler32cs=(ot="function"==typeof ArrayBuffer&&"function"==typeof Uint8Array, at=null, st=function(){if(!ot)return function(){return!1};try{var t={};"function"==typeof t.Buffer&&(at=t.Buffer);}catch(t){}return function(t){return t instanceof ArrayBuffer||null!==at&&t instanceof at}}(), ht=null!==at?function(t){return new at(t,"utf8").toString("binary")}:function(t){return unescape(encodeURIComponent(t))}, ct=65521, lt=function(t,e){for(var n=65535&t,r=t>>>16,i=0,o=e.length;i<o;i++)n=(n+(255&e.charCodeAt(i)))%ct, r=(r+n)%ct;return(r<<16|n)>>>0}, ut=function(t,e){for(var n=65535&t,r=t>>>16,i=0,o=e.length;i<o;i++)n=(n+e[i])%ct, r=(r+n)%ct;return(r<<16|n)>>>0}, dt=(ft={}).Adler32=(((it=(rt=function(t){if(!(this instanceof rt))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;}).prototype={}).constructor=rt).from=((tt=function(t){if(!(this instanceof rt))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=lt(1,t.toString());}).prototype=it, tt), rt.fromUtf8=((et=function(t){if(!(this instanceof rt))throw new TypeError("Constructor cannot called be as a function.");
115if(null==t)throw new Error("First argument needs to be a string.");var e=ht(t.toString());this.checksum=lt(1,e);}).prototype=it, et), ot&&(rt.fromBuffer=((nt=function(t){if(!(this instanceof rt))throw new TypeError("Constructor cannot called be as a function.");if(!st(t))throw new Error("First argument needs to be ArrayBuffer.");var e=new Uint8Array(t);return this.checksum=ut(1,e)}).prototype=it, nt)), it.update=function(t){if(null==t)throw new Error("First argument needs to be a string.");return t=t.toString(), this.checksum=lt(this.checksum,t)}, it.updateUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=ht(t.toString());return this.checksum=lt(this.checksum,e)}, ot&&(it.updateBuffer=function(t){if(!st(t))throw new Error("First argument needs to be ArrayBuffer.");var e=new Uint8Array(t);return this.checksum=ut(this.checksum,e)}), it.clone=function(){return new dt(this.checksum)}, rt), ft.from=function(t){if(null==t)throw new Error("First argument needs to be a string.");return lt(1,t.toString())}, ft.fromUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=ht(t.toString());return lt(1,e)}, ot&&(ft.fromBuffer=function(t){if(!st(t))throw new Error("First argument need to be ArrayBuffer.");var e=new Uint8Array(t);return ut(1,e)}), ft);try{exports.GifWriter=function(w,t,e,n){var y=0,r=void 0===(n=void 0===n?{}:n).loop?null:n.loop,v=void 0===n.palette?null:n.palette;if(t<=0||e<=0||65535<t||65535<e)throw"Width/Height invalid.";function b(t){var e=t.length;if(e<2||256<e||e&e-1)throw"Invalid code/color length, must be power of 2 and 2 .. 256.";return e}w[y++]=71, w[y++]=73, w[y++]=70, w[y++]=56, w[y++]=57, w[y++]=97;var i=0,o=0;if(null!==v){for(var a=b(v);a>>=1;)++i;if(a=1<<i, --i, void 0!==n.background){if(a<=(o=n.background))throw"Background index out of range.";if(0===o)throw"Background index explicitly passed as 0."}}if(w[y++]=255&t, w[y++]=t>>8&255, w[y++]=255&e, w[y++]=e>>8&255, w[y++]=(null!==v?128:0)|i, w[y++]=o, w[y++]=0, null!==v)for(var s=0,h=v.length;s<h;++s){var c=v[s];w[y++]=c>>16&255, w[y++]=c>>8&255, w[y++]=255&c;}if(null!==r){if(r<0||65535<r)throw"Loop count invalid.";w[y++]=33, w[y++]=255, w[y++]=11, w[y++]=78, w[y++]=69, w[y++]=84, w[y++]=83, w[y++]=67, w[y++]=65, w[y++]=80, w[y++]=69, w[y++]=50, w[y++]=46, w[y++]=48, w[y++]=3, w[y++]=1, w[y++]=255&r, w[y++]=r>>8&255, w[y++]=0;}var x=!1;this.addFrame=function(t,e,n,r,i,o){if(!0===x&&(--y, x=!1), o=void 0===o?{}
115:o, t<0||e<0||65535<t||65535<e)throw"x/y invalid.";if(n<=0||r<=0||65535<n||65535<r)throw"Width/Height invalid.";if(i.length<n*r)throw"Not enough pixels for the frame size.";var a=!0,s=o.palette;if(null==s&&(a=!1, s=v), null==s)throw"Must supply either a local or global palette.";for(var h=b(s),c=0;h>>=1;)++c;h=1<<c;var l=void 0===o.delay?0:o.delay,u=void 0===o.disposal?0:o.disposal;if(u<0||3<u)throw"Disposal out of range.";var f=!1,d=0;if(void 0!==o.transparent&&null!==o.transparent&&(f=!0, (d=o.transparent)<0||h<=d))throw"Transparent color index.";if((0!==u||f||0!==l)&&(w[y++]=33, w[y++]=249, w[y++]=4, w[y++]=u<<2|(!0===f?1:0), w[y++]=255&l, w[y++]=l>>8&255, w[y++]=d, w[y++]=0), w[y++]=44, w[y++]=255&t, w[y++]=t>>8&255, w[y++]=255&e, w[y++]=e>>8&255, w[y++]=255&n, w[y++]=n>>8&255, w[y++]=255&r, w[y++]=r>>8&255, w[y++]=!0===a?128|c-1:0, !0===a)for(var p=0,g=s.length;p<g;++p){var m=s[p];w[y++]=m>>16&255, w[y++]=m>>8&255, w[y++]=255&m;}y=function(e,n,t,r){e[n++]=t;var i=n++,o=1<<t,a=o-1,s=o+1,h=s+1,c=t+1,l=0,u=0;function f(t){for(;t<=l;)e[n++]=255&u, u>>=8, l-=8, n===i+256&&(e[i]=255, i=n++);}function d(t){u|=t<<l, l+=c, f(8);}var p=r[0]&a,g={};d(o);for(var m=1,w=r.length;m<w;++m){var y=r[m]&a,v=p<<8|y,b=g[v];if(void 0===b){for(u|=p<<l, l+=c;8<=l;)e[n++]=255&u, u>>=8, l-=8, n===i+256&&(e[i]=255, i=n++);4096===h?(d(o), h=s+1, c=t+1, g={}):(1<<c<=h&&++c, g[v]=h++), p=y;}else p=b;}return d(p), d(s), f(1), i+1===n?e[i]=0:(e[i]=n-i-1, e[n++]=0), n}(w,y,c<2?2:c,i);}, this.end=function(){return!1===x&&(w[y++]=59, x=!0), y};}, exports.GifReader=mt;}catch(t){}
116/*
117    Copyright (c) 2008, Adobe Systems Incorporated
118    All rights reserved.
119
120    Redistribution and use in source and binary forms, with or without 
121    modification, are permitted provided that the following conditions are
122    met:
123
124    * Redistributions of source code must retain the above copyright notice, 
125      this list of conditions and the following disclaimer.
126    
127    * Redistributions in binary form must reproduce the above copyright
128      notice, this list of conditions and the following disclaimer in the 
129      documentation and/or other materials provided with the distribution.
130    
131    * Neither the name of Adobe Systems Incorporated nor the names of its 
132      contributors may be used to endorse or promote products derived from 
133      this software without specific prior written permission.
134
135    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
136    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
137    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
138    PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
139    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
140    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
141    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
142    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
143    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
144    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
145    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
146  */function yt(t){var S,k,_,A,e,u=Math.floor,I=new Array(64),C=new Array(64),T=new Array(64),F=new Array(64),w=new Array(65535),y=new Array(65535),Q=new Array(64),v=new Array(64),P=[],E=0,q=7,O=new Array(64),B=new Array(64),R=new Array(64),n=new Array(256),j=new Array(2048),b=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],D=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],M=[0,1,2,3,4,5,6,7,8,9,10,11],U=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],N=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],z=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],L=[0,1,2,3,4,5,6,7,8,9,10,11],H=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],W=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function r(t,e){for(var n=0,r=0,i=new Array,o=1;o<=16;o++){for(var a=1;a<=t[o];a++)i[e[r]]=[], i[e[r]][0]=n, i[e[r]][1]=o, r++, n++;n*=2;}return i}function G(t){for(var e=t[0],n=t[1]-1;0<=n;)e&1<<n&&(E|=1<<q), n--, --q<0&&(255==E?(V(255), V(0)):V(E), q=7, E=0);}function V(t){P.push(t);}function Y(t){V(t>>8&255), V(255&t);}function X(t,e,n,r,i){for(var o,a=i[0],s=i[240],h=function(t,e){var n,r,i,o,a,s,h,c,l,u,f=0;for(l=0;l<8;++l){n=t[f], r=t[f+1], i=t[f+2], o=t[f+3], a=t[f+4], s=t[f+5], h=t[f+6];var d=n+(c=t[f+7]),p=n-c,g=r+h,m=r-h,w=i+s,y=i-s,v=o+a,b=o-a,x=d+v,S=d-v,k=g+w,_=g-w;t[f]=x+k, t[f+4]=x-k;var A=.707106781*(_+S);t[f+2]=S+A, t[f+6]=S-A;var I=.382683433*((x=b+y)-(_=m+p)),C=.5411961*x+I,T=1.306562965*_+I,F=.707106781*(k=y+m),P=p+F,E=p-F;t[f+5]=E+C, t[f+3]=E-C, t[f+1]=P+T, t[f+7]=P-T, f+=8;}for(l=f=0;l<8;++l){n=t[f], r=t[f+8], i=t[f+16], o=t[f+24], a=t[f+32], s=t[f+40], h=t[f+48];var q=n+(c=t[f+56]),O=n-c,B=r+h,R=r-h,j=i+s,D=i-s,M=o+a,U=o-a,N=q+M,z=q-M,L=B+j,H=B-j;t[f]=N+L, t[f+32]=N-L;var W=.707106781*(H+z);t[f+16]=z+W, t[f+48]=z-W;var G=.382683433*((N=U+D)-(H=R+O)),V=.5411961*N+G,Y=1.306562965*H+G,X=.707106781*(L=D+R),J=O+X,K=O-X;t[f+40]=K+V, t[f+24]=K-V, t[f+8]=J+Y, t[f+56]=J-Y, f++;}for(l=0;l<64;++l)u=t[l]*e[l], Q[l]=0<u?u+.5|0:u-.5|0;return Q}(t,e),c=0;c<64;++c)v[b[c]]=h[c];var l=v[0]-n;n=v[0], 0==l?G(r[0]):(G(r[y[o=32767+l]]), G(w[o]));for(var u=63;0<u&&0==v[u];u--);if(0==u)return G(a), n;for(var f,d=1;d<=u;){for(var p=d;0==v[d]&&d<=u;++d);var g=d-p;if(16<=g){f=g>>4;
146for(var m=1;m<=f;++m)G(s);g&=15;}o=32767+v[d], G(i[(g<<4)+y[o]]), G(w[o]), d++;}return 63!=u&&G(a), n}function J(t){if(t<=0&&(t=1), 100<t&&(t=100), e!=t){(function(t){for(var e=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],n=0;n<64;n++){var r=u((e[n]*t+50)/100);r<1?r=1:255<r&&(r=255), I[b[n]]=r;}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],o=0;o<64;o++){var a=u((i[o]*t+50)/100);a<1?a=1:255<a&&(a=255), C[b[o]]=a;}for(var s=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],h=0,c=0;c<8;c++)for(var l=0;l<8;l++)T[h]=1/(I[b[h]]*s[c]*s[l]*8), F[h]=1/(C[b[h]]*s[c]*s[l]*8), h++;})(t<50?Math.floor(5e3/t):Math.floor(200-2*t)), e=t;}}this.encode=function(t,e){var n,r;(new Date).getTime();e&&J(e), P=new Array, E=0, q=7, Y(65496), Y(65504), Y(16), V(74), V(70), V(73), V(70), V(0), V(1), V(1), V(0), Y(1), Y(1), V(0), V(0), function(){Y(65499), Y(132), V(0);for(var t=0;t<64;t++)V(I[t]);V(1);for(var e=0;e<64;e++)V(C[e]);}(), n=t.width, r=t.height, Y(65472), Y(17), V(8), Y(r), Y(n), V(3), V(1), V(17), V(0), V(2), V(17), V(1), V(3), V(17), V(1), function(){Y(65476), Y(418), V(0);for(var t=0;t<16;t++)V(D[t+1]);for(var e=0;e<=11;e++)V(M[e]);V(16);for(var n=0;n<16;n++)V(U[n+1]);for(var r=0;r<=161;r++)V(N[r]);V(1);for(var i=0;i<16;i++)V(z[i+1]);for(var o=0;o<=11;o++)V(L[o]);V(17);for(var a=0;a<16;a++)V(H[a+1]);for(var s=0;s<=161;s++)V(W[s]);}(), Y(65498), Y(12), V(3), V(1), V(0), V(2), V(17), V(3), V(17), V(0), V(63), V(0);var i=0,o=0,a=0;E=0, q=7, this.encode.displayName="_encode_";for(var s,h,c,l,u,f,d,p,g,m=t.data,w=t.width,y=t.height,v=4*w,b=0;b<y;){for(s=0;s<v;){for(f=u=v*b+s, d=-1, g=p=0;g<64;g++)f=u+(p=g>>3)*v+(d=4*(7&g)), y<=b+p&&(f-=v*(b+1+p-y)), v<=s+d&&(f-=s+d-v+4), h=m[f++], c=m[f++], l=m[f++], O[g]=(j[h]+j[c+256>>0]+j[l+512>>0]>>16)-128, B[g]=(j[h+768>>0]+j[c+1024>>0]+j[l+1280>>0]>>16)-128, R[g]=(j[h+1280>>0]+j[c+1536>>0]+j[l+1792>>0]>>16)-128;i=X(O,T,i,S,_), o=X(B,F,o,k,A), a=X(R,F,a,k,A), s+=32;}b+=8;}if(0<=q){var x=[];x[1]=q+1, x[0]=(1<<q+1)-1, G(x);}return Y(65497), new Uint8Array(P)}, function(){(new Date).getTime();t||(t=50), function(){for(var t=String.fromCharCode,e=0;e<256;e++)n[e]=t(e);}(), S=r(D,M), k=r(z,L), _=r(U,N), A=r(H,W), function(){for(var t=1,e=2,n=1;n<=15;n++){for(var r=t;r<e;r++)y[32767+r]=n, w[32767+r]=[], w[32767+r][1]=n, w[32767+r][0]=r;for(var i=-(e-1);i<=-t;i++)y[32767+i]=n, w[32767+i]=[], w[32767+i][1]=n, w[32767+i][0]=e-1+i;t<<=1, e<<=1;}}(), function(){for(var t=0;t<256;t++)j[t]=19595*t, j[t+256>>0]=38470*t, j[t+512>>0]=7471*t+32768, j[t+768>>0]=-11059*t, j[t+1024>>0]=-21709*t, j[t+1280>>0]=32768*t+8421375, j[t+1536>>0]=-27439*t, j[t+1792>>0]=-5329*t;}(), J(t), (new Date).getTime();}();}try{module.exports=yt;}catch(t){}function xt(t,e){if(this.pos=0, this.buffer=t, this.datav=new DataView(t.buffer), this.is_with_alpha=!!e, this.bottom_up=!0, this.flag=String.fromCharCode(this.buffer[0])+String.fromCharCode(this.buffer[1]), this.pos+=2, -1===["BM","BA","CI","CP","IC","PT"].indexOf(this.flag))throw new Error("Invalid BMP File");this.parseHeader(), this.parseBGR();}xt.prototype.parseHeader=function(){if(this.fileSize=this.datav.getUint32(this.pos,!0), this.pos+=4, this.reserved=this.datav.getUint32(this.pos,!0), this.pos+=4, this.offset=this.datav.getUint32(this.pos,!0), this.pos+=4, this.headerSize=this.datav.getUint32(this.pos,!0), this.pos+=4, this.width=this.datav.getUint32(this.pos,!0), this.pos+=4, this.height=this.datav.getInt32(this.pos,!0), this.pos+=4, this.planes=this.datav.getUint16(this.pos,!0), this.pos+=2, this.bitPP=this.datav.getUint16(this.pos,!0), this.pos+=2, this.compress=this.datav.getUint32(this.pos,!0), this.pos+=4, this.rawSize=this.datav.getUint32(this.pos,!0), this.pos+=4, this.hr=this.datav.getUint32(this.pos,!0), this.pos+=4, this.vr=this.datav.getUint32(this.pos,!0), this.pos+=4, this.colors=this.datav.getUint32(this.pos,!0), this.pos+=4, this.importantColors=this.datav.getUint32(this.pos,!0), this.pos+=4, 16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15), this.bitPP<15){var t=0===this.colors?1<<this.bitPP:this.colors;this.palette=new Array(t);for(var e=0;e<t;e++){var n=this.datav.getUint8(this.pos++,!0),r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0);this.palette[e]={red:i,green:r,blue:n,quad:o};}}this.height<0&&(this.height*=-1, this.bottom_up=!1);}, xt.prototype.parseBGR=function(){this.pos=this.offset;try{var t="bit"+this.bitPP,e=this.width*this.height*4;this.data=new Uint8Array(e), this[t]();}catch(t){console.log("bit decode error:"+t);}}, xt.prototype.bit1=function(){var t=Math.ceil(this.width/8),e=t%4,n=0<=this.height?this.height-1:-this.height;for(n=this.height-1;0<=n;
146n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<t;i++)for(var o=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+8*i*4,s=0;s<8&&8*i+s<this.width;s++){var h=this.palette[o>>7-s&1];this.data[a+4*s]=h.blue, this.data[a+4*s+1]=h.green, this.data[a+4*s+2]=h.red, this.data[a+4*s+3]=255;}0!=e&&(this.pos+=4-e);}}, xt.prototype.bit4=function(){for(var t=Math.ceil(this.width/2),e=t%4,n=this.height-1;0<=n;n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<t;i++){var o=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+2*i*4,s=o>>4,h=15&o,c=this.palette[s];if(this.data[a]=c.blue, this.data[a+1]=c.green, this.data[a+2]=c.red, this.data[a+3]=255, 2*i+1>=this.width)break;c=this.palette[h], this.data[a+4]=c.blue, this.data[a+4+1]=c.green, this.data[a+4+2]=c.red, this.data[a+4+3]=255;}0!=e&&(this.pos+=4-e);}}, xt.prototype.bit8=function(){for(var t=this.width%4,e=this.height-1;0<=e;e--){for(var n=this.bottom_up?e:this.height-1-e,r=0;r<this.width;r++){var i=this.datav.getUint8(this.pos++,!0),o=n*this.width*4+4*r;if(i<this.palette.length){var a=this.palette[i];this.data[o]=a.red, this.data[o+1]=a.green, this.data[o+2]=a.blue, this.data[o+3]=255;}else this.data[o]=255, this.data[o+1]=255, this.data[o+2]=255, this.data[o+3]=255;}0!=t&&(this.pos+=4-t);}}, xt.prototype.bit15=function(){for(var t=this.width%3,e=parseInt("11111",2),n=this.height-1;0<=n;n--){for(var r=this.bottom_up?n:this.height-1-n,i=0;i<this.width;i++){var o=this.datav.getUint16(this.pos,!0);this.pos+=2;var a=(o&e)/e*255|0,s=(o>>5&e)/e*255|0,h=(o>>10&e)/e*255|0,c=o>>15?255:0,l=r*this.width*4+4*i;this.data[l]=h, this.data[l+1]=s, this.data[l+2]=a, this.data[l+3]=c;}this.pos+=t;}}, xt.prototype.bit16=function(){for(var t=this.width%3,e=parseInt("11111",2),n=parseInt("111111",2),r=this.height-1;0<=r;r--){for(var i=this.bottom_up?r:this.height-1-r,o=0;o<this.width;o++){var a=this.datav.getUint16(this.pos,!0);this.pos+=2;var s=(a&e)/e*255|0,h=(a>>5&n)/n*255|0,c=(a>>11)/e*255|0,l=i*this.width*4+4*o;this.data[l]=c, this.data[l+1]=h, this.data[l+2]=s, this.data[l+3]=255;}this.pos+=t;}}, xt.prototype.bit24=function(){for(var t=this.height-1;0<=t;t--){for(var e=this.bottom_up?t:this.height-1-t,n=0;n<this.width;n++){var r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),a=e*this.width*4+4*n;this.data[a]=o, this.data[a+1]=i, this.data[a+2]=r, this.data[a+3]=255;}this.pos+=this.width%4;}}, xt.prototype.bit32=function(){for(var t=this.height-1;0<=t;t--)for(var e=this.bottom_up?t:this.height-1-t,n=0;n<this.width;n++){var r=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0),s=e*this.width*4+4*n;this.data[s]=o, this.data[s+1]=i, this.data[s+2]=r, this.data[s+3]=a;}}, xt.prototype.getData=function(){return this.data};try{module.exports=function(t){var e=new xt(t);return{data:e.getData(),width:e.width,height:e.height}};}catch(t){}
147/*
148   Copyright (c) 2013 Gildas Lormeau. All rights reserved.
149
150   Redistribution and use in source and binary forms, with or without
151   modification, are permitted provided that the following conditions are met:
152
153   1. Redistributions of source code must retain the above copyright notice,
154   this list of conditions and the following disclaimer.
155
156   2. Redistributions in binary form must reproduce the above copyright 
157   notice, this list of conditions and the following disclaimer in 
158   the documentation and/or other materials provided with the distribution.
159
160   3. The names of the authors may not be used to endorse or promote products
161   derived from this software without specific prior written permission.
162
163   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
164   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
165   FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
166   INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
167   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
168   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
169   OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
170   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
171   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
172   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
173   */
174/*
175   Copyright (c) 2013 Gildas Lormeau. All rights reserved.
176
177   Redistribution and use in source and binary forms, with or without
178   modification, are permitted provided that the following conditions are met:
179
180   1. Redistributions of source code must retain the above copyright notice,
181   this list of conditions and the following disclaimer.
182
183   2. Redistributions in binary form must reproduce the above copyright 
184   notice, this list of conditions and the following disclaimer in 
185   the documentation and/or other materials provided with the distribution.
186
187   3. The names of the authors may not be used to endorse or promote products
188   derived from this software without specific prior written permission.
189
190   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
191   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
192   FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
193   INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
194   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
195   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
196   OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
197   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
198   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
199   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
200   */
201!function(t){var p=15,g=573,e=[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];function ut(){var d=this;function h(t,e){for(var n=0;n|=1&t, t>>>=1, n<<=1, 0<--e;);return n>>>1}d.build_tree=function(t){var e,n,r,i=d.dyn_tree,o=d.stat_desc.static_tree,a=d.stat_desc.elems,s=-1;for(t.heap_len=0, t.heap_max=g, e=0;e<a;e++)0!==i[2*e]?(t.heap[++t.heap_len]=s=e, t.depth[e]=0):i[2*e+1]=0;for(;t.heap_len<2;)i[2*(r=t.heap[++t.heap_len]=s<2?++s:0)]=1, t.depth[r]=0, t.opt_len--, o&&(t.static_len-=o[2*r+1]);for(d.max_code=s, e=Math.floor(t.heap_len/2);1<=e;e--)t.pqdownheap(i,e);for(r=a;e=t.heap[1], t.heap[1]=t.heap[t.heap_len--], t.pqdownheap(i,1), n=t.heap[1], t.heap[--t.heap_max]=e, t.heap[--t.heap_max]=n, i[2*r]=i[2*e]+i[2*n], t.depth[r]=Math.max(t.depth[e],t.depth[n])+1, i[2*e+1]=i[2*n+1]=r, t.heap[1]=r++, t.pqdownheap(i,1), 2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1], function(t){var e,n,r,i,o,a,s=d.dyn_tree,h=d.stat_desc.static_tree,c=d.stat_desc.extra_bits,l=d.stat_desc.extra_base,u=d.stat_desc.max_length,f=0;for(i=0;i<=p;i++)t.bl_count[i]=0;for(s[2*t.heap[t.heap_max]+1]=0, e=t.heap_max+1;e<g;e++)u<(i=s[2*s[2*(n=t.heap[e])+1]+1]+1)&&(i=u, f++), s[2*n+1]=i, n>d.max_code||(t.bl_count[i]++, o=0, l<=n&&(o=c[n-l]), a=s[2*n], t.opt_len+=a*(i+o), h&&(t.static_len+=a*(h[2*n+1]+o)));if(0!==f){do{for(i=u-1;0===t.bl_count[i];)i--;t.bl_count[i]--, t.bl_count[i+1]+=2, t.bl_count[u]--, f-=2;}while(0<f);for(i=u;0!==i;i--)for(n=t.bl_count[i];0!==n;)(r=t.heap[--e])>d.max_code||(s[2*r+1]!=i&&(t.opt_len+=(i-s[2*r+1])*s[2*r], s[2*r+1]=i), n--);}}(t), function(t,e,n){var r,i,o,a=[],s=0;for(r=1;r<=p;r++)a[r]=s=s+n[r-1]<<1;for(i=0;i<=e;i++)0!==(o=t[2*i+1])&&(t[2*i]=h(a[o]++,o));}(i,d.max_code,t.bl_count);};}function ft(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;}ut._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], ut.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], ut.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], ut.d_code=function(t){return t<256?e[t]:e[256+(t>>
201>7)]}, ut.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], ut.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], ut.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7], ut.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15], ft.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], ft.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], ft.static_l_desc=new ft(ft.static_ltree,ut.extra_lbits,257,286,p), ft.static_d_desc=new ft(ft.static_dtree,ut.extra_dbits,0,30,p), ft.static_bl_desc=new ft(null,ut.extra_blbits,0,19,7);function n(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;}var dt=[new n(0,0,0,0,0),new n(4,4,8,4,1),new n(4,5,16,8,1),new n(4,6,32,32,1),new n(4,4,16,16,2),new n(8,16,32,32,2),new n(8,16,128,128,2),new n(8,32,128,256,2),new n(32,128,258,1024,2),new n(32,258,258,4096,2)],pt=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],gt=262;function mt(t,e,n,r){var i=t[2*e],o=t[2*n];return i<o||i==o&&r[e]<=r[n]}function r(){var h,c,l,u,f,d,p,g,i,m,w,y,v,a,b,x,S,k,_,A,I,C,T,F,P,E,q,O,B,R,s,j,D,M,U,N,z,o,L,H,W,G=this,V=new ut,Y=new ut,X=new ut;function J(){var t;for(t=0;t<286;t++)s[2*t]=0;for(t=0;t<30;t++)j[2*t]=0;for(t=0;t<19;t++)D[2*t]=0;s[512]=1, G.opt_len=G.static_len=0, N=o=0;}function K(t,e){var n,r,i=-1,o=t[1],a=0,s=7,h=4;for(0===o&&(s=138, h=3), t[2*(e+1)+1]=65535, n=0;n<=e;n++)r=o, o=t[2*(n+1)+1], ++a<s&&r==o||(a<h?D[2*r]+=a:0!==r?(r!=i&&D[2*r]++, D[32]++):a<=10?D[34]++:D[36]++, i=r, (a=0)===o?(s=138, h=3):r==o?(s=6, h=3):(s=7, h=4));}function Q(t){G.pending_buf[G.pending++]=t;}function Z(t){Q(255&t), Q(t>>>8&255);}function $(t,e){var n,r=e;16-r<W?(Z(H|=(n=t)<<W&65535), H=n>>>16-W, W+=r-16):(H|=t<<W&65535, W+=r);}function tt(t,e){var n=2*t;$(65535&e[n],65535&e[n+1]);}function et(t,e){var n,r,i=-1,o=t[1],a=0,s=7,h=4;for(0===o&&(s=138, h=3), n=0;n<=e;n++)if(r=o, o=t[2*(n+1)+1], !(++a<s&&r==o)){if(a<h)for(;tt(r,D), 0!=--a;);else 0!==r?(r!=i&&(tt(r,D), a--), tt(16,D), $(a-3,2)):a<=10?(tt(17,D), $(a-3,3)):(tt(18,D), $(a-11,7));i=r, (a=0)===o?(s=138, h=3):r==o?(s=6, h=3):(s=7, h=4);}}function nt(){16==W?(Z(H), W=H=0):8<=W&&(Q(255&H), H>>>=8, W-=8);}function rt(t,e){var n,r,i;if(G.pending_buf[z+2*N]=t>>>8&255, G.pending_buf[z+2*N+1]=255&t, G.pending_buf[M+N]=255&e, N++, 0===t?s[2*e]++:(o++, t--, s[2*(ut._length_code[e]+256+1)]++, j[2*ut.d_code(t)]++), 0==(8191&N)&&2<q){for(n=8*N, r
201=I-S, i=0;i<30;i++)n+=j[2*i]*(5+ut.extra_dbits[i]);if(n>>>=3, o<Math.floor(N/2)&&n<Math.floor(r/2))return!0}return N==U-1}function it(t,e){var n,r,i,o,a=0;if(0!==N)for(;n=G.pending_buf[z+2*a]<<8&65280|255&G.pending_buf[z+2*a+1], r=255&G.pending_buf[M+a], a++, 0===n?tt(r,t):(tt((i=ut._length_code[r])+256+1,t), 0!==(o=ut.extra_lbits[i])&&$(r-=ut.base_length[i],o), tt(i=ut.d_code(--n),e), 0!==(o=ut.extra_dbits[i])&&$(n-=ut.base_dist[i],o)), a<N;);tt(256,t), L=t[513];}function ot(){8<W?Z(H):0<W&&Q(255&H), W=H=0;}function at(t,e,n){var r,i,o;$(0+(n?1:0),3), r=t, i=e, o=!0, ot(), L=8, o&&(Z(i), Z(~i)), G.pending_buf.set(g.subarray(r,r+i),G.pending), G.pending+=i;}function e(t,e,n){var r,i,o=0;0<q?(V.build_tree(G), Y.build_tree(G), o=function(){var t;for(K(s,V.max_code), K(j,Y.max_code), X.build_tree(G), t=18;3<=t&&0===D[2*ut.bl_order[t]+1];t--);return G.opt_len+=3*(t+1)+5+5+4, t}(), r=G.opt_len+3+7>>>3, (i=G.static_len+3+7>>>3)<=r&&(r=i)):r=i=e+5, e+4<=r&&-1!=t?at(t,e,n):i==r?($(2+(n?1:0),3), it(ft.static_ltree,ft.static_dtree)):($(4+(n?1:0),3), function(t,e,n){var r;for($(t-257,5), $(e-1,5), $(n-4,4), r=0;r<n;r++)$(D[2*ut.bl_order[r]+1],3);et(s,t-1), et(j,e-1);}(V.max_code+1,Y.max_code+1,o+1), it(s,j)), J(), n&&ot();}function st(t){e(0<=S?S:-1,I-S,t), S=I, h.flush_pending();}function ht(){var t,e,n,r;do{if(0===(r=i-T-I)&&0===I&&0===T)r=f;else if(-1==r)r--;else if(f+f-gt<=I){for(g.set(g.subarray(f,f+f),0), C-=f, I-=f, S-=f, n=t=v;e=65535&w[--n], w[n]=f<=e?e-f:0, 0!=--t;);for(n=t=f;e=65535&m[--n], m[n]=f<=e?e-f:0, 0!=--t;);r+=f;}if(0===h.avail_in)return;t=h.read_buf(g,I+T,r), 3<=(T+=t)&&(y=((y=255&g[I])<<x^255&g[I+1])&b);}while(T<gt&&0!==h.avail_in)}function ct(t){var e,n,r=P,i=I,o=F,a=f-gt<I?I-(f-gt):0,s=R,h=p,c=I+258,l=g[i+o-1],u=g[i+o];B<=F&&(r>>=2), T<s&&(s=T);do{if(g[(e=t)+o]==u&&g[e+o-1]==l&&g[e]==g[i]&&g[++e]==g[i+1]){i+=2, e++;do{}while(g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&i<c);if(n=258-(c-i), i=c-258, o<n){if(C=t, s<=(o=n))break;l=g[i+o-1], u=g[i+o];}}}while((t=65535&m[t&h])>a&&0!=--r);return o<=T?o:T}function lt(t){return t.total_in=t.total_out=0, t.msg=null, G.pending=0, G.pending_out=0, c=113, u=0, V.dyn_tree=s, V.stat_desc=ft.static_l_desc, Y.dyn_tree=j, Y.stat_desc=ft.static_d_desc, X.dyn_tree=D, X.stat_desc=ft.static_bl_desc, W=H=0, L=8, J(), function(){var t;for(i=2*f, t=w[v-1]=0;t<v-1;t++)w[t]=0;E=dt[q].max_lazy, B=dt[q].good_length, R=dt[q].nice_length, P=dt[q].max_chain, k=F=2, y=A=T=S=I=0;}(), 0}G.depth=[], G.bl_count=[], G.heap=[], s=[], j=[], D=[], G.pqdownheap=function(t,e){for(var n=G.heap,r=n[e],i=e<<1;i<=G.heap_len&&(i<G.heap_len&&mt(t,n[i+1],n[i],G.depth)&&i++, !mt(t,r,n[i],G.depth));)n[e]=n[i], e=i, i<<=1;n[e]=r;}, G.deflateInit=function(t,e,n,r,i,o){return r||(r=8), i||(i=8), o||(o=0), t.msg=null, -1==e&&(e=6), i<1||9<i||8!=r||n<9||15<n||e<0||9<e||o<0||2<o?-2:(t.dstate=G, p=(f=1<<(d=n))-1, b=(v=1<<(a=i+7))-1, x=Math.floor((a+3-1)/3), g=new Uint8Array(2*f), m=[], w=[], U=1<<i+6, G.pending_buf=new Uint8Array(4*U), l=4*U, z=Math.floor(U/2), M=3*U, q=e, O=o, lt(t))}, G.deflateEnd=function(){return 42!=c&&113!=c&&666!=c?-2:(G.pending_buf=null, g=m=w=null, G.dstate=null, 113==c?-3:0)}, G.deflateParams=function(t,e,n){var r=0;return-1==e&&(e=6), e<0||9<e||n<0||2<n?-2:(dt[q].func!=dt[e].func&&0!==t.total_in&&(r=t.deflate(1)), q!=e&&(E=dt[q=e].max_lazy, B=dt[q].good_length, R=dt[q].nice_length, P=dt[q].max_chain), O=n, r)}, G.deflateSetDictionary=function(t,e,n){var r,i=n,o=0;if(!e||42!=c)return-2;if(i<3)return 0;for(f-gt<i&&(o=n-(i=f-gt)), g.set(e.subarray(o,o+i),0), S=I=i, y=((y=255&g[0])<<x^255&g[1])&b, r=0;r<=i-3;r++)y=(y<<x^255&g[r+2])&b, m[r&p]=w[y], w[y]=r;return 0}, G.deflate=function(t,e){var n,r,i,o,a,s;if(4<e||e<0)return-2;if(!t.next_out||!t.next_in&&0!==t.avail_in||666==c&&4!=e)return t.msg=pt[4], -2;if(0===t.avail_out)return t.msg=pt[7], -5;if(h=t, o=u, u=e, 42==c&&(r=8+(d-8<<4)<<8, 3<(i=(q-1&255)>>1)&&(i=3), r|=i<<6, 0!==I&&(r|=32), c=113, Q((s=r+=31-r%31)>>8&255), Q(255&s)), 0!==G.pending){if(h.flush_pending(), 0===h.avail_out)return u=-1, 0}else if(0===h.avail_in&&e<=o&&4!=e)return h.msg=pt[7], -5;if(666==c&&0!==h.avail_in)return t.msg=pt[7], -5;if(0!==h.avail_in||0!==T||0!=e&&666!=c){switch(a=-1, dt[q].func){case 0:a=function(t){var e,n=65535;for(l-5<n&&(n=l-5);;){if(T<=1){if(ht(), 0===T&&0==t)return 0;if(0===T)break}if(I+=T, e=S+n, ((T=0)===I||e<=I)&&(T=I-e, I=e, st(!1), 0===h.avail_out))return 0;if(f-gt<=I-S&&(st(!1), 0===h.avail_out))return 0}return st(4==t), 0===h.avail_out?4==t?2:0:4==t?3:1}(e);break;case 1:a=function(t){for(var e,n=0;;){if(T<gt){if(ht(), T<gt&&0==t)return 0;if(0===T)break}if(3<=T&&(y=(y<<x^255&g[I+2])&b, n=65535&w[y], m[I&p]=w[y], w[y]=I), 0!==n&&(I-n&65535)<=f-gt&&2!=O&&(k=ct(n)), 3<=k)if(e=rt(I-C,k-3), T-=k, k<=E&&3<=T){for(k--;y=(y<<x^255&g[++I+2])&b, n=65535&w[y], m[I&p]=w[y], w[y]=I, 0!=--k;);I++;}else I+=k, k=0, y=((y=255&g[I])<<x^255&g[I+1])&b;else e=rt(0,255&g[I]), T--, I++;if(e&&(st(!1), 0===h.avail_out))return 0}return st(4==t), 0===h.avail_out?4==t?2:0:4==t?3:1}(e);break;case 2:a=function(t){for(var e,n,r=0;;){if(T<gt){if(ht(), T<gt&&0==t)return 0;if(0===T)break}if(3<=T&&(y=(y<<x^255&g[I+2])&b, r=65535&w[y], m[I&p]=w[y], w[y]=I), F=k, _=C, k=2, 0!==r&&F<E&&(I-r&65535)<=f-gt&&(2!=O&&(k=ct(r)), k<=5&&(1==O||3==k&&4096<I-C)&&(k=2)), 3<=F&&k<=F){for(n=I+T-3, e=rt(I-1-_,F-3), T-=F-1, F-=2;++I<=n&&(y=(y<<x^255&g[I+2])&b, r=65535&w[y], m[I&p]=w[y], w[y]=I), 0!=--F;);if(A=0, k=2, I++, e&&(st(!1), 0===h.avail_out))return 0}else if(0!==A){if((e=rt(0,255&g[I-1]))&&st(!1), I++, T--, 0===h.avail_out)return 0}else A=1, I++, T--;}return 0!==A&&(e=rt(0,255&g[I-1]), A=0), st(4==t), 0===h.avail_out?4==t?2:0:4==t?3:1}(e);}if(2!=a&&3!=a||(c=666), 0==a||2==a)return 0===h.avail_out&&(u=-1), 0;if(1==a){if(1==e)$(2,3), tt(256,ft.static_ltree), nt(), 1+L+10-W<9&&($(2,3), tt(256,ft.static_ltree), nt()), L=7;else if(at(0,0,!1), 3==e)for(n=0;n<v;n++)w[n]=0;if(h.flush_pending(), 0===h.avail_out)return u=-1, 0}}return 4!=e?0:1};}function i(){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;}i.prototype={deflateInit:function(t,e){return this.dstate=new r, e||(e=p), this.dstate.deflateInit(this,t,e)},deflate:function(t){return this.dstate?this.dstate.deflate(this,t):-2},deflateEnd:function(){if(!this.dstate)return-2;var t=this.dstate.deflateEnd();return this.dstate=null, t},deflateParams:function(t,e){return this.dstate?this.dstate.deflateParams(this,t,e):-2},deflateSetDictionary:function(t,e){return this.dstate?this.dstate.deflateSetDictionary(this,t,e):-2},read_buf:function(t,e,n){var r=this,i=r.avail_in;return n<i&&(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));}};var o=t.zip||t;o.Deflater=o._jzlib_Deflater=function(t){var s=new i,h=new Uint8Array(512),e=t?t.level:-1;void 0===e&&(e=-1), s.deflateInit(e), s.next_out=h, this.append=function(t,e){var n,r=[],i=0,o=0,a=0;if(t.length){s.next_in_index=0, s.next_in=t, s.avail_in=t.length;do{if(s.next_out_index=0, s.avail_out=512, 0!=s.deflate(0))throw new Error("deflating: "+s.msg);s.next_out_index&&(512==s.next_out_index?r.push(new Uint8Array(h)):r.push(new Uint8Array(h.subarray(0,s.next_out_index)))), a+=s.next_out_index, e&&0<s.next_in_index&&s.next_in_index!=i&&(e(s.next_in_index), i=s.next_in_index);}while(0<s.avail_in||0===s.avail_out);return n=new Uint8Array(a), r.forEach(function(t){n.set(t,o), o+=t.length;}), n}}, this.flush=function(){var t,e,n=[],r=0,i=0;do{if(s.next_out_index=0, s.avail_out=512, 1!=(t=s.deflate(4))&&0!=t)throw new Error("deflating: "+s.msg);0<512-s.avail_out&&n.push(new Uint8Array(h.subarray(0,s.next_out_index))), i+=s.next_out_index;}while(0<s.avail_in||0===s.avail_out);
201return s.deflateEnd(), e=new Uint8Array(i), n.forEach(function(t){e.set(t,r), r+=t.length;}), e};};}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), function(t){function f(t){var e;this.ok=!1, "#"==t.charAt(0)&&(t=t.substr(1,6)), t=(t=t.replace(/ /g,"")).toLowerCase();var l={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",feldspar:"d19275",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:"90ee9
2010",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",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",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};for(var n in l)t==n&&(t=l[n]);for(var u=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(t){return[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:["#00ff00","336699"],process:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}}],r=0;r<u.length;r++){var i=u[r].re,o=u[r].process,a=i.exec(t);a&&(e=o(a), this.r=e[0], this.g=e[1], this.b=e[2], this.ok=!0);}this.r=this.r<0||isNaN(this.r)?0:255<this.r?255:this.r, this.g=this.g<0||isNaN(this.g)?0:255<this.g?255:this.g, this.b=this.b<0||isNaN(this.b)?0:255<this.b?255:this.b, this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"}, this.toHex=function(){var t=this.r.toString(16),e=this.g.toString(16),n=this.b.toString(16);return 1==t.length&&(t="0"+t), 1==e.length&&(e="0"+e), 1==n.length&&(n="0"+n), "#"+t+e+n}, this.getHelpXML=function(){for(var t=new Array,e=0;e<u.length;e++)for(var n=u[e].example,r=0;r<n.length;r++)t[t.length]=n[r];for(var i in l)t[t.length]=i;var o=document.createElement("ul");o.setAttribute("id","rgbcolor-examples");for(e=0;e<t.length;e++)try{var a=document.createElement("li"),s=new f(t[e]),h=document.createElement("div");h.style.cssText="margin: 3px; border: 1px solid black; background:"+s.toHex()+"; color:"+s.toHex(), h.appendChild(document.createTextNode("test"));var c=document.createTextNode(" "+t[e]+" -> "+s.toRGB()+" -> "+s.toHex());a.appendChild(h), a.appendChild(c), o.appendChild(a);}catch(t){}return o};}"undefined"!=typeof undefined&&undefined.amd?undefined("RGBColor",function(){return f}):"undefined"!='object'&&module.exports&&(module.exports=f), t.RGBColor=f;}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), function(t){module.exports=t();}(function(){return function o(a,s,h){function c(n,t){if(!s[n]){if(!a[n]){var e="function"==typeof commonjsRequire&&commonjsRequire;if(!t&&e)return e(n,!0);if(l)return l(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND", r}var i=s[n]={exports:{}};a[n][0].call(i.exports,function(t){var e=a[n][1][t];return c(e||t)},i,i.exports,o,a,s,h);}return s[n].exports}for(var l="function"==typeof commonjsRequire&&commonjsRequire,t=0;t<h.length;t++)c(h[t]);return c}({1:[function(t,q,O){(function(E){!function(t){var e="object"==typeof O&&O,n="object"==typeof q&&q&&q.exports==e&&q,r="object"==typeof E&&E;r.global!==r&&r.window!==r||(t=r);var i,o,w=2147483647,y=36,v=1,b=26,a=38,s=700,x=72,S=128,k="-",h=/^xn--/,c=/[^ -~]/,l=/\x2E|\u3002|\uFF0E|\uFF61/g,u={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >
201= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=y-v,_=Math.floor,A=String.fromCharCode;function I(t){throw RangeError(u[t])}function d(t,e){for(var n=t.length;n--;)t[n]=e(t[n]);return t}function p(t,e){return d(t.split(l),e).join(".")}function C(t){for(var e,n,r=[],i=0,o=t.length;i<o;)55296<=(e=t.charCodeAt(i++))&&e<=56319&&i<o?56320==(64512&(n=t.charCodeAt(i++)))?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e), i--):r.push(e);return r}function T(t){return d(t,function(t){var e="";return 65535<t&&(e+=A((t-=65536)>>>10&1023|55296), t=56320|1023&t), e+=A(t)}).join("")}function F(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function P(t,e,n){var r=0;for(t=n?_(t/s):t>>1, t+=_(t/e);f*b>>1<t;r+=y)t=_(t/f);return _(r+(f+1)*t/(t+a))}function g(t){var e,n,r,i,o,a,s,h,c,l,u,f=[],d=t.length,p=0,g=S,m=x;for((n=t.lastIndexOf(k))<0&&(n=0), r=0;r<n;++r)128<=t.charCodeAt(r)&&I("not-basic"), f.push(t.charCodeAt(r));for(i=0<n?n+1:0;i<d;){for(o=p, a=1, s=y;d<=i&&I("invalid-input"), u=t.charCodeAt(i++), (y<=(h=u-48<10?u-22:u-65<26?u-65:u-97<26?u-97:y)||h>_((w-p)/a))&&I("overflow"), p+=h*a, !(h<(c=s<=m?v:m+b<=s?b:s-m));s+=y)a>_(w/(l=y-c))&&I("overflow"), a*=l;m=P(p-o,e=f.length+1,0==o), _(p/e)>w-g&&I("overflow"), g+=_(p/e), p%=e, f.splice(p++,0,g);}return T(f)}function m(t){var e,n,r,i,o,a,s,h,c,l,u,f,d,p,g,m=[];for(f=(t=C(t)).length, e=S, o=x, a=n=0;a<f;++a)(u=t[a])<128&&m.push(A(u));for(r=i=m.length, i&&m.push(k);r<f;){for(s=w, a=0;a<f;++a)e<=(u=t[a])&&u<s&&(s=u);for(s-e>_((w-n)/(d=r+1))&&I("overflow"), n+=(s-e)*d, e=s, a=0;a<f;++a)if((u=t[a])<e&&++n>w&&I("overflow"), u==e){for(h=n, c=y;!(h<(l=c<=o?v:o+b<=c?b:c-o));c+=y)g=h-l, p=y-l, m.push(A(F(l+g%p,0))), h=_(g/p);m.push(A(F(h,0))), o=P(n,d,r==i), n=0, ++r;}++n, ++e;}return m.join("")}if(i={version:"1.2.4",ucs2:{decode:C,encode:T},decode:g,encode:m,toASCII:function(t){return p(t,function(t){return c.test(t)?"xn--"+m(t):t})},toUnicode:function(t){return p(t,function(t){return h.test(t)?g(t.slice(4).toLowerCase()):t})}}, e&&!e.nodeType)if(n)n.exports=i;else for(o in i)i.hasOwnProperty(o)&&(e[o]=i[o]);else t.punycode=i;}(this);}).call(this,"undefined"!=typeof commonjsGlobal?commonjsGlobal:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});},{}],2:[function(t,e,n){var i=t("./log");function u(t,e){for(var n=3===t.nodeType?document.createTextNode(t.nodeValue):t.cloneNode(!1),r=t.firstChild;r;)!0!==e&&1===r.nodeType&&"SCRIPT"===r.nodeName||n.appendChild(u(r,e)), r=r.nextSibling;return 1===t.nodeType&&(n._scrollTop=t.scrollTop, n._scrollLeft=t.scrollLeft, "CANVAS"===t.nodeName?function(e,t){try{t&&(t.width=e.width, t.height=e.height, t.getContext("2d").putImageData(e.getContext("2d").getImageData(0,0,e.width,e.height),0,0));}catch(t){i("Unable to copy canvas content from",e,t);}}(t,n):"TEXTAREA"!==t.nodeName&&"SELECT"!==t.nodeName||(n.value=t.value)), n}e.exports=function(o,t,e,n,a,s,h){var c=u(o.documentElement,a.javascriptEnabled),l=t.createElement("iframe");return l.className="html2canvas-container", l.style.visibility="hidden", l.style.position="fixed", l.style.left="-10000px", l.style.top="0px", l.style.border="0", l.width=e, l.height=n, l.scrolling="no", t.body.appendChild(l), new Promise(function(e){var t,n,r,i=l.contentWindow.document;l.contentWindow.onload=l.onload=function(){var t=setInterval(function(){0<i.body.childNodes.length&&(!function t(e){if(1===e.nodeType){e.scrollTop=e._scrollTop, e.scrollLeft=e._scrollLeft;for(var n=e.firstChild;n;)t(n), n=n.nextSibling;}}(i.documentElement), clearInterval(t), "view"===a.type&&(l.contentWindow.scrollTo(s,h), !/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||l.contentWindow.scrollY===h&&l.contentWindow.scrollX===s||(i.documentElement.style.top=-h+"px", i.documentElement.style.left=-s+"px", i.documentElement.style.position="absolute")), e(l));},50);}, i.open(), i.write("<!DOCTYPE html><html></html>"), n=s, r=h, !(t=o).defaultView||n===t.defaultView.pageXOffset&&r===t.defaultView.pageYOffset||t.defaultView.scrollTo(n,r), i.replaceChild(i.adoptNode(c),i.documentElement), i.close();})};},{"./log":13}],3:[function(t,e,n){function r(t){this.r=0, this.g=0, this.b=0, this.a=null;this.fromArray(t)||this.namedColor(t)||this.rgb(t)||this.rgba(t)||this.hex6(t)||this.hex3(t);}r.prototype.darken=function(t){var e=1-t;return new r([Math.round(this.r*e),Math.round(this.g*e),Math.round(this.b*e),this.a])}, r.prototype.isTransparent=function(){return 0===this.a}, r.prototype.isBlack=function(){return 0===this.r&&0===this.g&&0===this.b}, r.prototype.fromArray=function(t){return Array.isArray(t)&&(this.r=Math.min(t[0],255), this.g=Math.min(t[1],255), this.b=Math.min(t[2],255), 3<t.length&&(this.a=t[3])), Array.isArray(t)};var i=/^#([a-f0-9]{3})$/i;r.prototype.hex3=function(t){var e;return null!==(e=t.match(i))&&(this.r=parseInt(e[1][0]+e[1][0],16), this.g=parseInt(e[1][1]+e[1][1],16), this.b=parseInt(e[1][2]+e[1][2],16)), null!==e};var o=/^#([a-f0-9]{6})$/i;r.prototype.hex6=function(t){var e=null;
vendor: 7,431 bytes, line 201
201return null!==(e=t.match(o))&&(this.r=parseInt(e[1].substring(0,2),16), this.g=parseInt(e[1].substring(2,4),16), this.b=parseInt(e[1].substring(4,6),16)), null!==e};var a=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/;r.prototype.rgb=function(t){var e;return null!==(e=t.match(a))&&(this.r=Number(e[1]), this.g=Number(e[2]), this.b=Number(e[3])), null!==e};var s=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/;r.prototype.rgba=function(t){var e;return null!==(e=t.match(s))&&(this.r=Number(e[1]), this.g=Number(e[2]), this.b=Number(e[3]), this.a=Number(e[4])), null!==e}, r.prototype.toString=function(){return null!==this.a&&1!==this.a?"rgba("+[this.r,this.g,this.b,this.a].join(",")+")":"rgb("+[this.r,this.g,this.b].join(",")+")"}, r.prototype.namedColor=function(t){t=t.toLowerCase();var e=h[t];if(e)this.r=e[0], this.g=e[1], this.b=e[2];else if("transparent"===t)return this.r=this.g=this.b=this.a=0, !0;return!!e}, r.prototype.isColor=!0;var h={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};e.exports=r;},{}],4:[function(t,e,n){var p=t("./support"),d=t("./renderers/canvas"),g=t("./imageloader"),m=t("./nodeparser"),r=t("./nodecontainer"),w=t("./log"),i=t("./utils"),y=t("./clone"),v=t("./proxy").loadUrlDocument,b=i.getBounds,x="data-html2canvas-node",S=0;function o(t,e){var n,r,i=S++;if((e=e||{}).logging&&(w.options.logging=!0, w.options.start=Date.now()), e.async=void 0===e.async||e.async, e.allowTaint=void 0!==e.allowTaint&&e.allowTaint, e.removeContainer=void 0===e.removeContainer||e.removeContainer, e.javascriptEnabled=void 0!==e.javascriptEnabled&&e.javascriptEnabled, e.imageTimeout=void 0===e.imageTimeout?1e4:e.imageTimeout, e.renderer="function"==typeof e.renderer?e.renderer:d, e.strict=!!e.strict, "string"==typeof t){if("string"!=typeof e.proxy)return Promise.reject("Proxy must be used when rendering url");var o=null!=e.width?e.width:window.innerWidth,a=null!=e.height?e.height:window.innerHeight;return v((n=t, r=document.createElement("a"), r.href=n, r.href=r.href, r),e.proxy,document,o,a,e).then(function(t){return k(t.contentWindow.document.documentElement,t,e,o,a)})}var s,h,c,l,u,f=(void 0===t?[document.documentElement]:t.length?t:[t])[0];return f.setAttribute(x+i,i), (s=f.ownerDocument, h=e, c=f.ownerDocument.defaultView.innerWidth, l=f.ownerDocument.defaultView.innerHeight, u=i, y(s,s,c,l,h,s.defaultView.pageXOffset,s.defaultView.pageYOffset).then(function(t){w("Document cloned");var e=x+u,n="["+e+"='"+u+"']";s.querySelector(n).removeAttribute(e);var r=t.contentWindow,i=r.document.querySelector(n),o="function"==typeof h.onclone?Promise.resolve(h.onclone(r.document)):Promise.resolve(!0);return o.then(function(){return k(i,t,h,c,l)})})).then(function(t){return"function"==typeof e.onrendered&&(w("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas"), e.onrendered(t)), t})}o.CanvasRenderer=d, o.NodeContainer=r, o.log=w, o.utils=i;var a="undefined"==typeof document||"function"!=typeof Object.create||"function"!=typeof document.createElement("canvas").getContext?function(){return Promise.reject("No canvas support")}:o;function k(n,r,i,t,e){var o,a,s=r.contentWindow,h=new p(s.document),c=new g(i,h),l=b(n),u="view"===i.type?t:(o=s.document, Math.max(Math.max(o.body.scrollWidth,o.documentElement.scrollWidth),Math.max(o.body.offsetWidth,o.documentElement.offsetWidth),Math.max(o.body.clientWidth,o.documentElement.clientWidth))),f="view"===i.type?e:(a=s.document, Math.max(Math.max(a.body.scrollHeight,a.documentElement.scrollHeight),Math.max(a.body.offsetHeight,a.documentElement.offsetHeight),Math.max(a.body.clientHeight,a.documentElement.clientHeight))),d=new i.renderer(u,f,c,i,document);return new m(n,d,h,c,i).ready.then(function(){var t,e;return w("Finished rendering"), t="view"===i.type?_(d.canvas,{width:d.canvas.width,height:d.canvas.height,top:0,left:0,x:0,y:0}):n===s.document.body||n===s.document.documentElement||null!=i.canvas?d.canvas:_(d.canvas,{width:null!=i.width?i.width:l.width,height:null!=i.height?i.height:l.height,top:l.top,left
201:l.left,x:0,y:0}), e=r, i.removeContainer&&(e.parentNode.removeChild(e), w("Cleaned up container")), t})}function _(t,e){var n=document.createElement("canvas"),r=Math.min(t.width-1,Math.max(0,e.left)),i=Math.min(t.width,Math.max(1,e.left+e.width)),o=Math.min(t.height-1,Math.max(0,e.top)),a=Math.min(t.height,Math.max(1,e.top+e.height));n.width=e.width, n.height=e.height;var s=i-r,h=a-o;return w("Cropping canvas at:","left:",e.left,"top:",e.top,"width:",s,"height:",h), w("Resulting crop with width",e.width,"and height",e.height,"with x",r,"and y",o), n.getContext("2d").drawImage(t,r,o,s,h,e.x,e.y,s,h), n}e.exports=a;},{"./clone":2,"./imageloader":11,"./log":13,"./nodecontainer":14,"./nodeparser":15,"./proxy":16,"./renderers/canvas":20,"./support":22,"./utils":26}],5:[function(t,e,n){var r=t("./log"),i=t("./utils").smallImage;e.exports=function t(e){if(this.src=e, r("DummyImageContainer for",e), !this.promise||!this.image){r("Initiating DummyImageContainer"), t.prototype.image=new Image;var n=this.image;t.prototype.promise=new Promise(function(t,e){n.onload=t, n.onerror=e, n.src=i(), !0===n.complete&&t(n);});}};},{"./log":13,"./utils":26}],6:[function(t,e,n){var h=t("./utils").smallImage;e.exports=function(t,e){var n,r,i=document.createElement("div"),o=document.createElement("img"),a=document.createElement("span"),s="Hidden Text";i.style.visibility="hidden", i.style.fontFamily=t, i.style.fontSize=e, i.style.margin=0, i.style.padding=0, document.body.appendChild(i), o.src=h(), o.width=1, o.height=1, o.style.margin=0, o.style.padding=0, o.style.verticalAlign="baseline", a.style.fontFamily=t, a.style.fontSize=e, a.style.margin=0, a.style.padding=0, a.appendChild(document.createTextNode(s)), i.appendChild(a), i.appendChild(o), n=o.offsetTop-a.offsetTop+1, i.removeChild(a), i.appendChild(document.createTextNode(s)), i.style.lineHeight="normal", o.style.verticalAlign="super", r=o.offsetTop-i.offsetTop+1, document.body.removeChild(i), this.baseline=n, this.lineWidth=1, this.middle=r;};},{"./utils":26}],7:[function(t,e,n){var r=t("./font");function i(){this.data={};}i.prototype.getMetrics=function(t,e){return void 0===this.data[t+"-"+e]&&(this.data[t+"-"+e]=new r(t,e)), this.data[t+"-"+e]}, e.exports=i;},{"./font":6}],8:[function(o,t,e){var a=o("./utils").getBounds,i=o("./proxy").loadUrlDocument;function n(e,t,n){this.image=null, this.src=e;var r=this,i=a(e);this.promise=(t?new Promise(function(t){"about:blank"===e.contentWindow.document.URL||null==e.contentWindow.document.documentElement?e.contentWindow.onload=e.onload=function(){t(e);}:t(e);}):this.proxyLoad(n.proxy,i,n)).then(function(t){return o("./core")(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});}n.prototype.proxyLoad=function(t,e,n){var r=this.src;return i(r.src,t,r.ownerDocument,e.width,e.height,n)}, t.exports=n;},{"./core":4,"./proxy":16,"./utils":26}],9:[function(t,e,n){function r(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);}r.TYPES={LINEAR:1,RADIAL:2}, r.REGEXP_COLORSTOP=/^\s*(rgba?\(\s*\d{1,3},\s*\d{1,3},\s*\d{1,3}(?:,\s*[0-9\.]+)?\s*\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\s+(\d{1,3}(?:\.\d+)?)(%|px)?)?(?:\s|$)/i, e.exports=r;},{}],10:[function(t,e,n){e.exports=function(n,r){this.src=n, this.image=new Image;var i=this;this.tainted=null, this.promise=new Promise(function(t,e){i.image.onload=t, i.image.onerror=e, r&&(i.image.crossOrigin="anonymous"), i.image.src=n, !0===i.image.complete&&t(i.image);});};},{}],11:[function(t,e,n){var o=t("./log"),r=t("./imagecontainer"),i=t("./dummyimagecontainer"),a=t("./proxyimagecontainer"),s=t("./framecontainer"),h=t("./svgcontainer"),c=t("./svgnodecontainer"),l=t("./lineargradientcontainer"),u=t("./webkitgradientcontainer"),f=t("./utils").bind;function d(t,e){this.link=null, this.options=t, this.support=e, this.origin=this.getOrigin(window.location.href);}d.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}
201,[]).forEach(this.addImage(e,this.loadImage),this), e}, d.prototype.findBackgroundImage=function(t,e){return e.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(t,this.loadImage),this), t}, d.prototype.addImage=function(n,r){return function(e){e.args.forEach(function(t){this.imageExists(n,t)||(n.splice(0,0,r.call(this,e)), o("Added image #"+n.length,"string"==typeof t?t.substring(0,100):t));},this);}}, d.prototype.hasImageBackground=function(t){return"none"!==t.method}, d.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 r(e.replace(/url\(['"]{0,}|['"]{0,}\)$/gi,""),!1):this.isSameOrigin(e)||!0===this.options.allowTaint||this.isSVG(e)?new r(e,!1):this.support.cors&&!this.options.allowTaint&&this.options.useCORS?new r(e,!0):this.options.proxy?new a(e,this.options.proxy):new i(e):new h(e)}return"linear-gradient"===t.method?new l(t):"gradient"===t.method?new u(t):"svg"===t.method?new c(t.args[0],this.support.svg):"IFRAME"===t.method?new s(t.args[0],this.isSameOrigin(t.args[0].src),this.options):new i(t)}, d.prototype.isSVG=function(t){return"svg"===t.substring(t.length-3).toLowerCase()||h.prototype.isInline(t)}, d.prototype.imageExists=function(t,e){return t.some(function(t){return t.src===e})}, d.prototype.isSameOrigin=function(t){return this.getOrigin(t)===this.origin}, d.prototype.getOrigin=function(t){var e=this.link||(this.link=document.createElement("a"));return e.href=t, e.href=e.href, e.protocol+e.hostname+e.port}, d.prototype.getPromise=function(e){return this.timeout(e,this.options.imageTimeout).catch(function(){return new i(e.src).promise.then(function(t){e.image=t;})})}, d.prototype.get=function(e){var n=null;return this.images.some(function(t){return(n=t).src===e})?n:null}, d.prototype.fetch=function(t){return this.images=t.reduce(f(this.findBackgroundImage,this),this.findImages(t)), this.images.forEach(function(e,n){e.promise.then(function(){o("Succesfully loaded image #"+(n+1),e);},function(t){o("Failed loading image #"+(n+1),e,t);});}), this.ready=Promise.all(this.images.map(this.getPromise,this)), o("Finished searching images"), this}, d.prototype.timeout=function(n,r){var i,t=Promise.race([n.promise,new Promise(function(t,e){i=setTimeout(function(){o("Timed out loading image",n), e(n);},r);})]).then(function(t){return clearTimeout(i), t});return t.catch(function(){clearTimeout(i);}), t}, e.exports=d;},{"./dummyimagecontainer":5,"./framecontainer":8,"./imagecontainer":10,"./lineargradientcontainer":12,"./log":13,"./proxyimagecontainer":17,"./svgcontainer":23,"./svgnodecontainer":24,"./utils":26,"./webkitgradientcontainer":27}],12:[function(t,e,n){var i=t("./gradientcontainer"),o=t("./color");function r(t){i.apply(this,arguments), this.type=i.TYPES.LINEAR;var e=r.REGEXP_DIRECTION.test(t.args[0])||!i.REGEXP_COLORSTOP.test(t.args[0]);e?t.args[0].split(/\s+/).reverse().forEach(function(t,e){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 n=this.y0,r=this.x0;this.y0=this.y1, this.x0=this.x1, this.x1=r, this.y1=n;break;case"center":break;default:var i=.01*parseFloat(t,10);if(isNaN(i))break;0===e?(this.y0=i, this.y1=1-this.y0):(this.x0=i, this.x1=1-this.x0);}},this):(this.y0=0, this.y1=1), this.colorStops=t.args.slice(e?1:0).map(function(t){var e=t.match(i.REGEXP_COLORSTOP),n=+e[2],r=0===n?"%":e[3];return{color:new o(e[1]),stop:"%"===r?n/100:null}}), 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(n,r){null===n.stop&&this.colorStops.slice(r).some(function(t,e){return null!==t.stop&&(n.stop=(t.stop-this.colorStops[r-1].stop)/(e+1)+this.colorStops[r-1].stop, !0)},this);},this);}r.prototype=Object.create(i.prototype), r.REGEXP_DIRECTION=/^\s*(?:to|left|right|top|bottom|center|\d{1,3}(?:\.\d+)?%?)(?:\s|$)/i, e.exports=r;},{"./color":3,"./gradientcontainer":9}],13:[function(t,e,n){var r=function(){r.options.logging&&window.console&&window.console.log&&Function.prototype.bind.call(window.console.log,window.console).apply(window.console,[Date.now()-r.options.start+"ms","html2canvas:"].concat([].slice.call(arguments,0)));};r.options={logging:!1}, e.exports=r;},{}],14:[function(t,e,n){var o=t("./color"),r=t("./utils"),i=r.getBounds,a=r.parseBackgroun
201ds,s=r.offsetBounds;function h(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.colors={}, this.styles={}, this.backgroundImages=null, this.transformData=null, this.transformMatrix=null, this.isPseudoElement=!1, this.opacity=null;}function c(t){return-1!==t.toString().indexOf("%")}function l(t){return t.replace("px","")}function u(t){return parseFloat(t)}h.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;}, h.prototype.getOpacity=function(){return null===this.opacity?this.opacity=this.cssFloat("opacity"):this.opacity}, h.prototype.assignStack=function(t){(this.stack=t).children.push(this);}, h.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"))}, h.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])}, h.prototype.prefixedCss=function(e){var n=this.css(e);return void 0===n&&["webkit","moz","ms","o"].some(function(t){return void 0!==(n=this.css(t+e.substr(0,1).toUpperCase()+e.substr(1)))},this), void 0===n?null:n}, h.prototype.computedStyle=function(t){return this.node.ownerDocument.defaultView.getComputedStyle(this.node,t)}, h.prototype.cssInt=function(t){var e=parseInt(this.css(t),10);return isNaN(e)?0:e}, h.prototype.color=function(t){return this.colors[t]||(this.colors[t]=new o(this.css(t)))}, h.prototype.cssFloat=function(t){var e=parseFloat(this.css(t));return isNaN(e)?0:e}, h.prototype.fontWeight=function(){var t=this.css("fontWeight");switch(parseInt(t,10)){case 401:t="bold";break;case 400:t="normal";}return t}, h.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}, h.prototype.parseBackgroundImages=function(){return this.backgroundImages||(this.backgroundImages=a(this.css("backgroundImage")))}, h.prototype.cssList=function(t,e){var n=(this.css(t)||"").split(",");return 1===(n=(n=n[e||0]||n[0]||"auto").trim().split(" ")).length&&(n=[n[0],c(n[0])?"auto":n[0]]), n}, h.prototype.parseBackgroundSize=function(t,e,n){var r,i,o=this.cssList("backgroundSize",n);if(c(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 a<s^"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:c(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}}, h.prototype.parseBackgroundPosition=function(t,e,n,r){var i,o,a=this.cssList("backgroundPosition",n);return i=c(a[0])?(t.width-(r||e).width)*(parseFloat(a[0])/100):parseInt(a[0],10), o="auto"===a[1]?i/e.width*e.height:c(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}}, h.prototype.parseBackgroundRepeat=function(t){return this.cssList("backgroundRepeat",t)[0]}, h.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:new o(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}, h.prototype.parseTransform=function(){if(!this.transformData)if(this.hasTransform()){var t=this.parseBounds(),e=this.prefixedCss("transformOrigin").split(" ").map(l).map(u);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}, h.prototype.parseTransformMatrix=function(){if(!this.transformMatrix){var t=this.prefixedCss("transform"),e=t?function(t){{if(t&&"matrix"===t[1])return t[2].split(",").map(function(t){return parseFloat(t.trim())});if(t&&"matrix3d"===t[1]){var e=t[2].split(",").map(function(t){return parseFloat(t.trim())});return[e[0],e[1],e[4],e[5],e[12],e[13]]}}}(t.match(this.MATRIX_PROPERTY)):null;this.transformMatrix=e||[1,0,0,1,0,0];}return this.transformMatrix}, h.prototype.parseBounds=function(){return this.bounds||(this.bounds=this.hasTransform()?s(this.node):i(this.node))}, h.prototype.hasTransform=function(){return"1,0,0,1,0,0"!==this.parseTransformMatrix().join(",")||this.parent&&this.parent.hasTransform()}, h.prototype.getValue=function(){var t,e,n=this.node.value||"";return"SELECT"===this.node.tagName?(t=this.node, n=(e=t.options[t.selectedIndex||0])&&e.text||""):"password"===this.node.type&&(n=Array(n.length+1).join("•")), 0===n.length?this.node.placeholder||"":n}, h.prototype.MATRIX_PROPERTY=/(matrix|matrix3d)\((.+)\)/, h.prototype.TEXT_SHADOW_PROPERTY=/((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g, h.prototype.TEXT_SHADOW_VALUES=/(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g, h.prototype.CLIP=/^rect\((\d+)px,? (\d+)px,? (\d+)px,? (\d+)px\)$/, e.exports=h;},{"./color":3,"./utils":26}],15:[function(t,e,n){var s=t("./log"),h=t("punycode"),c=t("./nodecontainer"),f=t("./textcontainer"),d=t("./pseudoelementcontainer"),l=t("./fontmetrics"),u=t("./color"),p=t("./stackingcontext"),r=t("./utils"),g=r.bind,a=r.getBounds,m=r.parseBackgroun
201ds,w=r.offsetBounds;function i(t,e,n,r,i){s("Starting NodeParser"), this.renderer=e, this.options=i, this.range=null, this.support=n, this.renderQueue=[], this.stack=new p(!0,1,t.ownerDocument,null);var o=new c(t,null);if(i.background&&e.rectangle(0,0,e.width,e.height,new u(i.background)), t===t.ownerDocument.documentElement){var a=new c(o.color("backgroundColor").isTransparent()?t.ownerDocument.body:t.ownerDocument.documentElement,null);e.rectangle(0,0,e.width,e.height,a.color("backgroundColor"));}o.visibile=o.isElementVisible(), this.createPseudoHideStyles(t.ownerDocument), this.disableAnimations(t.ownerDocument), this.nodes=L([o].concat(this.getChildren(o)).filter(function(t){return t.visible=t.isElementVisible()}).map(this.getPseudoElements,this)), this.fontMetrics=new l, s("Fetched nodes, total:",this.nodes.length), s("Calculate overflow clips"), this.calculateOverflowClips(), s("Start fetching images"), this.images=r.fetch(this.nodes.filter(j)), this.ready=this.images.ready.then(g(function(){return s("Images loaded, starting parsing"), s("Creating stacking contexts"), this.createStackingContexts(), s("Sorting stacking contexts"), this.sortStackingContexts(this.stack), this.parse(this.stack), s("Render queue created with "+this.renderQueue.length+" items"), new Promise(g(function(t){i.async?"function"==typeof i.async?i.async.call(this,this.renderQueue,t):0<this.renderQueue.length?(this.renderIndex=0, this.asyncRenderer(this.renderQueue,t)):t():(this.renderQueue.forEach(this.paint,this), t());},this))},this));}function o(t){return t.parent&&t.parent.clip.length}function y(){}i.prototype.calculateOverflowClips=function(){this.nodes.forEach(function(t){if(j(t)){D(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=o(t)?t.parent.clip.concat(e):e, t.backgroundClip="hidden"!==t.css("overflow")?t.clip.concat([t.borders.clip]):t.clip, D(t)&&t.cleanDOM();}else M(t)&&(t.clip=o(t)?t.parent.clip:[]);D(t)||(t.bounds=null);},this);}, i.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(g(function(){this.asyncRenderer(t,e);},this),0);}, i.prototype.createPseudoHideStyles=function(t){this.createStyles(t,"."+d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+':before { content: "" !important; display: none !important; }.'+d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER+':after { content: "" !important; display: none !important; }');}, i.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;}");}, i.prototype.createStyles=function(t,e){var n=t.createElement("style");n.innerHTML=e, t.body.appendChild(n);}, i.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 L(e)}, i.prototype.getPseudoElement=function(t,e){var n=t.computedStyle(e);if(!n||!n.content||"none"===n.content||"-moz-alt-content"===n.content||"none"===n.display)return null;for(var r,i,o=(r=n.content, (i=r.substr(0,1))===r.substr(r.length-1)&&i.match(/'|"/)?r.substr(1,r.length-2):r),a="url"===o.substr(0,3),s=document.createElement(a?"img":"html2canvaspseudoelement"),h=new d(s,t,e),c=n.length-1;0<=c;c--){var l=n.item(c).replace(/(\-[a-z])/g,function(t){return t.toUpperCase().replace("-","")});s.style[l]=n[l];}if(s.className=d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+" "+d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER, a)return s.src=m(o)[0].args[0], [h];var u=document.createTextNode(o);return s.appendChild(u), [h,new f(u,h)]}, i.prototype.getChildren=function(n){return L([].filter.call(n.node.childNodes,q).map(function(t){var e=[t.nodeType===Node.TEXT_NODE?new f(t,n):new c(t,n)].filter(z);return t.nodeType===Node.ELEMENT_NODE&&e.length&&"TEXTAREA"!==t.tagName?e[0].isElementVisible()?e.concat(this.getChildren(e[0])):[]:e},this))}, i.prototype.newStackingContext=function(t,e){var n=new p(e,t.getOpacity(),t.node,t.parent);t.cloneTo(n), (e?n.getParentStack(this):n.parent.stack).contexts.push(n), t.stack=n;}, i.prototype.createStackingContexts=function(){this.nodes.forEac
vendor: 11,535 bytes, line 201
201h(function(t){var e,n;j(t)&&(this.isRootElement(t)||t.getOpacity()<1||(n=(e=t).css("position"), "auto"!==(-1!==["absolute","relative","fixed"].indexOf(n)?e.css("zIndex"):"auto"))||this.isBodyWithTransparentRoot(t)||t.hasTransform())?this.newStackingContext(t,!0):j(t)&&(O(t)&&T(t)||-1!==["inline-block","inline-table"].indexOf(t.css("display"))||B(t))?this.newStackingContext(t,!1):t.assignStack(t.parent.stack);},this);}, i.prototype.isBodyWithTransparentRoot=function(t){return"BODY"===t.node.nodeName&&t.parent.color("backgroundColor").isTransparent()}, i.prototype.isRootElement=function(t){return null===t.parent}, i.prototype.sortStackingContexts=function(t){var n;t.contexts.sort((n=t.contexts.slice(0), function(t,e){return t.cssInt("zIndex")+n.indexOf(t)/n.length-(e.cssInt("zIndex")+n.indexOf(e)/n.length)})), t.contexts.forEach(this.sortStackingContexts,this);}, i.prototype.parseTextBounds=function(a){return function(t,e,n){if("none"!==a.parent.css("textDecoration").substr(0,4)||0!==t.trim().length){if(this.support.rangeBounds&&!a.parent.hasTransform()){var r=n.slice(0,e).join("").length;return this.getRangeBounds(a.node,r,t.length)}if(a.node&&"string"==typeof a.node.data){var i=a.node.splitText(t.length),o=this.getWrapperBounds(a.node,a.parent.hasTransform());return a.node=i, o}}else this.support.rangeBounds&&!a.parent.hasTransform()||(a.node=a.node.splitText(t.length));return{}}}, i.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?w(n):a(n);return r.replaceChild(i,n), o}, i.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()}, i.prototype.parse=function(t){var e=t.contexts.filter(I),n=t.children.filter(j),r=n.filter(R(B)),i=r.filter(R(O)).filter(R(F)),o=n.filter(R(O)).filter(B),a=r.filter(R(O)).filter(F),s=t.contexts.concat(r.filter(O)).filter(T),h=t.children.filter(M).filter(E),c=t.contexts.filter(C);e.concat(i).concat(o).concat(a).concat(s).concat(h).concat(c).forEach(function(t){this.renderQueue.push(t), P(t)&&(this.parse(t), this.renderQueue.push(new y));},this);}, i.prototype.paint=function(t){try{t instanceof y?this.renderer.ctx.restore():M(t)?(D(t.parent)&&t.parent.appendToDOM(), this.paintText(t), D(t.parent)&&t.parent.cleanDOM()):this.paintNode(t);}catch(t){if(s(t), this.options.strict)throw t}}, i.prototype.paintNode=function(t){P(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):"INPUT"===t.node.nodeName&&"radio"===t.node.type?this.paintRadio(t):this.paintElement(t);}, i.prototype.paintElement=function(n){var r=n.parseBounds();this.renderer.clip(n.backgroundClip,function(){this.renderer.renderBackground(n,r,n.borders.borders.map(N));},this), this.renderer.clip(n.clip,function(){this.renderer.renderBorders(n.borders.borders);},this), this.renderer.clip(n.backgroundClip,function(){switch(n.node.nodeName){case"svg":case"IFRAME":var t=this.images.get(n.node);t?this.renderer.renderImage(n,r,n.borders,t):s("Error loading <"+n.node.nodeName+">",n.node);break;case"IMG":var e=this.images.get(n.node.src);e?this.renderer.renderImage(n,r,n.borders,e):s("Error loading <img>",n.node.src);break;case"CANVAS":this.renderer.renderImage(n,r,n.borders,{image:n.node});break;case"SELECT":case"INPUT":case"TEXTAREA":this.paintFormValue(n);}},this);}, i.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:new u("#A5A5A5"),width:t}}),s=S(r,o,a);this.renderer.clip(t.backgroundClip,function(){this.renderer.rectangle(r.left+1,r.top+1,r.width-2,r.height-2,new u("#DEDEDE")), this.renderer.renderBorders(b(a,r,s,o)), t.node.checked&&(this.renderer.font(new u("#424242"),"normal","normal","bold",n-3+"px","arial"), this.renderer.text("✔",r.left+n/6,r.top+n-1));},this);}, i.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,new u("#DEDEDE"),1,new u("#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),new u("#424242"));},this);}, i.prototype.paintFormValue=function(e){var t=e.getValue();if(0<t.length){var n=e.node.ownerDocument,r=n.createElement("html2canvaswrapper");["lineHeight","textAlign","fontFamily","fontWeight","fontSize","color","paddingLeft","paddingTop","paddingRight","paddingBottom","width","height","borderLeftStyle","borderTopStyle","borderLeftWidth","borderTopWidth","boxSizing","whiteSpace","wordWrap"].forEach(function(t){try{r.style[t]=e.css(t);}catch(t){s("html2canvas: Parse: Exception caught in renderFormValue: "+t.message);}});var i=e.parseBounds();r.style.position="fixed", r.style.left=i.left+"px", r.style.top=i.top+"px", r.textContent=t, n.body.appendChild(r), this.paintText(new f(r.firstChild,e)), n.body.removeChild(r);}}, i.prototype.paintText=function(n){n.applyTextTransform();var t,e=h.ucs2.decode(n.node.data),r=this.options.letterRendering&&!/^(normal|none|0px)$/.test(n.parent.css("letterSpacing"))||(t=n.node.data, /[^\u0000-\u00ff]/.test(t))?e.map(function(t){return h.ucs2.encode([t])}):function(t){var e,n=[],r=0,i=!1;for(;t.length;)o=t[r], -1!==[32,13,10,9,45].indexOf(o)===i?((e=t.splice(0,r)).length&&n.push(h.ucs2.encode(e)), i=!i, r=0):r++, r>=t.length&&(e=t.splice(0,r)).length&&n.push(h.ucs2.encode(e));var o;return n}(e),i=n.parent.fontWeight(),o=n.parent.css("fontSize"),a=n.parent.css("fontFamily"),s=n.parent.parseTextShadows();this.renderer.font(n.parent.color("color"),n.parent.css("fontStyle"),n.parent.css("fontVariant"),i,o,a), s.length?this.renderer.fontShadow(s[0].color,s[0].offsetX,s[0].offsetY,s[0].blur):this.renderer.clearShadow(), this.renderer.clip(n.parent.clip,function(){r.map(this.parseTextBounds(n),this).forEach(function(t,e){t&&!1===/^\s*$/.test(r[e])&&(this.renderer.text(r[e],t.left,t.bottom), this.renderTextDecoration(n.parent,t,this.fontMetrics.getMetrics(a,o)));},this);},this);}, i.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.color("color"));break;case"overline":this.renderer.rectangle(e.left,Math.round(e.top),e.width,1,t.color("color"));break;case"line-through":this.renderer.rectangle(e.left,Math.ceil(e.top+n.middle+n.lineWidth),e.width,1,t.color("color"));}};var v={inset:[["darken",.6],["darken",.1],["darken",.1],["darken",.6]]};function b(a,s,h,c){return a.map(function(t,e){if(0<t.width){var n=s.left,r=s.top,i=s.width,o=s.height-a[2].width;switch(e){case 0:o=a[0].width, t.args=_({c1:[n,r],c2:[n+i,r],c3:[n+i-a[1].width,r+o],c4:[n+a[3].width,r+o]},c[0],c[1],h.topLeftOuter,h.topLeftInner,h.topRightOuter,h.topRightInner);break;case 1:n=s.left+s.width-a[1].width, i=a[1].width, t.args=_({c1:[n+i,r],c2:[n+i,r+o+a[2].width],c3:[n,r+o],c4:[n,r+a[0].width]},c[1],c[2],h.topRightOuter,h.topRightInner,h.bottomRightOuter,h.bottomRightInner);break;case 2:r=r+s.height-a[2].width, o=a[2].width, t.args=_({c1:[n+i,r+o],c2:[n,r+o],c3:[n+a[3].width,r],c4:[n+i-a[3].width,r]},c[2],c[3],h.bottomRightOuter,h.bottomRightInner,h.bottomLeftOuter,h.bottomLeftInner);break;case 3:i=a[3].width, t.args=_({c1:[n,r+o+a[2].width],c2:[n,r],c3:[n+i,r+a[0].width],c4:[n+i,r+o]},c[3],c[0],h.bottomLeftOuter,h.bottomLeftInner,h.topLeftOuter,h.topLeftInner);}}return t})}function x(t,e,n,r){var i=(Math.sqrt(2)-1)/3*4,o=n*i,a=r*i,s=t+n,h=e+r;return{topLeft:k({x:t,y:h},{x:t,y:h-a},{x:s-o,y:e},{x:s,y:e}),topRight:k({x:t,y:e},{x:t+o,y:e},{x:s,y:h-a},{x:s,y:h}),bottomRight:k({x:s,y:e},{x:s,y:e+a},{x:t+o,y:h},{x:t,y:h}),bottomLeft:k({x:s,y:h},{x:s-o,y:h},{x:t,y:e+a},{x:t,y:e})}}function S(t,e,n){var r=t.left,i=t.top,o=t.width,a=t.height,s=e[0][0]<o/2?e[0][0]:o/2,h=e[0][1]<a/2?e[0][1]:a/2,c=e[1][0]<o/2?e[1][0]:o/2,l=e[1][1]<a/2?e[1][1]:a/2,u=e[2][0]<o/2?e[2][0]:o/2,f=e[2][1]<a/2?e[2][1]:a/2,d=e[3][0]<o/2?e[3][0]:o/2,p=e[3][1]<a/2?e[3][1]:a/2,g=o-c,m=a-f,w=o-u,y=a-p;return{topLeftOuter:x(r,i,s,h).topLeft.subdivide(.5),topLeftInner:x(r+n[3].width,i+n[0].width,Math.max(0,s-n[3].width),Math.max(0,h-n[0].width)).topLeft.subdivide(.5),topRightOuter:x(r+g,i,c,l).topRight.subdivide(.5),topRightInner:x(r+Math.min(g,o+n[3].width),i+n[0].width,g>o+n[3].width?0:c-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:x(r+w,i+m,u,f).bottomRight.subdivide(.5),bottomRightInner:x(r+Math.min(w,o-n[3].width),i+Math.min(m,a+n[0].width),Math.max(0,u-n[1].width),f-n[2].width).bottomRight.subdivide(.5),bottomLeftOuter:x(r,i+y,d,p).bottomLeft.subdivide(.5),bottomLeftInner:x(r+n[3].width,i+y,Math.max(0,d-n[3].width),p-n[2].width).bottomLeft.subdivide(.5)}}function k(s,h,c,l){var u=function(t,e,n){return{x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n}};return{start:s,startControl:h,endControl:c,end:l,subdivide:function(t){var e=u(s,h,t),n=u(h,c,t),r=u(c,l,t),i=u(e,n,t),o=u(n,r,t),a=u(i,o,t);return[k(s,e,i,a),k(a,o,r,l)]},curveTo:function(t){t.push(["bezierCurve",h.x,h.y,c.x,c.y,l.x,l.y]);},curveToReversed:function(t){t.push(["bezierCurve",c.x,c.y,h.x,h.y,s.x,s.y]);}}}function _(t,e,n,r,i,o,a){var s=[];return 0<e[0]||0<e[1]?(s.push(["line",r[1].start.x,r[1].start.y]), r[1].curveTo(s)):s.push(["line",t.c1[0],t.c1[1]]), 0<n[0]||0<n[1]?(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]])), 0<e[0]||0<e[1]?(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 A(t,e,n,r,i,o,a){0<e[0]||0<e[1]?(t.push(["line",r[0].start.x,r[0].start.y]), r[0].curveTo(t), r[1].curveTo(t)):t.push(["line",o,a]), (0<n[0]||0<n[1])&&t.push(["line",i[0].start.x,i[0].start.y]);}function I(t){return t.cssInt("zIndex")<0}function C(t){return 0<t.cssInt("zIndex")}function T(t){return 0===t.cssInt("zIndex")}function F(t){return-1!==["inline","inline-block","inline-table"].indexOf(t.css("display"))}function P(t){return t instanceof p}function E(t){return 0<t.node.data.trim().length}function q(t){return t.nodeType===Node.TEXT_NODE||t.nodeType===Node.ELEMENT_NODE}function O(t){return"static"!==t.css("position")}function B(t){return"none"!==t.css("float")}function R(t){var e=this;return function(){return!t.apply(e,arguments)}}function j(t){return t.node.nodeType===Node.ELEMENT_NODE}function D(t){return!0===t.isPseudoElement}function M(t){return t.node.nodeType===Node.TEXT_NODE}function U(t){return parseInt(t,10)}function N(t){return t.width}function z(t){return t.node.nodeType!==Node.ELEMENT_NODE||-1===["SCRIPT","HEAD","TITLE","OBJECT","BR","OPTION"].indexOf(t.node.nodeName)}function L(t){return[].concat.apply([],t)}i.prototype.parseBorders=function(o){var r,t=o.parseBounds(),e=(r=o, ["TopLeft","TopRight","BottomRight","BottomLeft"].map(function(t){var e=r.css("border"+t+"Radius"),n=e.split(" ");return n.length<=1&&(n[1]=n[0]), n.map(U)})),n=["Top","Right","Bottom","Left"].map(function(t,e){var n=o.css("border"+t+"Style"),r=o.color("border"+t+"Color");"inset"===n&&r.isBlack()&&(r=new u([255,255,255,r.a]));var i=v[n]?v[n][e]:null;
201return{width:o.cssInt("border"+t+"Width"),color:i?r[i[0]](i[1]):r,args:null}}),i=S(t,e,n);return{clip:this.parseBackgroundClip(o,i,n,e,t),borders:b(n,t,i,e)}}, i.prototype.parseBackgroundClip=function(t,e,n,r,i){var o=[];switch(t.css("backgroundClip")){case"content-box":case"padding-box":A(o,r[0],r[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width), A(o,r[1],r[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width), A(o,r[2],r[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width), A(o,r[3],r[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:A(o,r[0],r[1],e.topLeftOuter,e.topRightOuter,i.left,i.top), A(o,r[1],r[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top), A(o,r[2],r[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height), A(o,r[3],r[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height);}return o}, e.exports=i;},{"./color":3,"./fontmetrics":7,"./log":13,"./nodecontainer":14,"./pseudoelementcontainer":18,"./stackingcontext":21,"./textcontainer":25,"./utils":26,punycode:1}],16:[function(t,e,n){var a=t("./xhr"),r=t("./utils"),s=t("./log"),h=t("./clone"),c=r.decode64;function l(t,e,n){var r="withCredentials"in new XMLHttpRequest;if(!e)return Promise.reject("No proxy configured");var i=f(r),o=d(e,t,i);return r?a(o):u(n,o,i).then(function(t){return c(t.content)})}var i=0;function u(i,o,a){return new Promise(function(e,n){var t=i.createElement("script"),r=function(){delete window.html2canvas.proxy[a], i.body.removeChild(t);};window.html2canvas.proxy[a]=function(t){r(), e(t);}, t.src=o, t.onerror=function(t){r(), n(t);}, i.body.appendChild(t);})}function f(t){return t?"":"html2canvas_"+Date.now()+"_"+ ++i+"_"+Math.round(1e5*Math.random())}function d(t,e,n){return t+"?url="+encodeURIComponent(e)+(n.length?"&callback=html2canvas.proxy."+n:"")}n.Proxy=l, n.ProxyURL=function(t,e,n){var r="crossOrigin"in new Image,i=f(r),o=d(e,t,i);return r?Promise.resolve(o):u(n,o,i).then(function(t){return"data:"+t.type+";base64,"+t.content})}, n.loadUrlDocument=function(t,e,n,r,i,o){return new l(t,e,window.document).then((a=t, function(e){var n,t=new DOMParser;try{n=t.parseFromString(e,"text/html");}catch(t){s("DOMParser not supported, falling back to createHTMLDocument"), n=document.implementation.createHTMLDocument("");try{n.open(), n.write(e), n.close();}catch(t){s("createHTMLDocument write not supported, falling back to document.body.innerHTML"), n.body.innerHTML=e;}}var r=n.querySelector("base");if(!r||!r.href.host){var i=n.createElement("base");i.href=a, n.head.insertBefore(i,n.head.firstChild);}return n})).then(function(t){return h(t,n,r,i,o,0,0)});var a;};},{"./clone":2,"./log":13,"./utils":26,"./xhr":28}],17:[function(t,e,n){var o=t("./proxy").ProxyURL;e.exports=function(n,r){var t=document.createElement("a");t.href=n, n=t.href, this.src=n, this.image=new Image;var i=this;this.promise=new Promise(function(t,e){i.image.crossOrigin="Anonymous", i.image.onload=t, i.image.onerror=e, new o(n,r,document).then(function(t){i.image.src=t;}).catch(e);});};},{"./proxy":16}],18:[function(t,e,n){var r=t("./nodecontainer");function i(t,e,n){r.call(this,t,e), this.isPseudoElement=!0, this.before=":before"===n;}i.prototype.cloneTo=function(t){i.prototype.cloneTo.call(this,t), t.isPseudoElement=!0, t.before=this.before;}, (i.prototype=Object.create(r.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();}, i.prototype.cleanDOM=function(){this.node.parentNode.removeChild(this.node), this.parent.node.className=this.parent.node.className.replace(this.getHideClass(),"");}, i.prototype.getHideClass=function(){return this["PSEUDO_HIDE_ELEMENT_CLASS_"+(this.before?"BEFORE":"AFTER")]}, i.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE="___html2canvas___pseudoelement_before", i.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER="___html2canvas___pseudoelement_after", e.exports=i;},{"./nodecontainer":14}],19:[function(t,e,n){var h=t("./log");function r(t,e,n,r,i){this.width=t, this.height=e, this.images=n, this.options=r, this.document=i;}r.prototype.renderImage=function(t,e,n,r){var i=t.cssInt("paddingLeft"),o=t.cssInt("paddingTop"),a=t.cssInt("paddingRight"),s=t.cssInt("paddingBottom"),h=n.borders,c=e.width-(h[1].width+h[3].width+i+a),l=e.height-(h[0].width+h[2].width+o+s);this.drawImage(r,0,0,r.image.width||c,r.image.height||l,e.left+i+h[3].width,e.top+o+h[0].width,c,l);}
201, r.prototype.renderBackground=function(t,e,n){0<e.height&&0<e.width&&(this.renderBackgroundColor(t,e), this.renderBackgroundImage(t,e,n));}, r.prototype.renderBackgroundColor=function(t,e){var n=t.color("backgroundColor");n.isTransparent()||this.rectangle(e.left,e.top,e.width,e.height,n);}, r.prototype.renderBorders=function(t){t.forEach(this.renderBorder,this);}, r.prototype.renderBorder=function(t){t.color.isTransparent()||null===t.args||this.drawShape(t.args,t.color);}, r.prototype.renderBackgroundImage=function(o,a,s){o.parseBackgroundImages().reverse().forEach(function(t,e,n){switch(t.method){case"url":var r=this.images.get(t.args[0]);r?this.renderBackgroundRepeating(o,a,r,n.length-(e+1),s):h("Error loading background-image",t.args[0]);break;case"linear-gradient":case"gradient":var i=this.images.get(t.value);i?this.renderBackgroundGradient(i,a,s):h("Error loading background-image",t.args[0]);break;case"none":break;default:h("Unknown background-image type",t.args[0]);}},this);}, r.prototype.renderBackgroundRepeating=function(t,e,n,r,i){var o=t.parseBackgroundSize(e,n.image,r),a=t.parseBackgroundPosition(e,n.image,r,o);switch(t.parseBackgroundRepeat(r)){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]);}}, e.exports=r;},{"./log":13}],20:[function(t,e,n){var r=t("../renderer"),i=t("../lineargradientcontainer"),o=t("../log");function a(t,e){r.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.taintCtx=this.document.createElement("canvas").getContext("2d"), this.ctx.textBaseline="bottom", this.variables={}, o("Initialized CanvasRenderer with size",t,"x",e);}function s(t){return 0<t.length}(a.prototype=Object.create(r.prototype)).setFillStyle=function(t){return this.ctx.fillStyle="object"==typeof t&&t.isColor?t.toString():t, this.ctx}, a.prototype.rectangle=function(t,e,n,r,i){this.setFillStyle(i).fillRect(t,e,n,r);}, a.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();}, a.prototype.circleStroke=function(t,e,n,r,i,o){this.circle(t,e,n,r), this.ctx.strokeStyle=o.toString(), this.ctx.stroke();}, a.prototype.drawShape=function(t,e){this.shape(t), this.setFillStyle(e).fill();}, a.prototype.taints=function(e){if(null===e.tainted){this.taintCtx.drawImage(e.image,0,0);try{this.taintCtx.getImageData(0,0,1,1), e.tainted=!1;}catch(t){this.taintCtx=document.createElement("canvas").getContext("2d"), e.tainted=!0;}}return e.tainted}, a.prototype.drawImage=function(t,e,n,r,i,o,a,s,h){this.taints(t)&&!this.options.allowTaint||this.ctx.drawImage(t.image,e,n,r,i,o,a,s,h);}, a.prototype.clip=function(t,e,n){this.ctx.save(), t.filter(s).forEach(function(t){this.shape(t).clip();},this), e.call(n), this.ctx.restore();}, a.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}, a.prototype.font=function(t,e,n,r,i,o){this.setFillStyle(t).font=[e,n,r,i,o].join(" ").split(",")[0];}, a.prototype.fontShadow=function(t,e,n,r){this.setVariable("shadowColor",t.toString()).setVariable("shadowOffsetY",e).setVariable("shadowOffsetX",n).setVariable("shadowBlur",r);}, a.prototype.clearShadow=function(){this.setVariable("shadowColor","rgba(0,0,0,0)");}, a.prototype.setOpacity=function(t){this.ctx.globalAlpha=t;}, a.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]);}, a.prototype.setVariable=function(t,e){return this.variables[t]!==e&&(this.variables[t]=this.ctx[t]=e), this}, a.prototype.text=function(t,e,n){this.ctx.fillText(t,e,n);}, a.prototype.backgroundRepeatShape=function(t,e,n,r,i,o,a,s,h){var c=[["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)]];
201this.clip([c],function(){this.renderBackgroundRepeat(t,e,n,r,h[3],h[0]);},this);}, a.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);}, a.prototype.renderBackgroundGradient=function(t,e){if(t instanceof i){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.toString());}), this.rectangle(e.left,e.top,e.width,e.height,n);}}, a.prototype.resizeImage=function(t,e){var n=t.image;if(n.width===e.width&&n.height===e.height)return n;var r=document.createElement("canvas");return r.width=e.width, r.height=e.height, r.getContext("2d").drawImage(n,0,0,n.width,n.height,0,0,e.width,e.height), r}, e.exports=a;},{"../lineargradientcontainer":12,"../log":13,"../renderer":19}],21:[function(t,e,n){var i=t("./nodecontainer");function r(t,e,n,r){i.call(this,n,r), this.ownStacking=t, this.contexts=[], this.children=[], this.opacity=(this.parent?this.parent.stack.opacity:1)*e;}(r.prototype=Object.create(i.prototype)).getParentStack=function(t){var e=this.parent?this.parent.stack:null;return e?e.ownStacking?e:e.getParentStack(t):t.stack}, e.exports=r;},{"./nodecontainer":14}],22:[function(t,e,n){function r(t){this.rangeBounds=this.testRangeBounds(t), this.cors=this.testCORS(), this.svg=this.testSVG();}r.prototype.testRangeBounds=function(t){var e,n,r=!1;return t.createRange&&(e=t.createRange()).getBoundingClientRect&&((n=t.createElement("boundtest")).style.height="123px", n.style.display="block", t.body.appendChild(n), e.selectNode(n), 123===e.getBoundingClientRect().height&&(r=!0), t.body.removeChild(n)), r}, r.prototype.testCORS=function(){return void 0!==(new Image).crossOrigin}, r.prototype.testSVG=function(){var t=new Image,e=document.createElement("canvas"),n=e.getContext("2d");t.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{n.drawImage(t,0,0), e.toDataURL();}catch(t){return!1}return!0}, e.exports=r;},{}],23:[function(t,e,n){var r=t("./xhr"),i=t("./utils").decode64;function o(t){this.src=t, this.image=null;var n=this;this.promise=this.hasFabric().then(function(){return n.isInline(t)?Promise.resolve(n.inlineFormatting(t)):r(t)}).then(function(e){return new Promise(function(t){window.html2canvas.svg.fabric.loadSVGFromString(e,n.createCanvas.call(n,t));})});}o.prototype.hasFabric=function(){return window.html2canvas.svg&&window.html2canvas.svg.fabric?Promise.resolve():Promise.reject(new Error("html2canvas.svg.js is not loaded, cannot render svg"))}, o.prototype.inlineFormatting=function(t){return/^data:image\/svg\+xml;base64,/.test(t)?this.decode64(this.removeContentType(t)):this.removeContentType(t)}, o.prototype.removeContentType=function(t){return t.replace(/^data:image\/svg\+xml(;base64)?,/,"")}, o.prototype.isInline=function(t){return/^data:image\/svg\+xml/i.test(t)}, o.prototype.createCanvas=function(r){var i=this;return function(t,e){var n=new window.html2canvas.svg.fabric.StaticCanvas("c");i.image=n.lowerCanvasEl, n.setWidth(e.width).setHeight(e.height).add(window.html2canvas.svg.fabric.util.groupSVGElements(t,e)).renderAll(), r(n.lowerCanvasEl);}}, o.prototype.decode64=function(t){return"function"==typeof window.atob?window.atob(t):i(t)}, e.exports=o;},{"./utils":26,"./xhr":28}],24:[function(t,e,n){var r=t("./svgcontainer");function i(n,t){this.src=n, this.image=null;var r=this;this.promise=t?new Promise(function(t,e){r.image=new Image, r.image.onload=t, r.image.onerror=e, r.image.src="data:image/svg+xml,"+(new XMLSerializer).serializeToString(n), !0===r.image.complete&&t(r.image);}):this.hasFabric().then(function(){return new Promise(function(t){window.html2canvas.svg.fabric.parseSVGDocument(n,r.createCanvas.call(r,t));})});}i.prototype=Object.create(r.prototype), e.exports=i;},{"./svgcontainer":23}],25:[function(t,e,n){var r=t("./nodecontainer");function i(t,e){r.call(this,t,e);}function o(t,e,n){if(0<t.length)return e+n.toUpperCase()}(i.prototype=Object.create(r.prototype)).applyTextTransform=function(){this.node.data=this.transform(this.parent.css("textTransform"));}, i.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,o);case"uppercase":return e.toUpperCase();default:return e}}, e.exports=i;},{"./nodecontainer":14}],26:[function(t,e,n){n.smallImage=function(){return"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"}, n.bind=function(t,e){return function(){return t.apply(e,arguments)}}, n.decode64=function(t){var e,n,r,i,o,a,s,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
201+/",c=t.length,l="";for(e=0;e<c;e+=4)o=h.indexOf(t[e])<<2|(n=h.indexOf(t[e+1]))>>4, a=(15&n)<<4|(r=h.indexOf(t[e+2]))>>2, s=(3&r)<<6|(i=h.indexOf(t[e+3])), l+=64===r?String.fromCharCode(o):64===i||-1===i?String.fromCharCode(o,a):String.fromCharCode(o,a,s);return l}, n.getBounds=function(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{}}, n.offsetBounds=function(t){var e=t.offsetParent?n.offsetBounds(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}}, n.parseBackgrounds=function(t){var e,n,r,i,o,a,s,h=[],c=0,l=0,u=function(){e&&('"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)), n&&s.push(n), "-"===e.substr(0,1)&&0<(i=e.indexOf("-",1)+1)&&(r=e.substr(0,i), e=e.substr(i)), h.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===c&&-1<" \r\n\t".indexOf(t))){switch(t){case'"':a?a===t&&(a=null):a=t;break;case"(":if(a)break;if(0===c)return c=1, void(o+=t);l++;break;case")":if(a)break;if(1===c){if(0===l)return c=0, o+=t, void u();l--;}break;case",":if(a)break;if(0===c)return void u();if(1===c&&0===l&&!e.match(/^url$/i))return s.push(n), n="", void(o+=t)}o+=t, 0===c?e+=t:n+=t;}}), u(), h};},{}],27:[function(t,e,n){var r=t("./gradientcontainer");function i(t){r.apply(this,arguments), this.type="linear"===t.args[0]?r.TYPES.LINEAR:r.TYPES.RADIAL;}i.prototype=Object.create(r.prototype), e.exports=i;},{"./gradientcontainer":9}],28:[function(t,e,n){e.exports=function(r){return new Promise(function(t,e){var n=new XMLHttpRequest;n.open("GET",r), n.onload=function(){200===n.status?t(n.responseText):e(new Error(n.statusText));}, n.onerror=function(){e(new Error("Network Error"));}, n.send();})};},{}]},{},[4])(4)}), function(t){var n="+".charCodeAt(0),r="/".charCodeAt(0),i="0".charCodeAt(0),o="a".charCodeAt(0),a="A".charCodeAt(0),s="-".charCodeAt(0),h="_".charCodeAt(0),l=function(t){var e=t.charCodeAt(0);return e===n||e===s?62:e===r||e===h?63:e<i?-1:e<i+10?e-i+26+26:e<a+26?e-a:e<o+26?e-o+26:void 0};t.API.TTFFont=function(){function i(t,e,n){var r;if(this.rawData=t, r=this.contents=new X(t), this.contents.pos=4, "ttcf"===r.readString(4)){if(!e)throw new Error("Mu
201st specify a font name for TTC files.");throw new Error("Font "+e+" not found in TTC file.")}r.pos=0, this.parse(), this.subset=new T(this), this.registerTTF();}return i.open=function(t,e,n,r){return new i(function(t){var e,n,r,i,o,a;if(0<t.length%4)throw new Error("Invalid string. Length must be a multiple of 4");var s=t.length;o="="===t.charAt(s-2)?2:"="===t.charAt(s-1)?1:0, a=new Uint8Array(3*t.length/4-o), r=0<o?t.length-4:t.length;var h=0;function c(t){a[h++]=t;}for(n=e=0;e<r;e+=4, n+=3)c((16711680&(i=l(t.charAt(e))<<18|l(t.charAt(e+1))<<12|l(t.charAt(e+2))<<6|l(t.charAt(e+3))))>>16), c((65280&i)>>8), c(255&i);return 2===o?c(255&(i=l(t.charAt(e))<<2|l(t.charAt(e+1))>>4)):1===o&&(c((i=l(t.charAt(e))<<10|l(t.charAt(e+1))<<4|l(t.charAt(e+2))>>2)>>8&255), c(255&i)), a}(n),e,r)}, i.prototype.parse=function(){return this.directory=new e(this.contents), this.head=new d(this), this.name=new b(this), this.cmap=new m(this), this.hhea=new g(this), this.maxp=new x(this), this.hmtx=new S(this), this.post=new y(this), this.os2=new w(this), this.loca=new C(this), this.glyf=new _(this), this.ascender=this.os2.exists&&this.os2.ascender||this.hhea.ascender, this.decender=this.os2.exists&&this.os2.decender||this.hhea.decender, this.lineGap=this.os2.exists&&this.os2.lineGap||this.hhea.lineGap, this.bbox=[this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax]}, i.prototype.registerTTF=function(){var i,t,e,n,r;if(this.scaleFactor=1e3/this.head.unitsPerEm, this.bbox=function(){var t,e,n,r;for(r=[], t=0, e=(n=this.bbox).length;t<e;t++)i=n[t], r.push(Math.round(i*this.scaleFactor));return r}.call(this), this.stemV=0, this.post.exists?(e=255&(n=this.post.italic_angle), !0&(t=n>>16)&&(t=-(1+(65535^t))), this.italicAngle=+(t+"."+e)):this.italicAngle=0, this.ascender=Math.round(this.ascender*this.scaleFactor), this.decender=Math.round(this.decender*this.scaleFactor), this.lineGap=Math.round(this.lineGap*this.scaleFactor), this.capHeight=this.os2.exists&&this.os2.capHeight||this.ascender, this.xHeight=this.os2.exists&&this.os2.xHeight||0, this.familyClass=(this.os2.exists&&this.os2.familyClass||0)>>8, this.isSerif=1===(r=this.familyClass)||2===r||3===r||4===r||5===r||7===r, this.isScript=10===this.familyClass, this.flags=0, this.post.isFixedPitch&&(this.flags|=1), this.isSerif&&(this.flags|=2), this.isScript&&(this.flags|=8), 0!==this.italicAngle&&(this.flags|=64), this.flags|=32, !this.cmap.unicode)throw new Error("No unicode cmap for font")}, i.prototype.characterToGlyph=function(t){var e;return(null!=(e=this.cmap.unicode)?e.codeMap[t]:void 0)||0}, i.prototype.widthOfGlyph=function(t){var e;return e=1e3/this.head.unitsPerEm, this.hmtx.forGlyph(t).advance*e}, i.prototype.widthOfString=function(t,e,n){var r,i,o,a,s;for(i=a=o=0, s=(t=""+t).length;0<=s?a<s:s<a;i=0<=s?++a:--a)r=t.charCodeAt(i), o+=this.widthOfGlyph(this.characterToGlyph(r))+n*(1e3/e)||0;return o*(e/1e3)}, i.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1), n=e?this.lineGap:0, (this.ascender+n-this.decender)/1e3*t}, i}();var c,X=function(){function t(t){this.data=null!=t?t:[], this.pos=0, this.length=this.data.length;}return t.prototype.readByte=function(){return this.data[this.pos++]}, t.prototype.writeByte=function(t){return this.data[this.pos++]=t}, t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()}, t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255), this.writeByte(t>>16&255), this.writeByte(t>>8&255), this.writeByte(255&t)}, t.prototype.readInt32=function(){var t;return 2147483648<=(t=this.readUInt32())?t-4294967296:t}, t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296), this.writeUInt32(t)}, t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()}, t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255), this.writeByte(255&t)}, t.prototype.readInt16=function(){var t;return 32768<=(t=this.readUInt16())?t-65536:t}, t.prototype.writeInt16=function(t){return t<0&&(t+=65536), this.writeUInt16(t)}, t.prototype.readString=function(t){var e,n,r;for(n=[], e=r=0;0<=t?r<t:t<r;e=0<=t?++r:--r)n[e]=String.fromCharCode(this.readByte());return n.join("")}, t.prototype.writeString=function(t){var e,n,r,i;for(i=[], e=n=0, r=t.length;0<=r?n<r:r<n;e=0<=r?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i}, t.prototype.readShort=function(){return this.readInt16()}, t.prototype.writeShort=function(t){return this.writeInt16(t)}, t.prototype.readLongLong=function(){var t,e,n,r,i,o,a,s;return t=this.readByte(), e=this.readByte(), n=this.readByte(), r=this.readByte(), i=this.readByte(), o=this.readByte(), a=this.readByte(), s=this.readByte(), 128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^o)+256*(255^a)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*o+256*a+s}, t.prototype.readInt=function(){return this.readInt32()}, t.prototype.writeInt=function(t){return this.writeInt32(t)}, t.prototype.read=function(t){var e,n;for(e=[], n=0;0<=t?n<t:t<n;0<=t?++n:--n)e.push(this.readByte());return e}, t.prototype.write=function(t){var e,n,r,i;for(i=[], n=0, r=t.length;n<r;n++)e=t[n], i.push(this.writeByte(e));return i}, t}(),e=function(){var p;function t(t){var e,n,r;for(this.scalarType=t.readInt(), this.tableCount=t.readShort(), this.searchRange=t.readShort(), this.entrySelector=t.readShort(), this.rangeShift=t.readShort(), this.tables={}, n=0, r=this.tableCount;0<=r?n<r:r<n;0<=r?++n:--n)e={tag:t.readString(4),checksum:t.readInt(),offset:t.readInt(),length:t.readInt()}, this.tables[e.tag]=e;}return t.prototype.encode=function(t){var e,n,r,i,o,a,s,h,c,l,u,f,d;for(d in u=Object.keys(t).length, a=Math.log(2), c=16*Math.floor(Math.log(u)/a), i=Math.floor(c/a), h=16*u-c, (n=new X).writeInt(this.scalarType), n.writeShort(u), n.writeShort(c), n.writeShort(i), n.writeShort(h), r=16*u, s=n.pos+r, o=null, f=[], t)for(l=t[d], n.writeString(d), n.writeInt(p(l)), n.writeInt(s), n.writeInt(l.length), f=f.concat(l), "head"===d&&(o=s), s+=l.length;s%4;)f.push(0), s++;return n.write(f), e=2981146554-p(n.data), n.pos=o+8, n.writeUInt32(e), n.data}, p=function(t){var e,n,r,i;for(t=k.call(t);t.length%4;)t.push(0);for(n=new X(t), r=e=0, i=t.length;r<i;r+=4)e+=n.readUInt32();return 4294967295&e}, t}(),u={}.hasOwnProperty,f=function(t,e){for(var n in e)u.call(e,n)&&(t[n]=e[n]);function r(){this.constructor=t;}return r.prototype=e.prototype, t.prototype=new r, t.__super__=e.prototype, t};c=function(){function t(t){var e;this.file=t, e=this.file.directory.tables[this.tag], this.exists=!!e, e&&(this.offset=e.offset, this.length=e.length, this.parse(this.file.contents));}return t.prototype.parse=function(){}, t.prototype.encode=function(){}, t.prototype.raw=function(){return this.exists?(this.file.contents.pos=this.offset, this.file.contents.read(this.length)):null}, t}();var d=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="head", e.prototype.parse=function(t){return t.pos=this.offset, this.version=t.readInt(), this.revision=t.readInt(), this.checkSumAdjustment=t.readInt(), this.magicNumber=t.readInt(), this.flags=t.readShort(), this.unitsPerEm=t.readShort(), this.created=t.readLongLong(), this.modified=t.readLongLong(), this.xMin=t.readShort(), this.yMin=t.readShort(), this.xMax=t.readShort(), this.yMax=t.readShort(), this.macStyle=t.readShort(), this.lowestRecPPEM=t.readShort(), this.fontDirectionHint=t.readShort(), this.indexToLocFormat=t.readShort(), this.glyphDataFormat=t.readShort()}, e}(),p=function(){function t(n,t){var e,r,i,o,a,s,h,c,l,u,f,d,p,g,m,w,y,v;switch(this.platformID=n.readUInt16(), this.encodingID=n.readShort(), this.offset=t+n.readInt(), l=n.pos, n.pos=this.offset, this.format=n.readUInt16(), this.length=n.readUInt16(), this.language=n.readUInt16(), this.isUnicode=3===this.platformID&&1===this.encodingID&&4===this.format||0===this.platformID&&4===this.format, this.codeMap={}, this.format){case 0:for(s=m=0;m<256;s=++m)this.codeMap[s]=n.readByte();break;case 4:for(f=n.readUInt16(), u=f/2, n.pos+=6, i=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), n.pos+=2, p=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), h=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), c=function(){var t,e;for(e=[], s=t=0;0<=u?t<u:u<t;s=0<=u?++t:--t)e.push(n.readUInt16());return e}(), r=(this.length-n.pos+this.offset)/2, a=function(){var t,e;for(e=[], s=t=0;0<=r?t<r:r<t;s=0<=r?++t:--t)e.push(n.readUInt16());return e}(), s=w=0, v=i.length;w<v;s=++w)for(g=i[s], e=y=d=p[s];d<=g?y<=g:g<=y;e=d<=g?++y:--y)0===c[s]?o=e+h[s]:0!==(o=a[c[s]/2+(e-d)-(u-s)]||0)&&(o+=h[s]), this.codeMap[e]=65535&o;}n.pos=l;}return t.encode=function(t,e){var n,r,i,o,a,s,h,c,l,u,f,d,p,g,m,w,y,v,b,x,S,k,_,A,I,C,T,F,P,E,q,O,B,R,j,D,M,U,N,z,L,H,W,G,V,Y;switch(F=new X, o=Object.keys(t).sort(function(t,e){return t-e}), e){case"macroman":for(p=0, g=function(){var t,e;for(e=[], d=t=0;t<256;d=++t)e.push(0);return e}(), w={0:0}, i={}, P=0, B=o.length;P<B;P++)null==w[W=t[r=o[P]]]&&(w[W]=++p), i[r]={old:t[r],new:w[t[r]]}, g[r]=w[t[r]];return F.writeUInt16(1), F.writeUInt16(0), F.writeUInt32(12), F.writeUInt16(0), F.writeUInt16(262), F.writeUInt16(0), F.write(g), {charMap:i,subtable:F.data,maxGlyphID:p+1};case"unicode":for(C=[], l=[], w={}, n={}, m=h=null, E=y=0, R=o.length;E<R;E++)null==w[b=t[r=o[E]]]&&(w[b]=++y), n[r]={old:b,new:w[b]}, a=w[b]-r, null!=m&&a===h||(m&&l.push(m), C.push(r), h=a), m=r;
vendor: 19,289 bytes, lines 201-203
201for(m&&l.push(m), l.push(65535), C.push(65535), A=2*(_=C.length), k=2*Math.pow(Math.log(_)/Math.LN2,2), u=Math.log(k/2)/Math.LN2, S=2*_-k, s=[], x=[], f=[], d=q=0, j=C.length;q<j;d=++q){if(I=C[d], c=l[d], 65535===I){s.push(0), x.push(0);break}if(32768<=I-(T=n[I].new))for(s.push(0), x.push(2*(f.length+_-d)), r=O=I;I<=c?O<=c:c<=O;r=I<=c?++O:--O)f.push(n[r].new);else s.push(T-I), x.push(0);}for(F.writeUInt16(3), F.writeUInt16(1), F.writeUInt32(12), F.writeUInt16(4), F.writeUInt16(16+8*_+2*f.length), F.writeUInt16(0), F.writeUInt16(A), F.writeUInt16(k), F.writeUInt16(u), F.writeUInt16(S), L=0, D=l.length;L<D;L++)r=l[L], F.writeUInt16(r);for(F.writeUInt16(0), H=0, M=C.length;H<M;H++)r=C[H], F.writeUInt16(r);for(G=0, U=s.length;G<U;G++)a=s[G], F.writeUInt16(a);for(V=0, N=x.length;V<N;V++)v=x[V], F.writeUInt16(v);for(Y=0, z=f.length;Y<z;Y++)p=f[Y], F.writeUInt16(p);return{charMap:n,subtable:F.data,maxGlyphID:y+1}}}, t}(),m=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="cmap", e.prototype.parse=function(t){var e,n,r;for(t.pos=this.offset, this.version=t.readUInt16(), n=t.readUInt16(), this.tables=[], this.unicode=null, r=0;0<=n?r<n:n<r;0<=n?++r:--r)e=new p(t,this.offset), this.tables.push(e), e.isUnicode&&null==this.unicode&&(this.unicode=e);return!0}, e.encode=function(t,e){var n,r;return null==e&&(e="macroman"), n=p.encode(t,e), (r=new X).writeUInt16(0), r.writeUInt16(1), n.table=r.data.concat(n.subtable), n}, e}(),g=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="hhea", e.prototype.parse=function(t){return t.pos=this.offset, this.version=t.readInt(), this.ascender=t.readShort(), this.decender=t.readShort(), this.lineGap=t.readShort(), this.advanceWidthMax=t.readShort(), this.minLeftSideBearing=t.readShort(), this.minRightSideBearing=t.readShort(), this.xMaxExtent=t.readShort(), this.caretSlopeRise=t.readShort(), this.caretSlopeRun=t.readShort(), this.caretOffset=t.readShort(), t.pos+=8, this.metricDataFormat=t.readShort(), this.numberOfMetrics=t.readUInt16()}, e}(),w=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="OS/2", e.prototype.parse=function(n){if(n.pos=this.offset, this.version=n.readUInt16(), this.averageCharWidth=n.readShort(), this.weightClass=n.readUInt16(), this.widthClass=n.readUInt16(), this.type=n.readShort(), this.ySubscriptXSize=n.readShort(), this.ySubscriptYSize=n.readShort(), this.ySubscriptXOffset=n.readShort(), this.ySubscriptYOffset=n.readShort(), this.ySuperscriptXSize=n.readShort(), this.ySuperscriptYSize=n.readShort(), this.ySuperscriptXOffset=n.readShort(), this.ySuperscriptYOffset=n.readShort(), this.yStrikeoutSize=n.readShort(), this.yStrikeoutPosition=n.readShort(), this.familyClass=n.readShort(), this.panose=function(){var t,e;for(e=[], t=0;t<10;++t)e.push(n.readByte());return e}(), this.charRange=function(){var t,e;for(e=[], t=0;t<4;++t)e.push(n.readInt());return e}(), this.vendorID=n.readString(4), this.selection=n.readShort(), this.firstCharIndex=n.readShort(), this.lastCharIndex=n.readShort(), 0<this.version&&(this.ascent=n.readShort(), this.descent=n.readShort(), this.lineGap=n.readShort(), this.winAscent=n.readShort(), this.winDescent=n.readShort(), this.codePageRange=function(){var t,e;for(e=[], t=0;t<2;++t)e.push(n.readInt());return e}(), 1<this.version))return this.xHeight=n.readShort(), this.capHeight=n.readShort(), this.defaultChar=n.readShort(), this.breakChar=n.readShort(), this.maxContext=n.readShort()}, e}(),y=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="post", e.prototype.parse=function(r){var t,e,n,i;switch(r.pos=this.offset, this.format=r.readInt(), this.italicAngle=r.readInt(), this.underlinePosition=r.readShort(), this.underlineThickness=r.readShort(), this.isFixedPitch=r.readInt(), this.minMemType42=r.readInt(), this.maxMemType42=r.readInt(), this.minMemType1=r.readInt(), this.maxMemType1=r.readInt(), this.format){case 65536:break;case 131072:for(e=r.readUInt16(), this.glyphNameIndex=[], n=0;0<=e?n<e:e<n;0<=e?++n:--n)this.glyphNameIndex.push(r.readUInt16());for(this.names=[], i=[];r.pos<this.offset+this.length;)t=r.readByte(), i.push(this.names.push(r.readString(t)));return i;case 151552:return e=r.readUInt16(), this.offsets=r.read(e);case 196608:break;case 262144:return this.map=function(){var t,e,n;for(n=[], t=0, e=this.file.maxp.numGlyphs;0<=e?t<e:e<t;0<=e?++t:--t)n.push(r.readUInt32());return n}.call(this)}}, e}(),v=function(t,e){this.raw=t, this.length=t.length, this.platformID=e.platformID, this.encodingID=e.encodingID, this.languageID=e.languageID;},b=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="name", e.prototype.parse=function(t){var e,n,r,i,o,a,s,h,c,l,u,f;for(t.pos=this.offset, t.readShort(), e=t.readShort(), a=t.readShort(), n=[], i=c=0;0<=e?c<e:e<c;i=0<=e?++c:--c)n.push({platformID:t.readShort(),encodingID:t.readShort(),languageID:t.readShort(),nameID:t.readShort(),length:t.readShort(),offset:this.offset+a+t.readShort()});for(s={}, i=l=0, u=n.length;l<u;i=++l)r=n[i], t.pos=r.offset, h=t.readString(r.length), o=new v(h,r), null==s[f=r.nameID]&&(s[f]=[]), s[r.nameID].push(o);return this.strings=s, this.copyright=s[0], this.fontFamily=s[1], this.fontSubfamily=s[2], this.uniqueSubfamily=s[3], this.fontName=s[4], this.version=s[5], this.postscriptName=s[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g,""), this.trademark=s[7], this.manufacturer=s[8], this.designer=s[9], this.description=s[10], this.vendorUrl=s[11], this.designerUrl=s[12], this.license=s[13], this.licenseUrl=s[14], this.preferredFamily=s[15], this.preferredSubfamily=s[17], this.compatibleFull=s[18], this.sampleText=s[19]}, e}(),x=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="maxp", e.prototype.parse=function(t){return t.pos=this.offset, this.version=t.readInt(), this.numGlyphs=t.readUInt16(), this.maxPoints=t.readUInt16(), this.maxContours=t.readUInt16(), this.maxCompositePoints=t.readUInt16(), this.maxComponentContours=t.readUInt16(), this.maxZones=t.readUInt16(), this.maxTwilightPoints=t.readUInt16(), this.maxStorage=t.readUInt16(), this.maxFunctionDefs=t.readUInt16(), this.maxInstructionDefs=t.readUInt16(), this.maxStackElements=t.readUInt16(), this.maxSizeOfInstructions=t.readUInt16(), this.maxComponentElements=t.readUInt16(), this.maxComponentDepth=t.readUInt16()}, e}(),S=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="hmtx", e.prototype.parse=function(n){var t,r,i,e,o,a,s;for(n.pos=this.offset, this.metrics=[], e=0, a=this.file.hhea.numberOfMetrics;0<=a?e<a:a<e;0<=a?++e:--e)this.metrics.push({advance:n.readUInt16(),lsb:n.readInt16()});for(r=this.file.maxp.numGlyphs-this.file.hhea.numberOfMetrics, this.leftSideBearings=function(){var t,e;for(e=[], t=0;0<=r?t<r:r<t;0<=r?++t:--t)e.push(n.readInt16());return e}(), this.widths=function(){var t,e,n,r;for(r=[], t=0, e=(n=this.metrics).length;t<e;t++)i=n[t], r.push(i.advance);return r}.call(this), t=this.widths[this.widths.length-1], s=[], o=0;0<=r?o<r:r<o;0<=r?++o:--o)s.push(this.widths.push(t));return s}, e.prototype.forGlyph=function(t){return t in this.metrics?this.metrics[t]:{advance:this.metrics[this.metrics.length-1].advance,lsb:this.leftSideBearings[t-this.metrics.length]}}, e}(),k=[].slice,_=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="glyf", e.prototype.parse=function(t){return this.cache={}}, e.prototype.glyphFor=function(t){var e,n,r,i,o,a,s,h,c,l;return(t=t)in this.cache?this.cache[t]:(i=this.file.loca, e=this.file.contents, n=i.indexOf(t), 0===(r=i.lengthOf(t))?this.cache[t]=null:(e.pos=this.offset+n, o=(a=new X(e.read(r))).readShort(), h=a.readShort(), l=a.readShort(), s=a.readShort(), c=a.readShort(), this.cache[t]=-1===o?new I(a,h,l,s,c):new A(a,o,h,l,s,c), this.cache[t]))}, e.prototype.encode=function(t,e,n){var r,i,o,a,s;for(o=[], i=[], a=0, s=e.length;a<s;a++)r=t[e[a]], i.push(o.length), r&&(o=o.concat(r.encode(n)));return i.push(o.length), {table:o,offsets:i}}, e}(),A=function(){function t(t,e,n,r,i,o){this.raw=t, this.numberOfContours=e, this.xMin=n, this.yMin=r, this.xMax=i, this.yMax=o, this.compound=!1;}return t.prototype.encode=function(){return this.raw.data}, t}(),I=function(){function t(t,e,n,r,i){var o,a;for(this.raw=t, this.xMin=e, this.yMin=n, this.xMax=r, this.yMax=i, this.compound=!0, this.glyphIDs=[], this.glyphOffsets=[], o=this.raw;a=o.readShort(), this.glyphOffsets.push(o.pos), this.glyphIDs.push(o.readShort()), 32&a;)o.pos+=1&a?4:2, 128&a?o.pos+=8:64&a?o.pos+=4:8&a&&(o.pos+=2);}return t.prototype.encode=function(t){var e,n,r,i,o;for(n=new X(k.call(this.raw.data)), e=r=0, i=(o=this.glyphIDs).length;r<i;e=++r)o[e], n.pos=this.glyphOffsets[e];return n.data}, t}(),C=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return f(e,c), e.prototype.tag="loca", e.prototype.parse=function(r){var t;return r.pos=this.offset, t=this.file.head.indexToLocFormat, this.offsets=0===t?function(){var t,e,n;for(n=[], t=0, e=this.length;t<e;t+=2)n.push(2*r.readUInt16());return n}.call(this):function(){var t,e,n;for(n=[], t=0, e=this.length;t<e;t+=4)n.push(r.readUInt32());return n}.call(this)}, e.prototype.indexOf=function(t){return this.offsets[t]}, e.prototype.lengthOf=function(t){return this.offsets[t+1]-this.offsets[t]}, e.prototype.encode=function(t,e){for(var n=new Uint32Array(this.offsets.length),r=0,i=0,o=0;o<n.length;++o)if(n[o]=r, i<e.length&&e[i]==o){++i, n[o]=r;var a=this.offsets[o],s=this.offsets[o+1]-a;0<s&&(r+=s);}for(var h=new Array(4*n.length),c=0;c<n.length;++c)h[4*c+3]=255&n[c], h[4*c+2]=(65280&n[c])>>8, h[4*c+1]=(16711680&n[c])>>16, h[4*c]=(4278190080&n[c])>>24;return h}, e}(),T=function(){function t(t){this.font=t, this.subset={}, this.unicodes={}, this.next=33;}return t.prototype.generateCmap=function(){var t,e,n,r,i;for(e in r=this.font.cmap.tables[0].codeMap, t={}, i=this.subset)n=i[e], t[e]=r[n];return t}, t.prototype.glyphsFor=function(t){var e,n,r,i,o,a,s;for(r={}, o=0, a=t.length;o<a;o++)r[i=t[o]]=this.font.glyf.glyphFor(i);for(i in e=[], r)(null!=(n=r[i])?n.compound:void 0)&&e.push.apply(e,n.glyphIDs);if(0<e.length)for(i in s=this.glyphsFor(e))n=s[i], r[i]=n;return r}, t.prototype.encode=function(t){var e,n,r,i,o,a,s,h,c,l,u,f,d,p,g;for(n in e=m.encode(this.generateCmap(),"unicode"), i=this.glyphsFor(t), u={0:0}, g=e.charMap)u[(a=g[n]).old]=a.new;for(f in l=e.maxGlyphID, i)f in u||(u[f]=l++);return h=function(t){var e,n;for(e in n={}, t)n[t[e]]=e;return n}(u), c=Object.keys(h).sort(function(t,e){return t-e}), d=function(){var t,e,n;for(n=[], t=0, e=c.length;t<e;t++)o=c[t], n.push(h[o]);return n}(), r=this.font.glyf.encode(i,d,u), s=this.font.loca.encode(r.offsets,d), p={cmap:this.font.cmap.raw(),glyf:r.table,loca:s,hmtx:this.font.hmtx.raw(),hhea:this.font.hhea.raw(),maxp:this.font.maxp.raw(),post:this.font.post.raw(),name:this.font.name.raw(),head:this.font.head.raw()}, this.font.os2.exists&&(p["OS/2"]=this.font.os2.raw()), this.font.directory.encode(p)}, t}();t.API.PDFObject=function(){var o;function a(){}return o=function(t,e){return(Array(e+1).join("0")+t).slice(-e)}, a.convert=function(r){var i,t,e,n;if(Array.isArray(r))return"["+function(){var t,e,n;for(n=[], t=0, e=r.length;t<e;t++)i=r[t], n.push(a.convert(i));return n}().join(" ")+"]";if("string"==typeof r)return"/"+r;if(null!=r?r.isString:void 0)return"("+r+")";if(r instanceof Date)return"(D:"+o(r.getUTCFullYear(),4)+o(r.getUTCMonth(),2)+o(r.getUTCDate(),2)+o(r.getUTCHours(),2)+o(r.getUTCMinutes(),2)+o(r.getUTCSeconds(),2)+"Z)";if("[object Object]"==={}.toString.call(r)){for(t in e=["<<"], r)n=r[t], e.push("/"+t+" "+a.convert(n));return e.push(">>"), e.join("\n")}return""+r}, a}();}($), pt="undefined"!=typeof self&&self||"undefined"!=typeof window&&window||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")(), gt=function(){var c,n,r;function i(t){var e,n,r,i,o,a,s,h,c,l,u,f,d,p;for(this.data=t, this.pos=8, this.palette=[], this.imgData=[], this.transparency={}, this.animation=null, this.text={}, a=null;;){switch(e=this.readUInt32(), c=function(){var t,e;for(e=[], t=0;t<4;++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"===c&&(this.pos+=4, e-=4), t=(null!=a?a.data:void 0)||this.imgData, f=0;0<=e?f<e:e<f;0<=e?++f:--f)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(0<(l=r-this.transparency.indexed.length))for(d=0;0<=l?d<l:l<d;0<=l?++d:--d)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":s=(u=this.read(e)).indexOf(0), h=String.fromCharCode.apply(String,u.slice(0,s)), this.text[h]=String.fromCharCode.apply(String,u.slice(s+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===(p=this.colorType)||6===p, 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")}}i.load=function(t,e,n){var r;return"function"==typeof e&&(n=e), (r=new XMLHttpRequest).open("GET",t,!0), r.responseType="arraybuffer", r.onload=function(){var t;return t=new i(new Uint8Array(r.response||r.mozResponseArrayBuffer)), "function"==typeof(null!=e?e.getContext:void 0)&&t.render(e), "function"==typeof n?n(t):void 0}, r.send(null)}, i.prototype.read=function(t){var e,n;for(n=[], e=0;0<=t?e<t:t<e;0<=t?++e:--e)n.push(this.data[this.pos++]);return n}, i.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]}, i.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]}, i.prototype.decodePixels=function(E){var q=this.pixelBitlength/8,O=new Uint8Array(this.width*this.height*q),B=0,R=this;if(null==E&&(E=this.imgData), 0===E.length)return new Uint8Array(0);function t(t,e,n,r){var i,o,a,s,h,c,l,u,f,d,p,g,m,w,y,v,b,x,S,k,_,A=Math.ceil((R.width-t)/n),I=Math.ceil((R.height-e)/r),C=R.width==A&&R.height==I;for(w=q*A, g=C?O:new Uint8Array(w*I), c=E.length, o=m=0;m<I&&B<c;){switch(E[B++]){case 0:for(s=b=0;b<w;s=b+=1)g[o++]=E[B++];break;case 1:for(s=x=0;x<w;s=x+=1)i=E[B++], h=s<q?0:g[o-q], g[o++]=(i+h)%256;break;case 2:for(s=S=0;S<w;s=S+=1)i=E[B++], a=(s-s%q)/q, y=m&&g[(m-1)*w+a*q+s%q], g[o++]=(y+i)%256;break;case 3:for(s=k=0;k<w;s=k+=1)i=E[B++], a=(s-s%q)/q, h=s<q?0:g[o-q], y=m&&g[(m-1)*w+a*q+s%q], g[o++]=(i+Math.floor((h+y)/2))%256;break;case 4:for(s=_=0;_<w;s=_+=1)i=E[B++], a=(s-s%q)/q, h=s<q?0:g[o-q], 0===m?y=v=0:(y=g[(m-1)*w+a*q+s%q], v=a&&g[(m-1)*w+(a-1)*q+s%q]), l=h+y-v, u=Math.abs(l-h), d=Math.abs(l-y), p=Math.abs(l-v), f=u<=d&&u<=p?h:d<=p?y:v, g[o++]=(i+f)%256;break;default:throw new Error("Invalid filter algorithm: "+E[B-1])}if(!C){var T=((e+m*r)*R.width+t)*q,F=m*w;for(s=0;s<A;s+=1){for(var P=0;P<q;P+=1)O[T++]=g[F++];T+=(n-1)*q;}}m++;}}return E=(E=new kt(E)).getBytes(), 1==R.interlaceMethod?(t(0,0,8,8), t(4,0,8,8), t(0,4,4,8), t(2,0,4,4), t(0,2,2,4), t(1,0,2,2), t(0,1,1,2)):t(0,0,1,1), O}, i.prototype.decodePalette=function(){var t,e,n,r,i,o,a,s,h;for(n=this.palette, o=this.transparency.indexed||[], i=new Uint8Array((o.length||0)+n.length), r=0, n.length, e=a=t=0, s=n.length;a<s;e=a+=3)i[r++]=n[e], i[r++]=n[e+1], i[r++]=n[e+2], i[r++]=null!=(h=o[t++])?h:255;return i}, i.prototype.copyToImageData=function(t,e){var n,r,i,o,a,s,h,c,l,u,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), c=(i=t.data||t).length, a=l||e, o=s=0, 1===r)for(;o<c;)h=l?4*e[o/4]:s, u=a[h++], i[o++]=u, i[o++]=u, i[o++]=u, i[o++]=n?a[h++]:255, s=h;else for(;o<c;)h=l?4*e[o/4]:s, i[o++]=a[h++], i[o++]=a[h++], i[o++]=a[h++], i[o++]=n?a[h++]:255, s=h;}, i.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4), this.copyToImageData(t,this.decodePixels()), t};try{n=pt.document.createElement("canvas"), r=n.getContext("2d");}catch(t){return-1}return c=function(t){var e;return r.width=t.width, r.height=t.height, r.clearRect(0,0,t.width,t.height), r.putImageData(t,0,0), (e=new Image).src=n.toDataURL(), e}, i.prototype.decodeFrames=function(t){var e,n,r,i,o,a,s,h;if(this.animation){for(h=[], n=o=0, a=(s=this.animation.frames).length;o<a;n=++o)e=s[n], r=t.createImageData(e.width,e.height), i=this.decodePixels(new Uint8Array(e.data)), this.copyToImageData(r,i), e.imageData=r, h.push(e.image=c(r));return h}}, i.prototype.renderFrame=function(t,e){var n,r,i;return n=(r=this.animation.frames)[e], i=r[e-1], 0===e&&t.clearRect(0,0,this.width,this.height), 1===(null!=i?i.disposeOp:void 0)?t.clearRect(i.xOffset,i.yOffset,i.width,i.height):2===(null!=i?i.disposeOp:void 0)&&t.putImageData(i.imageData,i.xOffset,i.yOffset), 0===n.blendOp&&t.clearRect(n.xOffset,n.yOffset,n.width,n.height), t.drawImage(n.image,n.xOffset,n.yOffset)}, i.prototype.animate=function(n){var r,i,o,a,s,t,h=this;return i=0, t=this.animation, a=t.numFrames, o=t.frames, s=t.numPlays, (r=function(){var t,e;if(t=i++%a, e=o[t], h.renderFrame(n,t), 1<a&&i/a<s)return h.animation._timeout=setTimeout(r,e.delay)})()}, i.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)}, i.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))}, i}(), pt.PNG=gt;
202/*
203   * Extracted from pdf.js
204   * https://github.com/andreasgal/pdf.js
205   *
206   * Copyright (c) 2011 Mozilla Foundation
207   *
208   * Contributors: Andreas Gal <[email protected]>
209   *               Chris G Jones <[email protected]>
210   *               Shaon Barman <[email protected]>
211   *               Vivien Nicolas <[email protected]>
212   *               Justin D'Arcangelo <[email protected]>
213   *               Yury Delendik
214   *
215   * 
216   */
217var St=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(t<n)return e;for(var r=512;r<t;)r<<=1;for(var i=new Uint8Array(r),o=0;o<n;++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;r<n&&(n=r);}else{for(;!this.eof;)this.readBlock();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}(),kt=function(){if("undefined"!=typeof Uint32Array){var F=new Uint32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),P=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]),E=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]),q=[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,5243
21769,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],O=[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(t.prototype=Object.create(St.prototype)).getBits=function(t){for(var e,n=this.codeSize,r=this.codeBuf,i=this.bytes,o=this.bytesPos;n<t;)void 0===(e=i[o++])&&B("Bad encoding in flate stream"), r|=e<<n, n+=8;return e=r&(1<<t)-1, this.codeBuf=r>>t, this.codeSize=n-=t, this.bytesPos=o, e}, t.prototype.getCode=function(t){for(var e=t[0],n=t[1],r=this.codeSize,i=this.codeBuf,o=this.bytes,a=this.bytesPos;r<n;){var s;void 0===(s=o[a++])&&B("Bad encoding in flate stream"), i|=s<<r, r+=8;}var h=e[i&(1<<n)-1],c=h>>16,l=65535&h;return(0==r||r<c||0==c)&&B("Bad encoding in flate stream"), this.codeBuf=i>>c, this.codeSize=r-c, this.bytesPos=a, l}, t.prototype.generateHuffmanTable=function(t){for(var e=t.length,n=0,r=0;r<e;++r)t[r]>n&&(n=t[r]);for(var i=1<<n,o=new Uint32Array(i),a=1,s=0,h=2;a<=n;++a, s<<=1, h<<=1)for(var c=0;c<e;++c)if(t[c]==a){var l=0,u=s;for(r=0;r<a;++r)l=l<<1|1&u, u>>=1;for(r=l;r<i;r+=h)o[r]=a<<16|c;++s;}return[o,n]}, t.prototype.readBlock=function(){function t(t,e,n,r,i){for(var o=t.getBits(n)+r;0<o--;)e[h++]=i;}var e=this.getBits(3);if(1&e&&(this.eof=!0), 0!=(e>>=1)){var n,r;if(1==e)n=q, r=O;else if(2==e){for(var i=this.getBits(5)+257,o=this.getBits(5)+1,a=this.getBits(4)+4,s=Array(F.length),h=0;h<a;)s[F[h++]]=this.getBits(3);for(var c=this.generateHuffmanTable(s),l=0,u=(h=0, i+o),f=new Array(u);h<u;){var d=this.getCode(c);16==d?t(this,f,2,3,l):17==d?t(this,f,3,3,l=0):18==d?t(this,f,7,11,l=0):f[h++]=l=d;}n=this.generateHuffmanTable(f.slice(0,i)), r=this.generateHuffmanTable(f.slice(i,u));}else B("Unknown block type in flate stream");for(var p=(I=this.buffer)?I.length:0,g=this.bufferLength;;){var m=this.getCode(n);if(m<256)p<=g+1&&(p=(I=this.ensureBuffer(g+1)).length), I[g++]=m;else{if(256==m)return void(this.bufferLength=g);var w=(m=P[m-=257])>>16;0<w&&(w=this.getBits(w));l=(65535&m)+w;m=this.getCode(r), 0<(w=(m=E[m])>>16)&&(w=this.getBits(w));var y=(65535&m)+w;p<=g+l&&(p=(I=this.ensureBuffer(g+l)).length);for(var v=0;v<l;++v, ++g)I[g]=I[g-y];}}}else{var b,x=this.bytes,S=this.bytesPos;void 0===(b=x[S++])&&B("Bad block header in flate stream");var k=b;void 0===(b=x[S++])&&B("Bad block header in flate stream"), k|=b<<8, void 0===(b=x[S++])&&B("Bad block header in flate stream");var _=b;void 0===(b=x[S++])&&B("Bad block header in flate stream"), (_|=b<<8)!=(65535&~k)&&B("Bad uncompressed block length in flate stream"), this.codeBuf=0, this.codeSize=0;var A=this.bufferLength,I=this.ensureBuffer(A+k),C=A+k;this.bufferLength=C;for(var T=A;T<C;++T){if(void 0===(b=x[S++])){this.eof=!0;break}I[T]=b;}this.bytesPos=S;}}, t}function B(t){throw new Error(t)}function t(t){var e=0,n=t[e++],r=t[e++];-1!=n&&-1!=r||B("Invalid header in flate stream"), 8!=(15&n)&&B("Unknown compression method in flate stream"), ((n<<8)+r)%31!=0&&B("Bad FCHECK in flate stream"), 32&r&&B("FDICT bit set in flate stream"), this.bytes=t, this.bytesPos=2, this.codeSize=0, this.codeBuf=0, St.call(this);}}();return function(t){if("object"!=typeof t.console){t.console={};for(var e,n,r=t.console,i=function(){},o=["memory"],a="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");e=o.pop();)r[e]||(r[e]={});for(;n=a.pop();)r[n]||(r[n]=i);}var s,h,c,l,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
217+/=";void 0===t.btoa&&(t.btoa=function(t){var e,n,r,i,o,a=0,s=0,h="",c=[];if(!t)return t;for(;e=(o=t.charCodeAt(a++)<<16|t.charCodeAt(a++)<<8|t.charCodeAt(a++))>>18&63, n=o>>12&63, r=o>>6&63, i=63&o, c[s++]=u.charAt(e)+u.charAt(n)+u.charAt(r)+u.charAt(i), a<t.length;);h=c.join("");var l=t.length%3;return(l?h.slice(0,l-3):h)+"===".slice(l||3)}), void 0===t.atob&&(t.atob=function(t){var e,n,r,i,o,a,s=0,h=0,c=[];if(!t)return t;for(t+="";e=(a=u.indexOf(t.charAt(s++))<<18|u.indexOf(t.charAt(s++))<<12|(i=u.indexOf(t.charAt(s++)))<<6|(o=u.indexOf(t.charAt(s++))))>>16&255, n=a>>8&255, r=255&a, c[h++]=64==i?String.fromCharCode(e):64==o?String.fromCharCode(e,n):String.fromCharCode(e,n,r), s<t.length;);return c.join("")}), Array.prototype.map||(Array.prototype.map=function(t){if(null==this||"function"!=typeof t)throw new TypeError;for(var e=Object(this),n=e.length>>>0,r=new Array(n),i=1<arguments.length?arguments[1]:void 0,o=0;o<n;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(null==this||"function"!=typeof t)throw new TypeError;for(var n=Object(this),r=n.length>>>0,i=0;i<r;i++)i in n&&t.call(e,n[i],i,n);}), Object.keys||(Object.keys=(s=Object.prototype.hasOwnProperty, h=!{toString:null}.propertyIsEnumerable("toString"), l=(c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"]).length, function(t){if("object"!=typeof t&&("function"!=typeof t||null===t))throw new TypeError;var e,n,r=[];for(e in t)s.call(t,e)&&r.push(e);if(h)for(n=0;n<l;n++)s.call(t,c[n])&&r.push(c[n]);return r})), "function"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");t=Object(t);for(var e=1;e<arguments.length;e++){var n=arguments[e];if(null!=n)for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);}return t}), 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||"undefined"!=typeof commonjsGlobal&&commonjsGlobal||Function('return typeof this === "object" && this.content')()||Function("return this")()), $});
218});
219
220var jspdf_min_1 = jspdf_min.jsPDF;
221var jspdf_min_2 = jspdf_min.saveAs;
222var jspdf_min_3 = jspdf_min.GifWriter;
223var jspdf_min_4 = jspdf_min.GifReader;
224
225var Path = createCommonjsModule(function (module, exports) {
226Object.defineProperty(exports, "__esModule", {
227    value: true
228});
229var PATH = exports.PATH = {
230    VECTOR: 0,
231    BEZIER_CURVE: 1,
232    CIRCLE: 2
233};
234});
235
236unwrapExports(Path);
237var Path_1 = Path.PATH;
238
239var Color_1 = createCommonjsModule(function (module, exports) {
240Object.defineProperty(exports, "__esModule", {
241    value: true
242});
243
244var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
245
246var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
247
248function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
249
250var HEX3 = /^#([a-f0-9]{3})$/i;
251var hex3 = function hex3(value) {
252    var match = value.match(HEX3);
253    if (match) {
254        return [parseInt(match[1][0] + match[1][0], 16), parseInt(match[1][1] + match[1][1], 16), parseInt(match[1][2] + match[1][2], 16), null];
255    }
256    return false;
257};
258
259var HEX6 = /^#([a-f0-9]{6})$/i;
260var hex6 = function hex6(value) {
261    var match = value.match(HEX6);
262    if (match) {
263        return [parseInt(match[1].substring(0, 2), 16), parseInt(match[1].substring(2, 4), 16), parseInt(match[1].substring(4, 6), 16), null];
264    }
265    return false;
266};
267
268var RGB = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/;
269var rgb = function rgb(value) {
270    var match = value.match(RGB);
271    if (match) {
272        return [Number(match[1]), Number(match[2]), Number(match[3]), null];
273    }
274    return false;
275};
276
277var RGBA = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/;
278var rgba = function rgba(value) {
279    var match = value.match(RGBA);
280    if (match && match.length > 4) {
281        return [Number(match[1]), Number(match[2]), Number(match[3]), Number(match[4])];
282    }
283    return false;
284};
285
286var fromArray = function fromArray(array) {
287    return [Math.min(array[0], 255), Math.min(array[1], 255), Math.min(array[2], 255), array.length > 3 ? array[3] : null];
288};
289
290var namedColor = function namedColor(name) {
291    var color = NAMED_COLORS[name.toLowerCase()];
292    return color ? color : false;
293};
294
295var Color = function () {
296    function Color(value) {
297        _classCallCheck(this, Color);
298
299        var _ref = Array.isArray(value) ? fromArray(value) : hex3(value) || rgb(value) || rgba(value) || namedColor(value) || hex6(value) || [0, 0, 0, null],
300            _ref2 = _slicedToArray(_ref, 4),
301            r = _ref2[0],
302            g = _ref2[1],
303            b = _ref2[2],
304            a = _ref2[3];
305
306        this.r = r;
307        this.g = g;
308        this.b = b;
309        this.a = a;
310    }
311
312    _createClass(Color, [{
313        key: 'isTransparent',
314        value: function isTransparent() {
315            return this.a === 0;
316        }
317    }, {
318        key: 'toString',
319        value: function toString() {
320            return this.a !== null && this.a !== 1 ? 'rgba(' + this.r + ',' + this.g + ',' + this.b + ',' + this.a + ')' : 'rgb(' + this.r + ',' + this.g + ',' + this.b + ')';
321        }
322    }]);
323
324    return Color;
325}();
326
327exports.default = Color;
328
329
330var NAMED_COLORS = {
331    transparent: [0, 0, 0, 0],
332    aliceblue: [240, 248, 255, null],
333    antiquewhite: [250, 235, 215, null],
334    aqua: [0, 255, 255, null],
335    aquamarine: [127, 255, 212, null],
336    azure: [240, 255, 255, null],
337    beige: [245, 245, 220, null],
338    bisque: [255, 228, 196, null],
339    black: [0, 0, 0, null],
340    blanchedalmond: [255, 235, 205, null],
341    blue: [0, 0, 255, null],
342    blueviolet: [138, 43, 226, null],
343    brown: [165, 42, 42, null],
344    burlywood: [222, 184, 135, null],
345    cadetblue: [95, 158, 160, null],
346    chartreuse: [127, 255, 0, null],
347    chocolate: [210, 105, 30, null],
348    coral: [255, 127, 80, null],
349    cornflowerblue: [100, 149, 237, null],
350    cornsilk: [255, 248, 220, null],
351    crimson: [220, 20, 60, null],
352    cyan: [0, 255, 255, null],
353    darkblue: [0, 0, 139, null],
354    darkcyan: [0, 139, 139, null],
355    darkgoldenrod: [184, 134, 11, null],
356    darkgray: [169, 169, 169, null],
357    darkgreen: [0, 100, 0, null],
358    darkgrey: [169, 169, 169, null],
359    darkkhaki: [189, 183, 107, null],
360    darkmagenta: [139, 0, 139, null],
361    darkolivegreen: [85, 107, 47, null],
362    darkorange: [255, 140, 0, null],
363    darkorchid: [153, 50, 204, null],
364    darkred: [139, 0, 0, null],
365    darksalmon: [233, 150, 122, null],
366    darkseagreen: [143, 188, 143, null],
367    darkslateblue: [72, 61, 139, null],
368    darkslategray: [47, 79, 79, null],
369    darkslategrey: [47, 79, 79, null],
370    darkturquoise: [0, 206, 209, null],
371    darkviolet: [148, 0, 211, null],
372    deeppink: [255, 20, 147, null],
373    deepskyblue: [0, 191, 255, null],
374    dimgray: [105, 105, 105, null],
375    dimgrey: [105, 105, 105, null],
376    dodgerblue: [30, 144, 255, null],
377    firebrick: [178, 34, 34, null],
378    floralwhite: [255, 250, 240, null],
379    forestgreen: [34, 139, 34, null],
380    fuchsia: [255, 0, 255, null],
381    gainsboro: [220, 220, 220, null],
382    ghostwhite: [248, 248, 255, null],
383    gold: [255, 215, 0, null],
384    goldenrod: [218, 165, 32, null],
385    gray: [128, 128, 128, null],
386    green: [0, 128, 0, null],
387    greenyellow: [173, 255, 47, null],
388    grey: [128, 128, 128, null],
389    honeydew: [240, 255, 240, null],
390    hotpink: [255, 105, 180, null],
391    indianred: [205, 92, 92, null],
392    indigo: [75, 0, 130, null],
393    ivory: [255, 255, 240, null],
394    khaki: [240, 230, 140, null],
395    lavender: [230, 230, 250, null],
396    lavenderblush: [255, 240, 245, null],
397    lawngreen: [124, 252, 0, null],
398    lemonchiffon: [255, 250, 205, null],
399    lightblue: [173, 216, 230, null],
400    lightcoral: [240, 128, 128, null],
401    lightcyan: [224, 255, 255, null],
402    lightgoldenrodyellow: [250, 250, 210, null],
403    lightgray: [211, 211, 211, null],
404    lightgreen: [144, 238, 144, null],
405    lightgrey: [211, 211, 211, null],
406    lightpink: [255, 182, 193, null],
407    lightsalmon: [255, 160, 122, null],
408    lightseagreen: [32, 178, 170, null],
409    lightskyblue: [135, 206, 250, null],
410    lightslategray: [119, 136, 153, null],
411    lightslategrey: [119, 136, 153, null],
412    lightsteelblue: [176, 196, 222, null],
413    lightyellow: [255, 255, 224, null],
414    lime: [0, 255, 0, null],
415    limegreen: [50, 205, 50, null],
416    linen: [250, 240, 230, null],
417    magenta: [255, 0, 255, null],
418    maroon: [128, 0, 0, null],
419    mediumaquamarine: [102, 205, 170, null],
420    mediumblue: [0, 0, 205, null],
421    mediumorchid: [186, 85, 211, null],
422    mediumpurple: [147, 112, 219, null],
423    mediumseagreen: [60, 179, 113, null],
424    mediumslateblue: [123, 104, 238, null],
425    mediumspringgreen: [0, 250, 154, null],
426    mediumturquoise: [72, 209, 204, null],
427    mediumvioletred: [199, 21, 133, null],
428    midnightblue: [25, 25, 112, null],
429    mintcream: [245, 255, 250, null],
430    mistyrose: [255, 228, 225, null],
431    moccasin: [255, 228, 181, null],
432    navajowhite: [255, 222, 173, null],
433    navy: [0, 0, 128, null],
434    oldlace: [253, 245, 230, null],
435    olive: [128, 128, 0, null],
436    olivedrab: [107, 142, 35, null],
437    orange: [255, 165, 0, null],
438    orangered: [255, 69, 0, null],
439    orchid: [218, 112, 214, null],
440    palegoldenrod: [238, 232, 170, null],
441    palegreen: [152, 251, 152, null],
442    paleturquoise: [175, 238, 238, null],
443    palevioletred: [219, 112, 147, null],
444    papayawhip: [255, 239, 213, null],
445    peachpuff: [255, 218, 185, null],
446    peru: [205, 133, 63, null],
447    pink: [255, 192, 203, null],
448    plum: [221, 160, 221, null],
449    powderblue: [176, 224, 230, null],
450    purple: [128, 0, 128, null],
451    rebeccapurple: [102, 51, 153, null],
452    red: [255, 0, 0, null],
453    rosybrown: [188, 143, 143, null],
454    royalblue: [65, 105, 225, null],
455    saddlebrown: [139, 69, 19, null],
456    salmon: [250, 128, 114, null],
457    sandybrown: [244, 164, 96, null],
458    seagreen: [46, 139, 87, null],
459    seashell: [255, 245, 238, null],
460    sienna: [160, 82, 45, null],
461    silver: [192, 192, 192, null],
462    skyblue: [135, 206, 235, null],
463    slateblue: [106, 90, 205, null],
464    slategray: [112, 128, 144, null],
465    slategrey: [112, 128, 144, null],
466    snow: [255, 250, 250, null],
467    springgreen: [0, 255, 127, null],
468    steelblue: [70, 130, 180, null],
469    tan: [210, 180, 140, null],
470    teal: [0, 128, 128, null],
471    thistle: [216, 191, 216, null],
472    tomato: [255, 99, 71, null],
473    turquoise: [64, 224, 208, null],
474    violet: [238, 130, 238, null],
475    wheat: [245, 222, 179, null],
476    white: [255, 255, 255, null],
477    whitesmoke: [245, 245, 245, null],
478    yellow: [255, 255, 0, null],
479    yellowgreen: [154, 205, 50, null]
480};
481
482var TRANSPARENT = exports.TRANSPARENT = new Color([0, 0, 0, 0]);
483});
484
485unwrapExports(Color_1);
486var Color_2 = Color_1.TRANSPARENT;
487
488var textDecoration = createCommonjsModule(function (module, exports
488) {
489Object.defineProperty(exports, "__esModule", {
490    value: true
491});
492exports.parseTextDecoration = exports.TEXT_DECORATION_LINE = exports.TEXT_DECORATION = exports.TEXT_DECORATION_STYLE = undefined;
493
494
495
496var _Color2 = _interopRequireDefault(Color_1);
497
498function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
499
500var TEXT_DECORATION_STYLE = exports.TEXT_DECORATION_STYLE = {
501    SOLID: 0,
502    DOUBLE: 1,
503    DOTTED: 2,
504    DASHED: 3,
505    WAVY: 4
506};
507
508var TEXT_DECORATION = exports.TEXT_DECORATION = {
509    NONE: null
510};
511
512var TEXT_DECORATION_LINE = exports.TEXT_DECORATION_LINE = {
513    UNDERLINE: 1,
514    OVERLINE: 2,
515    LINE_THROUGH: 3,
516    BLINK: 4
517};
518
519var parseLine = function parseLine(line) {
520    switch (line) {
521        case 'underline':
522            return TEXT_DECORATION_LINE.UNDERLINE;
523        case 'overline':
524            return TEXT_DECORATION_LINE.OVERLINE;
525        case 'line-through':
526            return TEXT_DECORATION_LINE.LINE_THROUGH;
527    }
528    return TEXT_DECORATION_LINE.BLINK;
529};
530
531var parseTextDecorationLine = function parseTextDecorationLine(line) {
532    if (line === 'none') {
533        return null;
534    }
535
536    return line.split(' ').map(parseLine);
537};
538
539var parseTextDecorationStyle = function parseTextDecorationStyle(style) {
540    switch (style) {
541        case 'double':
542            return TEXT_DECORATION_STYLE.DOUBLE;
543        case 'dotted':
544            return TEXT_DECORATION_STYLE.DOTTED;
545        case 'dashed':
546            return TEXT_DECORATION_STYLE.DASHED;
547        case 'wavy':
548            return TEXT_DECORATION_STYLE.WAVY;
549    }
550    return TEXT_DECORATION_STYLE.SOLID;
551};
552
553var parseTextDecoration = exports.parseTextDecoration = function parseTextDecoration(style) {
554    var textDecorationLine = parseTextDecorationLine(style.textDecorationLine ? style.textDecorationLine : style.textDecoration);
555    if (textDecorationLine === null) {
556        return TEXT_DECORATION.NONE;
557    }
558
559    var textDecorationColor = style.textDecorationColor ? new _Color2.default(style.textDecorationColor) : null;
560    var textDecorationStyle = parseTextDecorationStyle(style.textDecorationStyle);
561
562    return {
563        textDecorationLine: textDecorationLine,
564        textDecorationColor: textDecorationColor,
565        textDecorationStyle: textDecorationStyle
566    };
567};
568});
569
570unwrapExports(textDecoration);
571var textDecoration_1 = textDecoration.parseTextDecoration;
572var textDecoration_2 = textDecoration.TEXT_DECORATION_LINE;
573var textDecoration_3 = textDecoration.TEXT_DECORATION;
574var textDecoration_4 = textDecoration.TEXT_DECORATION_STYLE;
575
576var CanvasRenderer_1 = createCommonjsModule(function (module, exports) {
577Object.defineProperty(exports, "__esModule", {
578    value: true
579});
580
581var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
582
583
584
585
586
587function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
588
589var addColorStops = function addColorStops(gradient, canvasGradient) {
590    var maxStop = Math.max.apply(null, gradient.colorStops.map(function (colorStop) {
591        return colorStop.stop;
592    }));
593    var f = 1 / Math.max(1, maxStop);
594    gradient.colorStops.forEach(function (colorStop) {
595        canvasGradient.addColorStop(f * colorStop.stop, colorStop.color.toString());
596    });
597};
598
599var CanvasRenderer = function () {
600    function CanvasRenderer(canvas) {
601        _classCallCheck(this, CanvasRenderer);
602
603        this.canvas = canvas ? canvas : document.createElement('canvas');
604    }
605
606    _createClass(CanvasRenderer, [{
607        key: 'render',
608        value: function render(options) {
609            this.ctx = this.canvas.getContext('2d');
610            this.options = options;
611            this.canvas.width = Math.floor(options.width * options.scale);
612            this.canvas.height = Math.floor(options.height * options.scale);
613            this.canvas.style.width = options.width + 'px';
614            this.canvas.style.height = options.height + 'px';
615
616            this.ctx.scale(this.options.scale, this.options.scale);
617            this.ctx.translate(-options.x, -options.y);
618            this.ctx.textBaseline = 'bottom';
619            options.logger.log('Canvas renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + this.options.scale);
620        }
621    }, {
622        key: 'clip',
623        value: function clip(clipPaths, callback) {
624            var _this = this;
625
626            if (clipPaths.length) {
627                this.ctx.save();
628                clipPaths.forEach(function (path) {
629                    _this.path(path);
630                    _this.ctx.clip();
631                });
632            }
633
634            callback();
635
636            if (clipPaths.length) {
637                this.ctx.restore();
638            }
639        }
640    }, {
641        key: 'drawImage',
642        value: function drawImage(image, source, destination) {
643            this.ctx.drawImage(image, source.left, source.top, source.width, source.height, destination.left, destination.top, destination.width, destination.height);
644        }
645    }, {
646        key: 'drawShape',
647        value: function drawShape(path, color) {
648            this.path(path);
649            this.ctx.fillStyle = color.toString();
650            this.ctx.fill();
651        }
652    }, {
653        key: 'fill',
654        value: function fill(color) {
655            this.ctx.fillStyle = color.toString();
656            this.ctx.fill();
657        }
658    }, {
659        key: 'getTarget',
660        value: function getTarget() {
661            this.canvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);
662            return Promise.resolve(this.canvas);
663        }
664    }, {
665        key: 'path',
666        value: function path(_path) {
667            var _this2 = this;
668
669            this.ctx.beginPath();
670            if (Array.isArray(_path)) {
671                _path.forEach(function (point, index) {
672                    var start = point.type === Path.PATH.VECTOR ? point : point.start;
673                    if (index === 0) {
674                        _this2.ctx.moveTo(start.x, start.y);
675                    } else {
676                        _this2.ctx.lineTo(start.x, start.y);
677                    }
678
679                    if (point.type === Path.PATH.BEZIER_CURVE) {
680                        _this2.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
681                    }
682                });
683            } else {
684                this.ctx.arc(_path.x + _path.radius, _path.y + _path.radius, _path.radius, 0, Math.PI * 2, true);
685            }
686
687            this.ctx.closePath();
688        }
689    }, {
690        key: 'rectangle',
691        value: function rectangle(x, y, width, height, color) {
692            this.ctx.fillStyle = color.toString();
693            this.ctx.fillRect(x, y, width, height);
694        }
695    }, {
696        key: 'renderLinearGradient',
697        value: function renderLinearGradient(bounds, gradient) {
698            var linearGradient = this.ctx.createLinearGradient(bounds.left + gradient.direction.x1, bounds.top + gradient.direction.y1, bounds.left + gradient.direction.x0, bounds.top + gradient.direction.y0);
699
700            addColorStops(gradient, linearGradient);
701            this.ctx.fillStyle = linearGradient;
702            this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);
703        }
704    }, {
705        key: 'renderRadialGradient',
706        value: function renderRadialGradient(bounds, gradient) {
707            var _this3 = this;
708
709            var x = bounds.left + gradient.center.x;
710            var y = bounds.top + gradient.center.y;
711
712            var radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, gradient.radius.x);
713            if (!radialGradient) {
714                return;
715            }
716
717            addColorStops(gradient, radialGradient);
718            this.ctx.fillStyle = radialGradient;
719
720            if (gradient.radius.x !== gradient.radius.y) {
721                // transforms for elliptical radial gradient
722                var midX = bounds.left + 0.5 * bounds.width;
723                var midY = bounds.top + 0.5 * bounds.height;
724                var f = gradient.radius.y / gradient.radius.x;
725                var invF = 1 / f;
726
727                this.transform(midX, midY, [1, 0, 0, f, 0, 0], function () {
728                    return _this3.ctx.fillRect(bounds.left, invF * (bounds.top - midY) + midY, bounds.width, bounds.height * invF);
729                });
730            } else {
731                this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);
732            }
733        }
734    }, {
735        key: 'renderRepeat',
736        value: function renderRepeat(path, image, imageSize, offsetX, offsetY) {
737            this.path(path);
738            this.ctx.fillStyle = this.ctx.createPattern(this.resizeImage(image, imageSize), 'repeat');
739            this.ctx.translate(offsetX, offsetY);
740            this.ctx.fill();
741            this.ctx.translate(-offsetX, -offsetY);
742        }
743    }, {
744        key: 'renderTextNode',
745        value: function renderTextNode(textBounds, color, font, textDecoration$$1, textShadows) {
746            var _this4 = this;
747
748            this.ctx.font = [font.fontStyle, font.fontVariant, font.fontWeight, font.fontSize, font.fontFamily].join(' ');
749
750            textBounds.forEach(function (text) {
751                _this4.ctx.fillStyle = color.toString();
752                if (textShadows && text.text.trim().length) {
753                    textShadows.slice(0).reverse().forEach(function (textShadow) {
754                        _this4.ctx.shadowColor = textShadow.color.toString();
755                        _this4.ctx.shadowOffsetX = textShadow.offsetX * _this4.options.scale;
756                        _this4.ctx.shadowOffsetY = textShadow.offsetY * _this4.options.scale;
757                        _this4.ctx.shadowBlur = textShadow.blur;
758
759                        _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);
760                    });
761                } else {
762                    _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);
763                }
764
765                if (textDecoration$$1 !== null) {
766                    var textDecorationColor = textDecoration$$1.textDecorationColor || color;
767                    textDecoration$$1.textDecorationLine.forEach(function (textDecorationLine) {
768                        switch (textDecorationLine) {
769                            case textDecoration.TEXT_DECORATION_LINE.UNDERLINE:
770                                // Draws a line at the baseline of the font
771                                // TODO As some browsers display the line as more than 1px if the font-size is big,
772                                // need to take that into account both in position and size
773                                var _options$fontMetrics$ = _this4.options.fontMetrics.getMetrics(font),
774                                    baseline = _options$fontMetrics$.baseline;
775
776                                _this4.rectangle(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1, textDecorationColor);
777                                break;
778                            case textDecoration.TEXT_DECORATION_LINE.OVERLINE:
779                                _this4.rectangle(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1, textDecorationColor);
780                                break;
781                            case textDecoration.TEXT_DECORATION_LINE.LINE_THROUGH:
782                                // TODO try and find exact position for line-through
783                                var _options$fontMetrics$2 = _this4.options.fontMetrics.getMetrics(font),
784                                    middle = _options$fontMetrics$2.middle;
785
786                                _this4.rectangle(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1, textDecorationColor);
787                                break;
788                        }
789                    });
790                }
791            });
792        }
793    }, {
794        key: 'resizeImage',
795        value: function resizeImage(image, size) {
796            if (image.width === size.width && image.height === size.height) {
797                return image;
798            }
799
800            var canvas = this.canvas.ownerDocument.createElement('canvas');
801            canvas.width = size.width;
802            canvas.height = size.height;
803            var ctx = canvas.getContext('2d');
804            ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height);
805            return canvas;
806        }
807    }, {
808        key: 'setOpacity',
809        value: function setOpacity(opacity) {
810            this.ctx.globalAlpha = opacity;
811        }
812    }, {
813        key: 'transform',
814        value: function transform(offsetX, offsetY, matrix, callback) {
815            this.ctx.save();
816            this.ctx.translate(offsetX, offsetY);
817            this.ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
818            this.ctx.translate(-offsetX, -offsetY);
819
820            callback();
821
822            this.ctx.restore();
823        }
824    }]);
825
826    return CanvasRenderer;
827}();
828
829exports.default = CanvasRenderer;
830});
831
832unwrapExports(CanvasRenderer_1);
833
834var Logger_1 = createCommonjsModule(function (module, exports) {
835Object.defineProperty(exports, "__esModule", {
836    value: true
837});
838
839var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
840
841function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
842
843var Logger = function () {
844    function Logger(enabled, id, start) {
845        _classCallCheck(this, Logger);
846
847        this.enabled = typeof window !== 'undefined' && enabled;
848        this.start = start ? start : Date.now();
849        this.id = id;
850    }
851
852    _createClass(Logger, [{
853        key: 'child',
854        value: function child(id) {
855            return new Logger(this.enabled, id, this.start);
856        }
857
858        // eslint-disable-next-line flowtype/no-weak-types
859
860    }, {
861        key: 'log',
862        value: function log() {
863            if (this.enabled && window.console && window.console.log) {
864                for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
865                    args[_key] = arguments[_key];
866                }
867
868                Function.prototype.bind.call(window.console.log, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0)));
869            }
870        }
871
872        // eslint-disable-next-line flowtype/no-weak-types
873
874    }, {
875        key: 'error',
876        value: function error() {
877            if (this.enabled && window.console && window.console.error) {
878                for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
879                    args[_key2] = arguments[_key2];
880                }
881
882                Function.prototype.bind.call(window.console.error, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0)));
883            }
884        }
885    }]);
886
887    return Logger;
888}();
889
890exports.default = Logger;
891});
892
893unwrapExports(Logger_1);
894
895var Util = createCommonjsModule(function (module, exports) {
896Object.defineProperty(exports, "__esModule", {
897    value: true
898});
899var contains = exports.contains = function contains(bit, value) {
900    return (bit & value) !== 0;
901};
902
903var distance = exports.distance = function distance(a, b) {
904    return Math.sqrt(a * a + b * b);
905};
906
907var copyCSSStyles = exports.copyCSSStyles = function copyCSSStyles(style, target) {
908    // Edge does not provide value for cssText
909    for (var i = style.length - 1; i >= 0; i--) {
910        var property = style.item(i);
911        // Safari shows pseudoelements if content is set
912        if (property !== 'content') {
913            target.style.setProperty(property, style.getPropertyValue(property));
914        }
915    }
916    return target;
917};
918
919var SMALL_IMAGE = exports.SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
920});
921
922unwrapExports(Util);
923var Util_1 = Util.contains;
924var Util_2 = Util.distance;
925var Util_3 = Util.copyCSSStyles;
926var Util_4 = Util.SMALL_IMAGE;
927
928var Length_1 = createCommonjsModule(function (module, exports) {
929Object.defineProperty(exports, "__esModule", {
930    value: true
931});
932exports.calculateLengthFromValueWithUnit = exports.LENGTH_TYPE = undefined;
933
934var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
935
936
937
938var _NodeContainer2 = _interopRequireDefault(NodeContainer_1);
939
940function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
941
942function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
943
944var LENGTH_TYPE = exports.LENGTH_TYPE = {
945    PX: 0,
946    PERCENTAGE: 1
947};
948
949var Length = function () {
950    function Length(value) {
951        _classCallCheck(this, Length);
952
953        this.type = value.substr(value.length - 1) === '%' ? LENGTH_TYPE.PERCENTAGE : LENGTH_TYPE.PX;
954        var parsedValue = parseFloat(value);
955        this.value = isNaN(parsedValue) ? 0 : parsedValue;
956    }
957
958    _createClass(Length, [{
959        key: 'isPercentage',
960        value: function isPercentage() {
961            return this.type === LENGTH_TYPE.PERCENTAGE;
962        }
963    }, {
964        key: 'getAbsoluteValue',
965        value: function getAbsoluteValue(parentLength) {
966            return this.isPercentage() ? parentLength * (this.value / 100) : this.value;
967        }
968    }], [{
969        key: 'create',
970        value: function create(v) {
971            return new Length(v);
972        }
973    }]);
974
975    return Length;
976}();
977
978exports.default = Length;
979
980
981var getRootFontSize = function getRootFontSize(container) {
982    var parent = container.parent;
983    return parent ? getRootFontSize(parent) : parseFloat(container.style.font.fontSize);
984};
985
986var calculateLengthFromValueWithUnit = exports.calculateLengthFromValueWithUnit = function calculateLengthFromValueWithUnit(container, value, unit) {
987    switch (unit) {
988        case 'px':
989        case '%':
990            return new Length(value + unit);
991        case 'em':
992        case 'rem':
993            var length = new Length(value);
994            length.value *= unit === 'em' ? parseFloat(container.style.font.fontSize) : getRootFontSize(container);
995            return length;
996        default:
997            // TODO: handle correctly if unknown unit is used
998            return new Length('0');
999    }
1000};
1001});
1002
1003unwrapExports(Length_1);
1004var Length_2 = Length_1.calculateLengthFromValueWithUnit;
1005var Length_3 = Length_1.LENGTH_TYPE;
1006
1007var Size_1 = createCommonjsModule(function (module, exports) {
1008Object.defineProperty(exports, "__esModule", {
1009    value: true
1010});
1011
1012function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1013
1014var Size = function Size(width, height) {
1015    _classCallCheck(this, Size);
1016
1017    this.width = width;
1018    this.height = height;
1019};
1020
1021exports.default = Size;
1022});
1023
1024unwrapExports(Size_1);
1025
1026var Vector_1 = createCommonjsModule(function (module, exports) {
1027Object.defineProperty(exports, "__esModule", {
1028    value: true
1029});
1030
1031
1032
1033function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1034
1035var Vector = function Vector(x, y) {
1036    _classCallCheck(this, Vector);
1037
1038    this.type = Path.PATH.VECTOR;
1039    this.x = x;
1040    this.y = y;
1041    
1042};
1043
1044exports.default = Vector;
1045});
1046
1047unwrapExports(Vector_1);
1048
1049var BezierCurve_1 = createCommonjsModule(function (module, exports) {
1050Object.defineProperty(exports, "__esModule", {
1051    value: true
1052});
1053
1054var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1055
1056
1057
1058
1059
1060var _Vector2 = _interopRequireDefault(Vector_1);
1061
1062function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1063
1064function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1065
1066var lerp = function lerp(a, b, t) {
1067    return new _Vector2.default(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
1068};
1069
1070var BezierCurve = function () {
1071    function BezierCurve(start, startControl, endControl, end) {
1072        _classCallCheck(this, BezierCurve);
1073
1074        this.type = Path.PATH.BEZIER_CURVE;
1075        this.start = start;
1076        this.startControl = startControl;
1077        this.endControl = endControl;
1078        this.end = end;
1079    }
1080
1081    _createClass(BezierCurve, [{
1082        key: 'subdivide',
1083        value: function subdivide(t, firstHalf) {
1084            var ab = lerp(this.start, this.startControl, t);
1085            var bc = lerp(this.startControl, this.endControl, t);
1086            var cd = lerp(this.endControl, this.end, t);
1087            var abbc = lerp(ab, bc, t);
1088            var bccd = lerp(bc, cd, t);
1089            var dest = lerp(abbc, bccd, t);
1090            return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);
1091        }
1092    }, {
1093        key: 'reverse',
1094        value: function reverse() {
1095            return new BezierCurve(this.end, this.endControl, this.startControl, this.start);
1096        }
1097    }]);
1098
1099    return BezierCurve;
1100}();
1101
1102exports.default = BezierCurve;
1103});
1104
1105unwrapExports(BezierCurve_1);
1106
1107var Bounds_1 = createCommonjsModule(function (module, exports) {
1108Object.defineProperty(exports, "__esModule", {
1109    value: true
1110});
1111exports.parseBoundCurves = exports.calculatePaddingBoxPath = exports.calculateBorderBoxPath = exports.parsePathForBorder = exports.parseDocumentSize = exports.calculateContentBox = exports.calculatePaddingBox = exports.parseBounds = exports.Bounds = undefined;
1112
1113var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1114
1115
1116
1117var _Vector2 = _interopRequireDefault(Vector_1);
1118
1119
1120
1121var _BezierCurve2 = _interopRequireDefault(BezierCurve_1);
1122
1123function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1124
1125function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1126
1127var TOP = 0;
1128var RIGHT = 1;
1129var BOTTOM = 2;
1130var LEFT = 3;
1131
1132var H = 0;
1133var V = 1;
1134
1135var Bounds = exports.Bounds = function () {
1136    function Bounds(x, y, w, h) {
1137        _classCallCheck(this, Bounds);
1138
1139        this.left = x;
1140        this.top = y;
1141        this.width = w;
1142        this.height = h;
1143    }
1144
1145    _createClass(Bounds, null, [{
1146        key: 'fromClientRect',
1147        value: function fromClientRect(clientRect, scrollX, scrollY) {
1148            return new Bounds(clientRect.left + scrollX, clientRect.top + scrollY, clientRect.width, clientRect.height);
1149        }
1150    }]);
1151
1152    return Bounds;
1153}();
1154
1155var parseBounds = exports.parseBounds = function parseBounds(node, scrollX, scrollY) {
1156    return Bounds.fromClientRect(node.getBoundingClientRect(), scrollX, scrollY);
1157};
1158
1159var calculatePaddingBox = exports.calculatePaddingBox = function calculatePaddingBox(bounds, borders) {
1160    return new Bounds(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth));
1161};
1162
1163var calculateContentBox = exports.calculateContentBox = function calculateContentBox(bounds, padding, borders) {
1164    // TODO support percentage paddings
1165    var paddingTop = padding[TOP].value;
1166    var paddingRight = padding[RIGHT].value;
1167    var paddingBottom = padding[BOTTOM].value;
1168    var paddingLeft = padding[LEFT].value;
1169
1170    return new Bounds(bounds.left + paddingLeft + borders[LEFT].borderWidth, bounds.top + paddingTop + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth + paddingLeft + paddingRight), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth + paddingTop + paddingBottom));
1171};
1172
1173var parseDocumentSize = exports.parseDocumentSize = function parseDocumentSize(document) {
1174    var body = document.body;
1175    var documentElement = document.documentElement;
1176
1177    if (!body || !documentElement) {
1178        throw new Error('');
1179    }
1180    var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
1181
1182    var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
1183
1184    return new Bounds(0, 0, width, height);
1185};
1186
1187var parsePathForBorder = exports.parsePathForBorder = function parsePathForBorder(curves, borderSide) {
1188    switch (borderSide) {
1189        case TOP:
1190            return createPathFromCurves(curves.topLeftOuter, curves.topLeftInner, curves.topRightOuter, curves.topRightInner);
1191        case RIGHT:
1192            return createPathFromCurves(curves.topRightOuter, curves.topRightInner, curves.bottomRightOuter, curves.bottomRightInner);
1193        case BOTTOM:
1194            return createPathFromCurves(curves.bottomRightOuter, curves.bottomRightInner, curves.bottomLeftOuter, curves.bottomLeftInner);
1195        case LEFT:
1196        default:
1197            return createPathFromCurves(curves.bottomLeftOuter, curves.bottomLeftInner, curves.topLeftOuter, curves.topLeftInner);
1198    }
1199};
1200
1201var createPathFromCurves = function createPathFromCurves(outer1, inner1, outer2, inner2) {
1202    var path = [];
1203    if (outer1 instanceof _BezierCurve2.default) {
1204        path.push(outer1.subdivide(0.5, false));
1205    } else {
1206        path.push(outer1);
1207    }
1208
1209    if (outer2 instanceof _BezierCurve2.default) {
1210        path.push(outer2.subdivide(0.5, true));
1211    } else {
1212        path.push(outer2);
1213    }
1214
1215    if (inner2 instanceof _BezierCurve2.default) {
1216        path.push(inner2.subdivide(0.5, true).reverse());
1217    } else {
1218        path.push(inner2);
1219    }
1220
1221    if (inner1 instanceof _BezierCurve2.default) {
1222        path.push(inner1.subdivide(0.5, false).reverse());
1223    } else {
1224        path.push(inner1);
1225    }
1226
1227    return path;
1228};
1229
1230var calculateBorderBoxPath = exports.calculateBorderBoxPath = function calculateBorderBoxPath(curves) {
1231    return [curves.topLeftOuter, curves.topRightOuter, curves.bottomRightOuter, curves.bottomLeftOuter];
1232};
1233
1234var calculatePaddingBoxPath = exports.calculatePaddingBoxPath = function calculatePaddingBoxPath(curves) {
1235    return [curves.topLeftInner, curves.topRightInner, curves.bottomRightInner, curves.bottomLeftInner];
1236};
1237
1238var parseBoundCurves = exports.parseBoundCurves = function parseBoundCurves(bounds, borders, borderRadius) {
1239    var tlh = borderRadius[CORNER.TOP_LEFT][H].getAbsoluteValue(bounds.width);
1240    var tlv = borderRadius[CORNER.TOP_LEFT][V].getAbsoluteValue(bounds.height);
1241    var trh = borderRadius[CORNER.TOP_RIGHT][H].getAbsoluteValue(bounds.width);
1242    var trv = borderRadius[CORNER.TOP_RIGHT][V].getAbsoluteValue(bounds.height);
1243    var brh = borderRadius[CORNER.BOTTOM_RIGHT][H].getAbsoluteValue(bounds.width);
1244    var brv = borderRadius[CORNER.BOTTOM_RIGHT][V].getAbsoluteValue(bounds.height);
1245    var blh = borderRadius[CORNER.BOTTOM_LEFT][H].getAbsoluteValue(bounds.width);
1246    var blv = borderRadius[CORNER.BOTTOM_LEFT][V].getAbsoluteValue(bounds.height);
1247
1248    var factors = [];
1249    factors.push((tlh + trh) / bounds.width);
1250    factors.push((blh + brh) / bounds.width);
1251    factors.push((tlv + blv) / bounds.height);
1252    factors.push((trv + brv) / bounds.height);
1253    var maxFactor = Math.max.apply(Math, factors);
1254
1255    if (maxFactor > 1) {
1256        tlh /= maxFactor;
1257        tlv /= maxFactor;
1258        trh /= maxFactor;
1259        trv /= maxFactor;
1260        brh /= maxFactor;
1261        brv /= maxFactor;
1262        blh /= maxFactor;
1263        blv /= maxFactor;
1264    }
1265
1266    var topWidth = bounds.width - trh;
1267    var rightHeight = bounds.height - brv;
1268    var bottomWidth = bounds.width - brh;
1269    var leftHeight = bounds.height - blv;
1270
1271    return {
1272        topLeftOuter: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new _Vector2.default(bounds.left, bounds.top),
1273        topLeftInner: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, Math.max(0, tlh - borders[LEFT].borderWidth), Math.max(0, tlv - borders[TOP].borderWidth), CORNER.TOP_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth),
1274        topRightOuter: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top),
1275        topRightInner: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borders[LEFT].borderWidth), bounds.top + borders[TOP].borderWidth, topWidth > bounds.width + borders[LEFT].borderWidth ? 0 : trh - borders[LEFT].borderWidth, trv - borders[TOP].borderWidth, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + borders[TOP].borderWidth),
1276        bottomRightOuter: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top + bounds.height),
1277        bottomRightInner: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borders[LEFT].borderWidth), bounds.top + Math.min(rightHeight, bounds.height + borders[TOP].borderWidth), Math.max(0, brh - borders[RIGHT].borderWidth), brv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth),
1278        bottomLeftOuter: blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left, bounds.top + bounds.height),
1279        bottomLeftInner: blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + leftHeight, Math.max(0, blh - borders[LEFT].borderWidth), blv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth)
1280    };
1281};
1282
1283var CORNER = {
1284    TOP_LEFT: 0,
1285    TOP_RIGHT: 1,
1286    BOTTOM_RIGHT: 2,
1287    BOTTOM_LEFT: 3
1288};
1289
1290var getCurvePoints = function getCurvePoints(x, y, r1, r2, position) {
1291    var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
1292    var ox = r1 * kappa; // control point offset horizontal
1293    var oy = r2 * kappa; // control point offset vertical
1294    var xm = x + r1; // x-middle
1295    var ym = y + r2; // y-middle
1296
1297    switch (position) {
1298        case CORNER.TOP_LEFT:
1299            return new _BezierCurve2.default(new _Vector2.default(x, ym), new _Vector2.default(x, ym - oy), new _Vector2.default(xm - ox, y), new _Vector2.default(xm, y));
1300        case CORNER.TOP_RIGHT:
1301            return new _BezierCurve2.default(new _Vector2.default(x, y), new _Vector2.default(x + ox, y), new _Vector2.default(xm, ym - oy), new _Vector2.default(xm, ym));
1302        case CORNER.BOTTOM_RIGHT:
1303            return new _BezierCurve2.default(new _Vector2.default(xm, y), new _Vector2.default(xm, y + oy), new _Vector2.default(x + ox, ym), new _Vector2.default(x, ym));
1304        case CORNER.BOTTOM_LEFT:
1305        default:
1306            return new _BezierCurve2.default(new _Vector2.default(xm, ym), new _Vector2.default(xm - ox, ym), new _Vector2.default(x, y + oy), new _Vector2.default(x, y));
1307    }
1308};
1309});
1310
1311unwrapExports(Bounds_1);
1312var Bounds_2 = Bounds_1.parseBoundCurves;
1313var Bounds_3 = Bounds_1.calculatePaddingBoxPath;
1314var Bounds_4 = Bounds_1.calculateBorderBoxPath;
1315var Bounds_5 = Bounds_1.parsePathForBorder;
1316var Bounds_6 = Bounds_1.parseDocumentSize;
1317var Bounds_7 = Bounds_1.calculateContentBox;
1318var Bounds_8 = Bounds_1.calculatePaddingBox;
1319var Bounds_9 = Bounds_1.parseBounds;
1320var Bounds_10 = Bounds_1.Bounds;
1321
1322var padding = createCommonjsModule(function (module, exports) {
1323Object.defineProperty(exports, "__esModule", {
1324    value: true
1325});
1326exports.parsePadding = exports.PADDING_SIDES = undefined;
1327
1328
1329
1330var _Length2 = _interopRequireDefault(Length_1);
1331
1332function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1333
1334var PADDING_SIDES = exports.PADDING_SIDES = {
1335    TOP: 0,
1336    RIGHT: 1,
1337    BOTTOM: 2,
1338    LEFT: 3
1339};
1340
1341var SIDES = ['top', 'right', 'bottom', 'left'];
1342
1343var parsePadding = exports.parsePadding = function parsePadding(style) {
1344    return SIDES.map(function (side) {
1345        return new _Length2.default(style.getPropertyValue('padding-' + side));
1346    });
1347};
1348});
1349
1350unwrapExports(padding);
1351var padding_1 = padding.parsePadding;
1352var padding_2 = padding.PADDING_SIDES;
1353
1354var background = createCommonjsModule(function (module, exports) {
1355Object.defineProperty(exports, "__esModule", {
1356    value: true
1357});
1358exports.parseBackgroundImage = exports.parseBackground = exports.calculateBackgroundRepeatPath = exports.calculateBackgroundPosition = exports.calculateBackgroungPositioningArea = exports.calculateBackgroungPaintingArea = exports.calculateGradientBackgroundSize = exports.calculateBackgroundSize = exports.BACKGROUND_ORIGIN = exports.BACKGROUND_CLIP = exports.BACKGROUND_SIZE = exports.BACKGROUND_REPEAT = undefined;
1359
1360
1361
1362var _Color2 = _interopRequireDefault(Color_1);
1363
1364
1365
1366var _Length2 = _interopRequireDefault(Length_1);
1367
1368
1369
1370var _Size2 = _interopRequireDefault(Size_1);
1371
1372
1373
1374var _Vector2 = _interopRequireDefault(Vector_1);
1375
1376
1377
1378
1379
1380function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1381
1382function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1383
1384var BACKGROUND_REPEAT = exports.BACKGROUND_REPEAT = {
1385    REPEAT: 0,
1386    NO_REPEAT: 1,
1387    REPEAT_X: 2,
1388    REPEAT_Y: 3
1389};
1390
1391var BACKGROUND_SIZE = exports.BACKGROUND_SIZE = {
1392    AUTO: 0,
1393    CONTAIN: 1,
1394    COVER: 2,
1395    LENGTH: 3
1396};
1397
1398var BACKGROUND_CLIP = exports.BACKGROUND_CLIP = {
1399    BORDER_BOX: 0,
1400    PADDING_BOX: 1,
1401    CONTENT_BOX: 2
1402};
1403
1404var BACKGROUND_ORIGIN = exports.BACKGROUND_ORIGIN = BACKGROUND_CLIP;
1405
1406var AUTO = 'auto';
1407
1408var BackgroundSize = function BackgroundSize(size) {
1409    _classCallCheck(this, BackgroundSize);
1410
1411    switch (size) {
1412        case 'contain':
1413            this.size = BACKGROUND_SIZE.CONTAIN;
1414            break;
1415        case 'cover':
1416            this.size = BACKGROUND_SIZE.COVER;
1417            break;
1418        case 'auto':
1419            this.size = BACKGROUND_SIZE.AUTO;
1420            break;
1421        default:
1422            this.value = new _Length2.default(size);
1423    }
1424};
1425
1426var calculateBackgroundSize = exports.calculateBackgroundSize = function calculateBackgroundSize(backgroundImage, image, bounds) {
1427    var width = 0;
1428    var height = 0;
1429    var size = backgroundImage.size;
1430    if (size[0].size === BACKGROUND_SIZE.CONTAIN || size[0].size === BACKGROUND_SIZE.COVER) {
1431        var targetRatio = bounds.width / bounds.height;
1432        var currentRatio = image.width / image.height;
1433        return targetRatio < currentRatio !== (size[0].size === BACKGROUND_SIZE.COVER) ? new _Size2.default(bounds.width, bounds.width / currentRatio) : new _Size2.default(bounds.height * currentRatio, bounds.height);
1434    }
1435
1436    if (size[0].value) {
1437        width = size[0].value.getAbsoluteValue(bounds.width);
1438    }
1439
1440    if (size[0].size === BACKGROUND_SIZE.AUTO && size[1].size === BACKGROUND_SIZE.AUTO) {
1441        height = image.height;
1442    } else if (size[1].size === BACKGROUND_SIZE.AUTO) {
1443        height = width / image.width * image.height;
1444    } else if (size[1].value) {
1445        height = size[1].value.getAbsoluteValue(bounds.height);
1446    }
1447
1448    if (size[0].size === BACKGROUND_SIZE.AUTO) {
1449        width = height / image.height * image.width;
1450    }
1451
1452    return new _Size2.default(width, height);
1453};
1454
1455var calculateGradientBackgroundSize = exports.calculateGradientBackgroundSize = function calculateGradientBackgroundSize(backgroundImage, bounds) {
1456    var size = backgroundImage.size;
1457    var width = size[0].value ? size[0].value.getAbsoluteValue(bounds.width) : bounds.width;
1458    var height = size[1].value ? size[1].value.getAbsoluteValue(bounds.height) : size[0].value ? width : bounds.height;
1459
1460    return new _Size2.default(width, height);
1461};
1462
1463var AUTO_SIZE = new BackgroundSize(AUTO);
1464
1465var calculateBackgroungPaintingArea = exports.calculateBackgroungPaintingArea = function calculateBackgroungPaintingArea(curves, clip) {
1466    switch (clip) {
1467        case BACKGROUND_CLIP.BORDER_BOX:
1468            return (0, Bounds_1.calculateBorderBoxPath)(curves);
1469        case BACKGROUND_CLIP.PADDING_BOX:
1470        default:
1471            return (0, Bounds_1.calculatePaddingBoxPath)(curves);
1472    }
1473};
1474
1475var calculateBackgroungPositioningArea = exports.calculateBackgroungPositioningArea = function calculateBackgroungPositioningArea(backgroundOrigin, bounds, padding$$1, border) {
1476    var paddingBox = (0, Bounds_1.calculatePaddingBox)(bounds, border);
1477
1478    switch (backgroundOrigin) {
1479        case BACKGROUND_ORIGIN.BORDER_BOX:
1480            return bounds;
1481        case BACKGROUND_ORIGIN.CONTENT_BOX:
1482            var paddingLeft = padding$$1[padding.PADDING_SIDES.LEFT].getAbsoluteValue(bounds.width);
1483            var paddingRight = padding$$1[padding.PADDING_SIDES.RIGHT].getAbsoluteValue(bounds.width);
1484            var paddingTop = padding$$1[padding.PADDING_SIDES.TOP].getAbsoluteValue(bounds.width);
1485            var paddingBottom = padding$$1[padding.PADDING_SIDES.BOTTOM].getAbsoluteValue(bounds.width);
1486            return new Bounds_1.Bounds(paddingBox.left + paddingLeft, paddingBox.top + paddingTop, paddingBox.width - paddingLeft - paddingRight, paddingBox.height - paddingTop - paddingBottom);
1487        case BACKGROUND_ORIGIN.PADDING_BOX:
1488        default:
1489            return paddingBox;
1490    }
1491};
1492
1493var calculateBackgroundPosition = exports.calculateBackgroundPosition = function calculateBackgroundPosition(position, size, bounds) {
1494    return new _Vector2.default(position[0].getAbsoluteValue(bounds.width - size.width), position[1].getAbsoluteValue(bounds.height - size.height));
1495};
1496
1497var calculateBackgroundRepeatPath = exports.calculateBackgroundRepeatPath = function calculateBackgroundRepeatPath(background, position, size, backgroundPositioningArea, bounds) {
1498    var repeat = background.repeat;
1499    switch (repeat) {
1500        case BACKGROUND_REPEAT.REPEAT_X:
1501            return [new _Vector2.default(Math.round(bounds.left), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(size.height + backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left), Math.round(size.height + backgroundPositioningArea.top + position.y))];
1502        case BACKGROUND_REPEAT.REPEAT_Y:
1503            return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.height + bounds.top))];
1504        case BACKGROUND_REPEAT.NO_REPEAT:
1505            return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y + size.height)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y + size.height))];
1506        default:
1507            return [new _Vector2.default(Math.round(bounds.left), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(bounds.left), Math.round(bounds.height + bounds.top))];
1508    }
1509};
1510
1511var parseBackground = exports.parseBackground = function parseBackground(style, resourceLoader) {
1512    return {
1513        backgroundColor: new _Color2.default(style.backgroundColor),
1514        backgroundImage: parseBackgroundImages(style, resourceLoader),
1515        backgroundClip: parseBackgroundClip(style.backgroundClip),
1516        backgroundOrigin: parseBackgroundOrigin(style.backgroundOrigin)
1517    };
1518};
1519
1520var parseBackgroundClip = function parseBackgroundClip(backgroundClip) {
1521    switch (backgroundClip) {
1522        case 'padding-box':
1523            return BACKGROUND_CLIP.PADDING_BOX;
1524        case 'content-box':
1525            return BACKGROUND_CLIP.CONTENT_BOX;
1526    }
1527    return BACKGROUND_CLIP.BORDER_BOX;
1528};
1529
1530var parseBackgroundOrigin = function parseBackgroundOrigin(backgroundOrigin) {
1531    switch (backgroundOrigin) {
1532        case 'padding-box':
1533            return BACKGROUND_ORIGIN.PADDING_BOX;
1534        case 'content-box':
1535            return BACKGROUND_ORIGIN.CONTENT_BOX;
1536    }
1537    return BACKGROUND_ORIGIN.BORDER_BOX;
1538};
1539
1540var parseBackgroundRepeat = function parseBackgroundRepeat(backgroundRepeat) {
1541    switch (backgroundRepeat.trim()) {
1542        case 'no-repeat':
1543            return BACKGROUND_REPEAT.NO_REPEAT;
1544        case 'repeat-x':
1545        case 'repeat no-repeat':
1546            return BACKGROUND_REPEAT.REPEAT_X;
1547        case 'repeat-y':
1548        case 'no-repeat repeat':
1549            return BACKGROUND_REPEAT.REPEAT_Y;
1550        case 'repeat':
1551            return BACKGROUND_REPEAT.REPEAT;
1552    }
1553
1554    return BACKGROUND_REPEAT.REPEAT;
1555};
1556
1557var parseBackgroundImages = function parseBackgroundImages(style, resourceLoader) {
1558    var sources = parseBackgroundImage(style.backgroundImage).map(function (backgroundImage) {
1559        if (backgroundImage.method === 'url') {
1560            var key = resourceLoader.loadImage(backgroundImage.args[0]);
1561            backgroundImage.args = key ? [key] : [];
1562        }
1563        return backgroundImage;
1564    });
1565    var positions = style.backgroundPosition.split(',');
1566    var repeats = style.backgroundRepeat.split(',');
1567    var sizes = style.backgroundSize.split(',');
1568
1569    return sources.map(function (source, index) {
1570        var size = (sizes[index] || AUTO).trim().split(' ').map(parseBackgroundSize);
1571        var position = (positions[index] || AUTO).trim().split(' ').map(parseBackgoundPosition);
1572
1573        return {
1574            source: source,
1575            repeat: parseBackgroundRepeat(typeof repeats[index] === 'string' ? repeats[index] : repeats[0]),
1576            size: size.length < 2 ? [size[0], AUTO_SIZE] : [size[0], size[1]],
1577            position: position.length < 2 ? [position[0], position[0]] : [position[0], position[1]]
1578        };
1579    });
1580};
1581
1582var parseBackgroundSize = function parseBackgroundSize(size) {
1583    return size === 'auto' ? AUTO_SIZE : new BackgroundSize(size);
1584};
1585
1586var parseBackgoundPosition = function parseBackgoundPosition(position) {
1587    switch (position) {
1588        case 'bottom':
1589        case 'right':
1590            return new _Length2.default('100%');
1591        case 'left':
1592        case 'top':
1593            return new _Length2.default('0%');
1594        case 'auto':
1595            return new _Length2.default('0');
1596    }
1597    return new _Length2.default(position);
1598};
1599
1600var parseBackgroundImage = exports.parseBackgroundImage = function parseBackgroundImage(image) {
1601    var whitespace = /^\s$/;
1602    var results = [];
1603
1604    var args = [];
1605    var method = '';
1606    var quote = null;
1607    var definition = '';
1608    var mode = 0;
1609    var numParen = 0;
1610
1611    var appendResult = function appendResult() {
1612        var prefix = '';
1613        if (method) {
1614            if (definition.substr(0, 1) === '"') {
1615                definition = definition.substr(1, definition.length - 2);
1616            }
1617
1618            if (definition) {
1619                args.push(definition.trim());
1620            }
1621
1622            var prefix_i = method.indexOf('-', 1) + 1;
1623            if (method.substr(0, 1) === '-' && prefix_i > 0) {
1624                prefix = method.substr(0, prefix_i).toLowerCase();
1625                method = method.substr(prefix_i);
1626            }
1627            method = method.toLowerCase();
1628            if (method !== 'none') {
1629                results.push({
1630                    prefix: prefix,
1631                    method: method,
1632                    args: args
1633                });
1634            }
1635        }
1636        args = [];
1637        method = definition = '';
1638    };
1639
1640    image.split('').forEach(function (c) {
1641        if (mode === 0 && whitespace.test(c)) {
1642            return;
1643        }
1644        switch (c) {
1645            case '"':
1646                if (!quote) {
1647                    quote = c;
1648                } else if (quote === c) {
1649                    quote = null;
1650                }
1651                break;
1652            case '(':
1653                if (quote) {
1654                    break;
1655                } else if (mode === 0) {
1656                    mode = 1;
1657                    return;
1658                } else {
1659                    numParen++;
1660                }
1661                break;
1662            case ')':
1663                if (quote) {
1664                    break;
1665                } else if (mode === 1) {
1666                    if (numParen === 0) {
1667                        mode = 0;
1668                        appendResult();
1669                        return;
1670                    } else {
1671                        numParen--;
1672                    }
1673                }
1674                break;
1675
1676            case ',':
1677                if (quote) {
1678                    break;
1679                } else if (mode === 0) {
1680                    appendResult();
1681                    return;
1682                } else if (mode === 1) {
1683                    if (numParen === 0 && !method.match(/^url$/i)) {
1684                        args.push(definition.trim());
1685                        definition = '';
1686                        return;
1687                    }
1688                }
1689                break;
1690        }
1691
1692        if (mode === 0) {
1693            method += c;
1694        } else {
1695            definition += c;
1696        }
1697    });
1698
1699    appendResult();
1700    return results;
1701};
1702});
1703
1704unwrapExports(background);
1705var background_1 = background.parseBackgroundImage;
1706var background_2 = background.parseBackground;
1707var background_3 = background.calculateBackgroundRepeatPath;
1708var background_4 = background.calculateBackgroundPosition;
1709var background_5 = background.calculateBackgroungPositioningArea;
1710var background_6 = background.calculateBackgroungPaintingArea;
1711var background_7 = background.calculateGradientBackgroundSize;
1712var background_8 = background.calculateBackgroundSize;
1713var background_9 = background.BACKGROUND_ORIGIN;
1714var background_10 = background.BACKGROUND_CLIP;
1715var background_11 = background.BACKGROUND_SIZE;
1716var background_12 = background.BACKGROUND_REPEAT;
1717
1718var border = createCommonjsModule(function (module, exports) {
1719Object.defineProperty(exports, "__esModule", {
1720    value: true
1721});
1722exports.parseBorder = exports.BORDER_SIDES = exports.BORDER_STYLE = undefined;
1723
1724
1725
1726var _Color2 = _interopRequireDefault(Color_1);
1727
1728function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1729
1730var BORDER_STYLE = exports.BORDER_STYLE = {
1731    NONE: 0,
1732    SOLID: 1
1733};
1734
1735var BORDER_SIDES = exports.BORDER_SIDES = {
1736    TOP: 0,
1737    RIGHT: 1,
1738    BOTTOM: 2,
1739    LEFT: 3
1740};
1741
1742var SIDES = Object.keys(BORDER_SIDES).map(function (s) {
1743    return s.toLowerCase();
1744});
1745
1746var parseBorderStyle = function parseBorderStyle(style) {
1747    switch (style) {
1748        case 'none':
1749            return BORDER_STYLE.NONE;
1750    }
1751    return BORDER_STYLE.SOLID;
1752};
1753
1754var parseBorder = exports.parseBorder = function parseBorder(style) {
1755    return SIDES.map(function (side) {
1756        var borderColor = new _Color2.default(style.getPropertyValue('border-' + side + '-color'));
1757        var borderStyle = parseBorderStyle(style.getPropertyValue('border-' + side + '-style'));
1758        var borderWidth = parseFloat(style.getPropertyValue('border-' + side + '-width'));
1759        return {
1760            borderColor: borderColor,
1761            borderStyle: borderStyle,
1762            borderWidth: isNaN(borderWidth) ? 0 : borderWidth
1763        };
1764    });
1765};
1766});
1767
1768unwrapExports(border);
1769var border_1 = border.parseBorder;
1770var border_2 = border.BORDER_SIDES;
1771var border_3 = border.BORDER_STYLE;
1772
1773var borderRadius = createCommonjsModule(function (module, exports) {
1774Object.defineProperty(exports, "__esModule", {
1775    value: true
1776});
1777exports.parseBorderRadius = undefined;
1778
1779var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
1780
1781
1782
1783var _Length2 = _interopRequireDefault(Length_1);
1784
1785function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1786
1787var SIDES = ['top-left', 'top-right', 'bottom-right', 'bottom-left'];
1788
1789var parseBorderRadius = exports.parseBorderRadius = function parseBorderRadius(style) {
1790    return SIDES.map(function (side) {
1791        var value = style.getPropertyValue('border-' + side + '-radius');
1792
1793        var _value$split$map = value.split(' ').map(_Length2.default.create),
1794            _value$split$map2 = _slicedToArray(_value$split$map, 2),
1795            horizontal = _value$split$map2[0],
1796            vertical = _value$split$map2[1];
1797
1798        return typeof vertical === 'undefined' ? [horizontal, horizontal] : [horizontal, vertical];
1799    });
1800};
1801});
1802
1803unwrapExports(borderRadius);
1804var borderRadius_1 = borderRadius.parseBorderRadius;
1805
1806var display = createCommonjsModule(function (module, exports) {
1807Object.defineProperty(exports, "__esModule", {
1808    value: true
1809});
1810var DISPLAY = exports.DISPLAY = {
1811    NONE: 1 << 0,
1812    BLOCK: 1 << 1,
1813    INLINE: 1 << 2,
1814    RUN_IN: 1 << 3,
1815    FLOW: 1 << 4,
1816    FLOW_ROOT: 1 << 5,
1817    TABLE: 1 << 6,
1818    FLEX: 1 << 7,
1819    GRID: 1 << 8,
1820    RUBY: 1 << 9,
1821    SUBGRID: 1 << 10,
1822    LIST_ITEM: 1 << 11,
1823    TABLE_ROW_GROUP: 1 << 12,
1824    TABLE_HEADER_GROUP: 1 << 13,
1825    TABLE_FOOTER_GROUP: 1 << 14,
1826    TABLE_ROW: 1 << 15,
1827    TABLE_CELL: 1 << 16,
1828    TABLE_COLUMN_GROUP: 1 << 17,
1829    TABLE_COLUMN: 1 << 18,
1830    TABLE_CAPTION: 1 << 19,
1831    RUBY_BASE: 1 << 20,
1832    RUBY_TEXT: 1 << 21,
1833    RUBY_BASE_CONTAINER: 1 << 22,
1834    RUBY_TEXT_CONTAINER: 1 << 23,
1835    CONTENTS: 1 << 24,
1836    INLINE_BLOCK: 1 << 25,
1837    INLINE_LIST_ITEM: 1 << 26,
1838    INLINE_TABLE: 1 << 27,
1839    INLINE_FLEX: 1 << 28,
1840    INLINE_GRID: 1 << 29
1841};
1842
1843var parseDisplayValue = function parseDisplayValue(display) {
1844    switch (display) {
1845        case 'block':
1846            return DISPLAY.BLOCK;
1847        case 'inline':
1848            return DISPLAY.INLINE;
1849        case 'run-in':
1850            return DISPLAY.RUN_IN;
1851        case 'flow':
1852            return DISPLAY.FLOW;
1853        case 'flow-root':
1854            return DISPLAY.FLOW_ROOT;
1855        case 'table':
1856            return DISPLAY.TABLE;
1857        case 'flex':
1858            return DISPLAY.FLEX;
1859        case 'grid':
1860            return DISPLAY.GRID;
1861        case 'ruby':
1862            return DISPLAY.RUBY;
1863        case 'subgrid':
1864            return DISPLAY.SUBGRID;
1865        case 'list-item':
1866            return DISPLAY.LIST_ITEM;
1867        case 'table-row-group':
1868            return DISPLAY.TABLE_ROW_GROUP;
1869        case 'table-header-group':
1870            return DISPLAY.TABLE_HEADER_GROUP;
1871        case 'table-footer-group':
1872            return DISPLAY.TABLE_FOOTER_GROUP;
1873        case 'table-row':
1874            return DISPLAY.TABLE_ROW;
1875        case 'table-cell':
1876            return DISPLAY.TABLE_CELL;
1877        case 'table-column-group':
1878            return DISPLAY.TABLE_COLUMN_GROUP;
1879        case 'table-column':
1880            return DISPLAY.TABLE_COLUMN;
1881        case 'table-caption':
1882            return DISPLAY.TABLE_CAPTION;
1883        case 'ruby-base':
1884            return DISPLAY.RUBY_BASE;
1885        case 'ruby-text':
1886            return DISPLAY.RUBY_TEXT;
1887        case 'ruby-base-container':
1888            return DISPLAY.RUBY_BASE_CONTAINER;
1889        case 'ruby-text-container':
1890            return DISPLAY.RUBY_TEXT_CONTAINER;
1891        case 'contents':
1892            return DISPLAY.CONTENTS;
1893        case 'inline-block':
1894            return DISPLAY.INLINE_BLOCK;
1895        case 'inline-list-item':
1896            return DISPLAY.INLINE_LIST_ITEM;
1897        case 'inline-table':
1898            return DISPLAY.INLINE_TABLE;
1899        case 'inline-flex':
1900            return DISPLAY.INLINE_FLEX;
1901        case 'inline-grid':
1902            return DISPLAY.INLINE_GRID;
1903    }
1904
1905    return DISPLAY.NONE;
1906};
1907
1908var setDisplayBit = function setDisplayBit(bit, display) {
1909    return bit | parseDisplayValue(display);
1910};
1911
1912var parseDisplay = exports.parseDisplay = function parseDisplay(display) {
1913    return display.split(' ').reduce(setDisplayBit, 0);
1914};
1915});
1916
1917unwrapExports(display);
1918var display_1 = display.DISPLAY;
1919var display_2 = display.parseDisplay;
1920
1921var float_1 = createCommonjsModule(function (module, exports) {
1922Object.defineProperty(exports, "__esModule", {
1923    value: true
1924});
1925var FLOAT = exports.FLOAT = {
1926    NONE: 0,
1927    LEFT: 1,
1928    RIGHT: 2,
1929    INLINE_START: 3,
1930    INLINE_END: 4
1931};
1932
1933var parseCSSFloat = exports.parseCSSFloat = function parseCSSFloat(float) {
1934    switch (float) {
1935        case 'left':
1936            return FLOAT.LEFT;
1937        case 'right':
1938            return FLOAT.RIGHT;
1939        case 'inline-start':
1940            return FLOAT.INLINE_START;
1941        case 'inline-end':
1942            return FLOAT.INLINE_END;
1943    }
1944    return FLOAT.NONE;
1945};
1946});
1947
1948unwrapExports(float_1);
1949var float_2 = float_1.FLOAT;
1950var float_3 = float_1.parseCSSFloat;
1951
1952var font = createCommonjsModule(function (module, exports) {
1953Object.defineProperty(exports, "__esModule", {
1954    value: true
1955});
1956
1957
1958var parseFontWeight = function parseFontWeight(weight) {
1959    switch (weight) {
1960        case 'normal':
1961            return 400;
1962        case 'bold':
1963            return 700;
1964    }
1965
1966    var value = parseInt(weight, 10);
1967    return isNaN(value) ? 400 : value;
1968};
1969
1970var parseFont = exports.parseFont = function parseFont(style) {
1971    var fontFamily = style.fontFamily;
1972    var fontSize = style.fontSize;
1973    var fontStyle = style.fontStyle;
1974    var fontVariant = style.fontVariant;
1975    var fontWeight = parseFontWeight(style.fontWeight);
1976
1977    return {
1978        fontFamily: fontFamily,
1979        fontSize: fontSize,
1980        fontStyle: fontStyle,
1981        fontVariant: fontVariant,
1982        fontWeight: fontWeight
1983    };
1984};
1985});
1986
1987unwrapExports(font);
1988var font_1 = font.parseFont;
1989
1990var letterSpacing = createCommonjsModule(function (module, exports) {
1991Object.defineProperty(exports, "__esModule", {
1992    value: true
1993});
1994var parseLetterSpacing = exports.parseLetterSpacing = function parseLetterSpacing(letterSpacing) {
1995    if (letterSpacing === 'normal') {
1996        return 0;
1997    }
1998    var value = parseFloat(letterSpacing);
1999    return isNaN(value) ? 0 : value;
2000};
2001});
2002
2003unwrapExports(letterSpacing);
2004var letterSpacing_1 = letterSpacing.parseLetterSpacing;
2005
2006var lineBreak = createCommonjsModule(function (module, exports) {
2007Object.defineProperty(exports, "__esModule", {
2008    value: true
2009});
2010var LINE_BREAK = exports.LINE_BREAK = {
2011    NORMAL: 'normal',
2012    STRICT: 'strict'
2013};
2014
2015var parseLineBreak = exports.parseLineBreak = function parseLineBreak(wordBreak) {
2016    switch (wordBreak) {
2017        case 'strict':
2018            return LINE_BREAK.STRICT;
2019        case 'normal':
2020        default:
2021            return LINE_BREAK.NORMAL;
2022    }
2023};
2024});
2025
2026unwrapExports(lineBreak);
2027var lineBreak_1 = lineBreak.LINE_BREAK;
2028var lineBreak_2 = lineBreak.parseLineBreak;
2029
2030var listStyle = createCommonjsModule(function (module, exports) {
2031Object.defineProperty(exports, "__esModule", {
2032    value: true
2033});
2034exports.parseListStyle = exports.parseListStyleType = exports.LIST_STYLE_TYPE = exports.LIST_STYLE_POSITION = undefined;
2035
2036
2037
2038var LIST_STYLE_POSITION = exports.LIST_STYLE_POSITION = {
2039    INSIDE: 0,
2040    OUTSIDE: 1
2041};
2042
2043var LIST_STYLE_TYPE = exports.LIST_STYLE_TYPE = {
2044    NONE: -1,
2045    DISC: 0,
2046    CIRCLE: 1,
2047    SQUARE: 2,
2048    DECIMAL: 3,
2049    CJK_DECIMAL: 4,
2050    DECIMAL_LEADING_ZERO: 5,
2051    LOWER_ROMAN: 6,
2052    UPPER_ROMAN: 7,
2053    LOWER_GREEK: 8,
2054    LOWER_ALPHA: 9,
2055    UPPER_ALPHA: 10,
2056    ARABIC_INDIC: 11,
2057    ARMENIAN: 12,
2058    BENGALI: 13,
2059    CAMBODIAN: 14,
2060    CJK_EARTHLY_BRANCH: 15,
2061    CJK_HEAVENLY_STEM: 16,
2062    CJK_IDEOGRAPHIC: 17,
2063    DEVANAGARI: 18,
2064    ETHIOPIC_NUMERIC: 19,
2065    GEORGIAN: 20,
2066    GUJARATI: 21,
2067    GURMUKHI: 22,
2068    HEBREW: 22,
2069    HIRAGANA: 23,
2070    HIRAGANA_IROHA: 24,
2071    JAPANESE_FORMAL: 25,
2072    JAPANESE_INFORMAL: 26,
2073    KANNADA: 27,
2074    KATAKANA: 28,
2075    KATAKANA_IROHA: 29,
2076    KHMER: 30,
2077    KOREAN_HANGUL_FORMAL: 31,
2078    KOREAN_HANJA_FORMAL: 32,
2079    KOREAN_HANJA_INFORMAL: 33,
2080    LAO: 34,
2081    LOWER_ARMENIAN: 35,
2082    MALAYALAM: 36,
2083    MONGOLIAN: 37,
2084    MYANMAR: 38,
2085    ORIYA: 39,
2086    PERSIAN: 40,
2087    SIMP_CHINESE_FORMAL: 41,
2088    SIMP_CHINESE_INFORMAL: 42,
2089    TAMIL: 43,
2090    TELUGU: 44,
2091    THAI: 45,
2092    TIBETAN: 46,
2093    TRAD_CHINESE_FORMAL: 47,
2094    TRAD_CHINESE_INFORMAL: 48,
2095    UPPER_ARMENIAN: 49,
2096    DISCLOSURE_OPEN: 50,
2097    DISCLOSURE_CLOSED: 51
2098};
2099
2100var parseListStyleType = exports.parseListStyleType = function parseListStyleType(type) {
2101    switch (type) {
2102        case 'disc':
2103            return LIST_STYLE_TYPE.DISC;
2104        case 'circle':
2105            return LIST_STYLE_TYPE.CIRCLE;
2106        case 'square':
2107            return LIST_STYLE_TYPE.SQUARE;
2108        case 'decimal':
2109            return LIST_STYLE_TYPE.DECIMAL;
2110        case 'cjk-decimal':
2111            return LIST_STYLE_TYPE.CJK_DECIMAL;
2112        case 'decimal-leading-zero':
2113            return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;
2114        case 'lower-roman':
2115            return LIST_STYLE_TYPE.LOWER_ROMAN;
2116        case 'upper-roman':
2117            return LIST_STYLE_TYPE.UPPER_ROMAN;
2118        case 'lower-greek':
2119            return LIST_STYLE_TYPE.LOWER_GREEK;
2120        case 'lower-alpha':
2121            return LIST_STYLE_TYPE.LOWER_ALPHA;
2122        case 'upper-alpha':
2123            return LIST_STYLE_TYPE.UPPER_ALPHA;
2124        case 'arabic-indic':
2125            return LIST_STYLE_TYPE.ARABIC_INDIC;
2126        case 'armenian':
2127            return LIST_STYLE_TYPE.ARMENIAN;
2128        case 'bengali':
2129            return LIST_STYLE_TYPE.BENGALI;
2130        case 'cambodian':
2131            return LIST_STYLE_TYPE.CAMBODIAN;
2132        case 'cjk-earthly-branch':
2133            return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;
2134        case 'cjk-heavenly-stem':
2135            return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;
2136        case 'cjk-ideographic':
2137            return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;
2138        case 'devanagari':
2139            return LIST_STYLE_TYPE.DEVANAGARI;
2140        case 'ethiopic-numeric':
2141            return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;
2142        case 'georgian':
2143            return LIST_STYLE_TYPE.GEORGIAN;
2144        case 'gujarati':
2145            return LIST_STYLE_TYPE.GUJARATI;
2146        case 'gurmukhi':
2147            return LIST_STYLE_TYPE.GURMUKHI;
2148        case 'hebrew':
2149            return LIST_STYLE_TYPE.HEBREW;
2150        case 'hiragana':
2151            return LIST_STYLE_TYPE.HIRAGANA;
2152        case 'hiragana-iroha':
2153            return LIST_STYLE_TYPE.HIRAGANA_IROHA;
2154        case 'japanese-formal':
2155            return LIST_STYLE_TYPE.JAPANESE_FORMAL;
2156        case 'japanese-informal':
2157            return LIST_STYLE_TYPE.JAPANESE_INFORMAL;
2158        case 'kannada':
2159            return LIST_STYLE_TYPE.KANNADA;
2160        case 'katakana':
2161            return LIST_STYLE_TYPE.KATAKANA;
2162        case 'katakana-iroha':
2163            return LIST_STYLE_TYPE.KATAKANA_IROHA;
2164        case 'khmer':
2165            return LIST_STYLE_TYPE.KHMER;
2166        case 'korean-hangul-formal':
2167            return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;
2168        case 'korean-hanja-formal':
2169            return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;
2170        case 'korean-hanja-informal':
2171            return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;
2172        case 'lao':
2173            return LIST_STYLE_TYPE.LAO;
2174        case 'lower-armenian':
2175            return LIST_STYLE_TYPE.LOWER_ARMENIAN;
2176        case 'malayalam':
2177            return LIST_STYLE_TYPE.MALAYALAM;
2178        case 'mongolian':
2179            return LIST_STYLE_TYPE.MONGOLIAN;
2180        case 'myanmar':
2181            return LIST_STYLE_TYPE.MYANMAR;
2182        case 'oriya':
2183            return LIST_STYLE_TYPE.ORIYA;
2184        case 'persian':
2185            return LIST_STYLE_TYPE.PERSIAN;
2186        case 'simp-chinese-formal':
2187            return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;
2188        case 'simp-chinese-informal':
2189            return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;
2190        case 'tamil':
2191            return LIST_STYLE_TYPE.TAMIL;
2192        case 'telugu':
2193            return LIST_STYLE_TYPE.TELUGU;
2194        case 'thai':
2195            return LIST_STYLE_TYPE.THAI;
2196        case 'tibetan':
2197            return LIST_STYLE_TYPE.TIBETAN;
2198        case 'trad-chinese-formal':
2199            return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;
2200        case 'trad-chinese-informal':
2201            return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;
2202        case 'upper-armenian':
2203            return LIST_STYLE_TYPE.UPPER_ARMENIAN;
2204        case 'disclosure-open':
2205            return LIST_STYLE_TYPE.DISCLOSURE_OPEN;
2206        case 'disclosure-closed':
2207            return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;
2208        case 'none':
2209        default:
2210            return LIST_STYLE_TYPE.NONE;
2211    }
2212};
2213
2214var parseListStyle = exports.parseListStyle = function parseListStyle(style) {
2215    var listStyleImage = (0, background.parseBackgroundImage)(style.getPropertyValue('list-style-image'));
2216    return {
2217        listStyleType: parseListStyleType(style.getPropertyValue('list-style-type')),
2218        listStyleImage: listStyleImage.length ? listStyleImage[0] : null,
2219        listStylePosition: parseListStylePosition(style.getPropertyValue('list-style-position'))
2220    };
2221};
2222
2223var parseListStylePosition = function parseListStylePosition(position) {
2224    switch (position) {
2225        case 'inside':
2226            return LIST_STYLE_POSITION.INSIDE;
2227        case 'outside':
2228        default:
2229            return LIST_STYLE_POSITION.OUTSIDE;
2230    }
2231};
2232});
2233
2234unwrapExports(listStyle);
2235var listStyle_1 = listStyle.parseListStyle;
2236var listStyle_2 = listStyle.parseListStyleType;
2237var listStyle_3 = listStyle.LIST_STYLE_TYPE;
2238var listStyle_4 = listStyle.LIST_STYLE_POSITION;
2239
2240var margin = createCommonjsModule(function (module, exports) {
2241Object.defineProperty(exports, "__esModule", {
2242    value: true
2243});
2244exports.parseMargin = undefined;
2245
2246
2247
2248var _Length2 = _interopRequireDefault(Length_1);
2249
2250function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2251
2252var SIDES = ['top', 'right', 'bottom', 'left'];
2253
2254var parseMargin = exports.parseMargin = function parseMargin(style) {
2255    return SIDES.map(function (side) {
2256        return new _Length2.default(style.getPropertyValue('margin-' + side));
2257    });
2258};
2259});
2260
2261unwrapExports(margin);
2262var margin_1 = margin.parseMargin;
2263
2264var overflow = createCommonjsModule(function (module, exports) {
2265Object.defineProperty(exports, "__esModule", {
2266    value: true
2267});
2268var OVERFLOW = exports.OVERFLOW = {
2269    VISIBLE: 0,
2270    HIDDEN: 1,
2271    SCROLL: 2,
2272    AUTO: 3
2273};
2274
2275var parseOverflow = exports.parseOverflow = function parseOverflow(overflow) {
2276    switch (overflow) {
2277        case 'hidden':
2278            return OVERFLOW.HIDDEN;
2279        case 'scroll':
2280            return OVERFLOW.SCROLL;
2281        case 'auto':
2282            return OVERFLOW.AUTO;
2283        case 'visible':
2284        default:
2285            return OVERFLOW.VISIBLE;
2286    }
2287};
2288});
2289
2290unwrapExports(overflow);
2291var overflow_1 = overflow.OVERFLOW;
2292var overflow_2 = overflow.parseOverflow;
2293
2294var overflowWrap = createCommonjsModule(function (module, exports) {
2295Object.defineProperty(exports, "__esModule", {
2296    value: true
2297});
2298var OVERFLOW_WRAP = exports.OVERFLOW_WRAP = {
2299    NORMAL: 0,
2300    BREAK_WORD: 1
2301};
2302
2303var parseOverflowWrap = exports.parseOverflowWrap = function parseOverflowWrap(overflow) {
2304    switch (overflow) {
2305        case 'break-word':
2306            return OVERFLOW_WRAP.BREAK_WORD;
2307        case 'normal':
2308        default:
2309            return OVERFLOW_WRAP.NORMAL;
2310    }
2311};
2312});
2313
2314unwrapExports(overflowWrap);
2315var overflowWrap_1 = overflowWrap.OVERFLOW_WRAP;
2316var overflowWrap_2 = overflowWrap.parseOverflowWrap;
2317
2318var position = createCommonjsModule(function (module, exports) {
2319Object.defineProperty(exports, "__esModule", {
2320    value: true
2321});
2322var POSITION = exports.POSITION = {
2323    STATIC: 0,
2324    RELATIVE: 1,
2325    ABSOLUTE: 2,
2326    FIXED: 3,
2327    STICKY: 4
2328};
2329
2330var parsePosition = exports.parsePosition = function parsePosition(position) {
2331    switch (position) {
2332        case 'relative':
2333            return POSITION.RELATIVE;
2334        case 'absolute':
2335            return POSITION.ABSOLUTE;
2336        case 'fixed':
2337            return POSITION.FIXED;
2338        case 'sticky':
2339            return POSITION.STICKY;
2340    }
2341
2342    return POSITION.STATIC;
2343};
2344});
2345
2346unwrapExports(position);
2347var position_1 = position.POSITION;
2348var position_2 = position.parsePosition;
2349
2350var textShadow = createCommonjsModule(function (module, exports) {
2351Object.defineProperty(exports, "__esModule", {
2352    value: true
2353});
2354exports.parseTextShadow = undefined;
2355
2356
2357
2358var _Color2 = _interopRequireDefault(Color_1);
2359
2360function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2361
2362var NUMBER = /^([+-]|\d|\.)$/i;
2363
2364var parseTextShadow = exports.parseTextShadow = function parseTextShadow(textShadow) {
2365    if (textShadow === 'none' || typeof textShadow !== 'string') {
2366        return null;
2367    }
2368
2369    var currentValue = '';
2370    var isLength = false;
2371    var values = [];
2372    var shadows = [];
2373    var numParens = 0;
2374    var color = null;
2375
2376    var appendValue = function appendValue() {
2377        if (currentValue.length) {
2378            if (isLength) {
2379                values.push(parseFloat(currentValue));
2380            } else {
2381                color = new _Color2.default(currentValue);
2382            }
2383        }
2384        isLength = false;
2385        currentValue = '';
2386    };
2387
2388    var appendShadow = function appendShadow() {
2389        if (values.length && color !== null) {
2390            shadows.push({
2391                color: color,
2392                offsetX: values[0] || 0,
2393                offsetY: values[1] || 0,
2394                blur: values[2] || 0
2395            });
2396        }
2397        values.splice(0, values.length);
2398        color = null;
2399    };
2400
2401    for (var i = 0; i < textShadow.length; i++) {
2402        var c = textShadow[i];
2403        switch (c) {
2404            case '(':
2405                currentValue += c;
2406                numParens++;
2407                break;
2408            case ')':
2409                currentValue += c;
2410                numParens--;
2411                break;
2412            case ',':
2413                if (numParens === 0) {
2414                    appendValue();
2415                    appendShadow();
2416                } else {
2417                    currentValue += c;
2418                }
2419                break;
2420            case ' ':
2421                if (numParens === 0) {
2422                    appendValue();
2423                } else {
2424                    currentValue += c;
2425                }
2426                break;
2427            default:
2428                if (currentValue.length === 0 && NUMBER.test(c)) {
2429                    isLength = true;
2430                }
2431                currentValue += c;
2432        }
2433    }
2434
2435    appendValue();
2436    appendShadow();
2437
2438    if (shadows.length === 0) {
2439        return null;
2440    }
2441
2442    return shadows;
2443};
2444});
2445
2446unwrapExports(textShadow);
2447var textShadow_1 = textShadow.parseTextShadow;
2448
2449var textTransform = createCommonjsModule(function (module, exports) {
2450Object.defineProperty(exports, "__esModule", {
2451    value: true
2452});
2453var TEXT_TRANSFORM = exports.TEXT_TRANSFORM = {
2454    NONE: 0,
2455    LOWERCASE: 1,
2456    UPPERCASE: 2,
2457    CAPITALIZE: 3
2458};
2459
2460var parseTextTransform = exports.parseTextTransform = function parseTextTransform(textTransform) {
2461    switch (textTransform) {
2462        case 'uppercase':
2463            return TEXT_TRANSFORM.UPPERCASE;
2464        case 'lowercase':
2465            return TEXT_TRANSFORM.LOWERCASE;
2466        case 'capitalize':
2467            return TEXT_TRANSFORM.CAPITALIZE;
2468    }
2469
2470    return TEXT_TRANSFORM.NONE;
2471};
2472});
2473
2474unwrapExports(textTransform);
2475var textTransform_1 = textTransform.TEXT_TRANSFORM;
2476var textTransform_2 = textTransform.parseTextTransform;
2477
2478var transform = createCommonjsModule(function (module, exports) {
2479Object.defineProperty(exports, "__esModule", {
2480    value: true
2481});
2482exports.parseTransform = undefined;
2483
2484
2485
2486var _Length2 = _interopRequireDefault(Length_1);
2487
2488function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2489
2490var toFloat = function toFloat(s) {
2491    return parseFloat(s.trim());
2492};
2493
2494var MATRIX = /(matrix|matrix3d)\((.+)\)/;
2495
2496var parseTransform = exports.parseTransform = function parseTransform(style) {
2497    var transform = parseTransformMatrix(style.transform || style.webkitTransform || style.mozTransform ||
2498    // $FlowFixMe
2499    style.msTransform ||
2500    // $FlowFixMe
2501    style.oTransform);
2502    if (transform === null) {
2503        return null;
2504    }
2505
2506    return {
2507        transform: transform,
2508        transformOrigin: parseTransformOrigin(style.transformOrigin || style.webkitTransformOrigin || style.mozTransformOrigin ||
2509        // $FlowFixMe
2510        style.msTransformOrigin ||
2511        // $FlowFixMe
2512        style.oTransformOrigin)
2513    };
2514};
2515
2516// $FlowFixMe
2517var parseTransformOrigin = function parseTransformOrigin(origin) {
2518    if (typeof origin !== 'string') {
2519        var v = new _Length2.default('0');
2520        return [v, v];
2521    }
2522    var values = origin.split(' ').map(_Length2.default.create);
2523    return [values[0], values[1]];
2524};
2525
2526// $FlowFixMe
2527var parseTransformMatrix = function parseTransformMatrix(transform) {
2528    if (transform === 'none' || typeof transform !== 'string') {
2529        return null;
2530    }
2531
2532    var match = transform.match(MATRIX);
2533    if (match) {
2534        if (match[1] === 'matrix') {
2535            var matrix = match[2].split(',').map(toFloat);
2536            return [matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]];
2537        } else {
2538            var matrix3d = match[2].split(',').map(toFloat);
2539            return [matrix3d[0], matrix3d[1], matrix3d[4], matrix3d[5], matrix3d[12], matrix3d[13]];
2540        }
2541    }
2542    return null;
2543};
2544});
2545
2546unwrapExports(transform);
2547var transform_1 = transform.parseTransform;
2548
2549var visibility = createCommonjsModule(function (module, exports) {
2550Object.defineProperty(exports, "__esModule", {
2551    value: true
2552});
2553var VISIBILITY = exports.VISIBILITY = {
2554    VISIBLE: 0,
2555    HIDDEN: 1,
2556    COLLAPSE: 2
2557};
2558
2559var parseVisibility = exports.parseVisibility = function parseVisibility(visibility) {
2560    switch (visibility) {
2561        case 'hidden':
2562            return VISIBILITY.HIDDEN;
2563        case 'collapse':
2564            return VISIBILITY.COLLAPSE;
2565        case 'visible':
2566        default:
2567            return VISIBILITY.VISIBLE;
2568    }
2569};
2570});
2571
2572unwrapExports(visibility);
2573var visibility_1 = visibility.VISIBILITY;
2574var visibility_2 = visibility.parseVisibility;
2575
2576var wordBreak = createCommonjsModule(function (module, exports) {
2577Object.defineProperty(exports, "__esModule", {
2578    value: true
2579});
2580var WORD_BREAK = exports.WORD_BREAK = {
2581    NORMAL: 'normal',
2582    BREAK_ALL: 'break-all',
2583    KEEP_ALL: 'keep-all'
2584};
2585
2586var parseWordBreak = exports.parseWordBreak = function parseWordBreak(wordBreak) {
2587    switch (wordBreak) {
2588        case 'break-all':
2589            return WORD_BREAK.BREAK_ALL;
2590        case 'keep-all':
2591            return WORD_BREAK.KEEP_ALL;
2592        case 'normal':
2593        default:
2594            return WORD_BREAK.NORMAL;
2595    }
2596};
2597});
2598
2599unwrapExports(wordBreak);
2600var wordBreak_1 = wordBreak.WORD_BREAK;
2601var wordBreak_2 = wordBreak.parseWordBreak;
2602
2603var zIndex = createCommonjsModule(function (module, exports) {
2604Object.defineProperty(exports, "__esModule", {
2605    value: true
2606});
2607var parseZIndex = exports.parseZIndex = function parseZIndex(zIndex) {
2608    var auto = zIndex === 'auto';
2609    return {
2610        auto: auto,
2611        order: auto ? 0 : parseInt(zIndex, 10)
2612    };
2613};
2614});
2615
2616unwrapExports(zIndex);
2617var zIndex_1 = zIndex.parseZIndex;
2618
2619var ForeignObjectRenderer_1 = createCommonjsModule(function (module, exports) {
2620Object.defineProperty(exports, "__esModule", {
2621    value: true
2622});
2623
2624var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2625
2626function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2627
2628var ForeignObjectRenderer = function () {
2629    function ForeignObjectRenderer(element) {
2630        _classCallCheck(this, ForeignObjectRenderer);
2631
2632        this.element = element;
2633    }
2634
2635    _createClass(ForeignObjectRenderer, [{
2636        key: 'render',
2637        value: function render(options) {
2638            var _this = this;
2639
2640            this.options = options;
2641            this.canvas = document.createElement('canvas');
2642            this.ctx = this.canvas.getContext('2d');
2643            this.canvas.width = Math.floor(options.width) * options.scale;
2644            this.canvas.height = Math.floor(options.height) * options.scale;
2645            this.canvas.style.width = options.width + 'px';
2646            this.canvas.style.height = options.height + 'px';
2647
2648            options.logger.log('ForeignObject renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + options.scale);
2649            var svg = createForeignObjectSVG(Math.max(options.windowWidth, options.width) * options.scale, Math.max(options.windowHeight, options.height) * options.scale, options.scrollX * options.scale, options.scrollY * options.scale, this.element);
2650
2651            return loadSerializedSVG(svg).then(function (img) {
2652                if (options.backgroundColor) {
2653                    _this.ctx.fillStyle = options.backgroundColor.toString();
2654                    _this.ctx.fillRect(0, 0, options.width * options.scale, options.height * options.scale);
2655                }
2656
2657                _this.ctx.drawImage(img, -options.x * options.scale, -options.y * options.scale);
2658                return _this.canvas;
2659            });
2660        }
2661    }]);
2662
2663    return ForeignObjectRenderer;
2664}();
2665
2666exports.default = ForeignObjectRenderer;
2667var createForeignObjectSVG = exports.createForeignObjectSVG = function createForeignObjectSVG(width, height, x, y, node) {
2668    var xmlns = 'http://www.w3.org/2000/svg';
2669    var svg = document.createElementNS(xmlns, 'svg');
2670    var foreignObject = document.createElementNS(xmlns, 'foreignObject');
2671    svg.setAttributeNS(null, 'width', width);
2672    svg.setAttributeNS(null, 'height', height);
2673
2674    foreignObject.setAttributeNS(null, 'width', '100%');
2675    foreignObject.setAttributeNS(null, 'height', '100%');
2676    foreignObject.setAttributeNS(null, 'x', x);
2677    foreignObject.setAttributeNS(null, 'y', y);
2678    foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');
2679    svg.appendChild(foreignObject);
2680
2681    foreignObject.appendChild(node);
2682
2683    return svg;
2684};
2685
2686var loadSerializedSVG = exports.loadSerializedSVG = function loadSerializedSVG(svg) {
2687    return new Promise(function (resolve, reject) {
2688        var img = new Image();
2689        img.onload = function () {
2690            return resolve(img);
2691        };
2692        img.onerror = reject;
2693
2694        img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(new XMLSerializer().serializeToString(svg));
2695    });
2696};
2697});
2698
2699unwrapExports(ForeignObjectRenderer_1);
2700var ForeignObjectRenderer_2 = ForeignObjectRenderer_1.createForeignObjectSVG;
2701var ForeignObjectRenderer_3 = ForeignObjectRenderer_1.loadSerializedSVG;
2702
2703var Feature = createCommonjsModule(function (module, exports) {
2704Object.defineProperty(exports, "__esModule", {
2705    value: true
2706});
2707
2708
2709
2710var testRangeBounds = function testRangeBounds(document) {
2711    var TEST_HEIGHT = 123;
2712
2713    if (document.createRange) {
2714        var range = document.createRange();
2715        if (range.getBoundingClientRect) {
2716            var testElement = document.createElement('boundtest');
2717            testElement.style.height = TEST_HEIGHT + 'px';
2718            testElement.style.display = 'block';
2719            document.body.appendChild(testElement);
2720
2721            range.selectNode(testElement);
2722            var rangeBounds = range.getBoundingClientRect();
2723            var rangeHeight = Math.round(rangeBounds.height);
2724            document.body.removeChild(testElement);
2725            if (rangeHeight === TEST_HEIGHT) {
2726                return true;
2727            }
2728        }
2729    }
2730
2731    return false;
2732};
2733
2734// iOS 10.3 taints canvas with base64 images unless crossOrigin = 'anonymous'
2735var testBase64 = function testBase64(document, src) {
2736    var img = new Image();
2737    var canvas = document.createElement('canvas');
2738    var ctx = canvas.getContext('2d');
2739
2740    return new Promise(function (resolve) {
2741        // Single pixel base64 image renders fine on iOS 10.3???
2742        img.src = src;
2743
2744        var onload = function onload() {
2745            try {
2746                ctx.drawImage(img, 0, 0);
2747                canvas.toDataURL();
2748            } catch (e) {
2749                return resolve(false);
2750            }
2751
2752            return resolve(true);
2753        };
2754
2755        img.onload = onload;
2756        img.onerror = function () {
2757            return resolve(false);
2758        };
2759
2760        if (img.complete === true) {
2761            setTimeout(function () {
2762                onload();
2763            }, 500);
2764        }
2765    });
2766};
2767
2768var testCORS = function testCORS() {
2769    return typeof new Image().crossOrigin !== 'undefined';
2770};
2771
2772var testResponseType = function testResponseType() {
2773    return typeof new XMLHttpRequest().responseType === 'string';
2774};
2775
2776var testSVG = function testSVG(document) {
2777    var img = new Image();
2778    var canvas = document.createElement('canvas');
2779    var ctx = canvas.getContext('2d');
2780    img.src = 'data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\'></svg>';
2781
2782    try {
2783        ctx.drawImage(img, 0, 0);
2784        canvas.toDataURL();
2785    } catch (e) {
2786        return false;
2787    }
2788    return true;
2789};
2790
2791var isGreenPixel = function isGreenPixel(data) {
2792    return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
2793};
2794
2795var testForeignObject = function testForeignObject(document) {
2796    var canvas = document.createElement('canvas');
2797    var size = 100;
2798    canvas.width = size;
2799    canvas.height = size;
2800    var ctx = canvas.getContext('2d');
2801    ctx.fillStyle = 'rgb(0, 255, 0)';
2802    ctx.fillRect(0, 0, size, size);
2803
2804    var img = new Image();
2805    var greenImageSrc = canvas.toDataURL();
2806    img.src = greenImageSrc;
2807    var svg = (0, ForeignObjectRenderer_1.createForeignObjectSVG)(size, size, 0, 0, img);
2808    ctx.fillStyle = 'red';
2809    ctx.fillRect(0, 0, size, size);
2810
2811    return (0, ForeignObjectRenderer_1.loadSerializedSVG)(svg).then(function (img) {
2812        ctx.drawImage(img, 0, 0);
2813        var data = ctx.getImageData(0, 0, size, size).data;
2814        ctx.fillStyle = 'red';
2815        ctx.fillRect(0, 0, size, size);
2816
2817        var node = document.createElement('div');
2818        node.style.backgroundImage = 'url(' + greenImageSrc + ')';
2819        node.style.height = size + 'px';
2820        // Firefox 55 does not render inline <img /> tags
2821        return isGreenPixel(data) ? (0, ForeignObjectRenderer_1.loadSerializedSVG)((0, ForeignObjectRenderer_1.createForeignObjectSVG)(size, size, 0, 0, node)) : Promise.reject(false);
2822    }).then(function (img) {
2823        ctx.drawImage(img, 0, 0);
2824        // Edge does not render background-images
2825        return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
2826    }).catch(function (e) {
2827        return false;
2828    });
2829};
2830
2831var FEATURES = {
2832    // $FlowFixMe - get/set properties not yet supported
2833    get SUPPORT_RANGE_BOUNDS() {
2834        var value = testRangeBounds(document);
2835        Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });
2836        return value;
2837    },
2838    // $FlowFixMe - get/set properties not yet supported
2839    get SUPPORT_SVG_DRAWING() {
2840        var value = testSVG(document);
2841        Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });
2842        return value;
2843    },
2844    // $FlowFixMe - get/set properties not yet supported
2845    get SUPPORT_BASE64_DRAWING() {
2846        return function (src) {
2847            var _value = testBase64(document, src);
2848            Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', { value: function value() {
2849                    return _value;
2850                } });
2851            return _value;
2852        };
2853    },
2854    // $FlowFixMe - get/set properties not yet supported
2855    get SUPPORT_FOREIGNOBJECT_DRAWING() {
2856        var value = typeof Array.from === 'function' && typeof window.fetch === 'function' ? testForeignObject(document) : Promise.resolve(false);
2857        Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });
2858        return value;
2859    },
2860    // $FlowFixMe - get/set properties not yet supported
2861    get SUPPORT_CORS_IMAGES() {
2862        var value = testCORS();
2863        Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });
2864        return value;
2865    },
2866    // $FlowFixMe - get/set properties not yet supported
2867    get SUPPORT_RESPONSE_TYPE() {
2868        var value = testResponseType();
2869        Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });
2870        return value;
2871    },
2872    // $FlowFixMe - get/set properties not yet supported
2873    get SUPPORT_CORS_XHR() {
2874        var value = 'withCredentials' in new XMLHttpRequest();
2875        Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });
2876        return value;
2877    }
2878};
2879
2880exports.default = FEATURES;
2881});
2882
2883unwrapExports(Feature);
2884
2885var Util$2 = createCommonjsModule(function (module, exports) {
2886Object.defineProperty(exports, "__esModule", {
2887    value: true
2888});
2889var toCodePoints = exports.toCodePoints = function toCodePoints(str) {
2890    var codePoints = [];
2891    var i = 0;
2892    var length = str.length;
2893    while (i < length) {
2894        var value = str.charCodeAt(i++);
2895        if (value >= 0xd800 && value <= 0xdbff && i < length) {
2896            var extra = str.charCodeAt(i++);
2897            if ((extra & 0xfc00) === 0xdc00) {
2898                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);
2899            } else {
2900                codePoints.push(value);
2901                i--;
2902            }
2903        } else {
2904            codePoints.push(value);
2905        }
2906    }
2907    return codePoints;
2908};
2909
2910var fromCodePoint = exports.fromCodePoint = function fromCodePoint() {
2911    if (String.fromCodePoint) {
2912        return String.fromCodePoint.apply(String, arguments);
2913    }
2914
2915    var length = arguments.length;
2916    if (!length) {
2917        return '';
2918    }
2919
2920    var codeUnits = [];
2921
2922    var index = -1;
2923    var result = '';
2924    while (++index < length) {
2925        var codePoint = arguments.length <= index ? undefined : arguments[index];
2926        if (codePoint <= 0xffff) {
2927            codeUnits.push(codePoint);
2928        } else {
2929            codePoint -= 0x10000;
2930            codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);
2931        }
2932        if (index + 1 === length || codeUnits.length > 0x4000) {
2933            result += String.fromCharCode.apply(String, codeUnits);
2934            codeUnits.length = 0;
2935        }
2936    }
2937    return result;
2938};
2939
2940var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
2941
2942// Use a lookup table to find the index.
2943var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
2944for (var i = 0; i < chars.length; i++) {
2945    lookup[chars.charCodeAt(i)] = i;
2946}
2947
2948var decode = exports.decode = function decode(base64) {
2949    var bufferLength = base64.length * 0.75,
2950        len = base64.length,
2951        i = void 0,
2952        p = 0,
2953        encoded1 = void 0,
2954        encoded2 = void 0,
2955        encoded3 = void 0,
2956        encoded4 = void 0;
2957
2958    if (base64[base64.length - 1] === '=') {
2959        bufferLength--;
2960        if (base64[base64.length - 2] === '=') {
2961            bufferLength--;
2962        }
2963    }
2964
2965    var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
2966    var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
2967
2968    for (i = 0; i < len; i += 4) {
2969        encoded1 = lookup[base64.charCodeAt(i)];
2970        encoded2 = lookup[base64.charCodeAt(i + 1)];
2971        encoded3 = lookup[base64.charCodeAt(i + 2)];
2972        encoded4 = lookup[base64.charCodeAt(i + 3)];
2973
2974        bytes[p++] = encoded1 << 2 | encoded2 >> 4;
2975        bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
2976        bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
2977    }
2978
2979    return buffer;
2980};
2981
2982var polyUint16Array = exports.polyUint16Array = function polyUint16Array(buffer) {
2983    var length = buffer.length;
2984    var bytes = [];
2985    for (var _i = 0; _i < length; _i += 2) {
2986        bytes.push(buffer[_i + 1] << 8 | buffer[_i]);
2987    }
2988    return bytes;
2989};
2990
2991var polyUint32Array = exports.polyUint32Array = function polyUint32Array(buffer) {
2992    var length = buffer.length;
2993    var bytes = [];
2994    for (var _i2 = 0; _i2 < length; _i2 += 4) {
2995        bytes.push(buffer[_i2 + 3] << 24 | buffer[_i2 + 2] << 16 | buffer[_i2 + 1] << 8 | buffer[_i2]);
2996    }
2997    return bytes;
2998};
2999});
3000
3001unwrapExports(Util$2);
3002var Util_1$1 = Util$2.toCodePoints;
3003var Util_2$1 = Util$2.fromCodePoint;
3004var Util_3$1 = Util$2.decode;
3005var Util_4$1 = Util$2.polyUint16Array;
3006var Util_5 = Util$2.polyUint32Array;
3007
3008var Trie_1 = createCommonjsModule(function (module, exports) {
3009Object.defineProperty(exports, "__esModule", {
3010    value: true
3011});
3012exports.Trie = exports.createTrieFromBase64 = exports.UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_DATA_MASK = exports.UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_SHIFT_1_2 = exports.UTRIE2_INDEX_SHIFT = exports.UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_2 = undefined;
3013
3014var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3015
3016
3017
3018function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3019
3020/** Shift size for getting the index-2 table offset. */
3021var UTRIE2_SHIFT_2 = exports.UTRIE2_SHIFT_2 = 5;
3022
3023/** Shift size for getting the index-1 table offset. */
3024var UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_1 = 6 + 5;
3025
3026/**
3027 * Shift size for shifting left the index array values.
3028 * Increases possible data size with 16-bit index values at the cost
3029 * of compactability.
3030 * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
3031 */
3032var UTRIE2_INDEX_SHIFT = exports.UTRIE2_INDEX_SHIFT = 2;
3033
3034/**
3035 * Difference between the two shift sizes,
3036 * for getting an index-1 offset from an index-2 offset. 6=11-5
3037 */
3038var UTRIE2_SHIFT_1_2 = exports.UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
3039
3040/**
3041 * The part of the index-2 table for U+D800..U+DBFF stores values for
3042 * lead surrogate code _units_ not code _points_.
3043 * Values for lead surrogate code _points_ are indexed with this portion of the table.
3044 * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
3045 */
3046var UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;
3047
3048/** Number of entries in a data block. 32=0x20 */
3049var UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
3050/** Mask for getting the lower bits for the in-data-block offset. */
3051var UTRIE2_DATA_MASK = exports.UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
3052
3053var UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;
3054/** Count the lengths of both BMP pieces. 2080=0x820 */
3055var UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
3056/**
3057 * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
3058 * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
3059 */
3060var UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
3061var UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
3062/**
3063 * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
3064 * Variable length, for code points up to highStart, where the last single-value range starts.
3065 * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
3066 * (For 0x100000 supplementary code points U+10000..U+10ffff.)
3067 *
3068 * The part of the index-2 table for supplementary code points starts
3069 * after this index-1 table.
3070 *
3071 * Both the index-1 table and the following part of the index-2 table
3072 * are omitted completely if there is only BMP data.
3073 */
3074var UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
3075
3076/**
3077 * Number of index-1 entries for the BMP. 32=0x20
3078 * This part of the index-1 table is omitted from the serialized form.
3079 */
3080var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;
3081
3082/** Number of entries in an index-2 block. 64=0x40 */
3083var UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
3084/** Mask for getting the lower bits for the in-index-2-block offset. */
3085var UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
3086
3087var createTrieFromBase64 = exports.createTrieFromBase64 = function createTrieFromBase64(base64) {
3088    var buffer = (0, Util$2.decode)(base64);
3089    var view32 = Array.isArray(buffer) ? (0, Util$2.polyUint32Array)(buffer) : new Uint32Array(buffer);
3090    var view16 = Array.isArray(buffer) ? (0, Util$2.polyUint16Array)(buffer) : new Uint16Array(buffer);
3091    var headerLength = 24;
3092
3093    var index = view16.slice(headerLength / 2, view32[4] / 2);
3094    var data = view32[5] === 2 ? view16.slice((headerLength + view32[4]) / 2) : view32.slice(Math.ceil((headerLength + view32[4]) / 4));
3095
3096    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
3097};
3098
3099var Trie = exports.Trie = function () {
3100    function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {
3101        _classCallCheck(this, Trie);
3102
3103        this.initialValue = initialValue;
3104        this.errorValue = errorValue;
3105        this.highStart = highStart;
3106        this.highValueIndex = highValueIndex;
3107        this.index = index;
3108        this.data = data;
3109    }
3110
3111    /**
3112     * Get the value for a code point as stored in the Trie.
3113     *
3114     * @param codePoint the code point
3115     * @return the value
3116     */
3117
3118
3119    _createClass(Trie, [{
3120        key: 'get',
3121        value: function get(codePoint) {
3122            var ix = void 0;
3123            if (codePoint >= 0) {
3124                if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {
3125                    // Ordinary BMP code point, excluding leading surrogates.
3126                    // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.
3127                    // 16 bit data is stored in the index array itself.
3128                    ix = this.index[codePoint >> UTRIE2_SHIFT_2];
3129                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3130                    return this.data[ix];
3131                }
3132
3133                if (codePoint <= 0xffff) {
3134                    // Lead Surrogate Code Point.  A Separate index section is stored for
3135                    // lead surrogate code units and code points.
3136                    //   The main index has the code unit data.
3137                    //   For this function, we need the code point data.
3138                    // Note: this expression could be refactored for slightly improved efficiency, but
3139                    //       surrogate code points will be so rare in practice that it's not worth it.
3140                    ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)];
3141                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3142                    return this.data[ix];
3143                }
3144
3145                if (codePoint < this.highStart) {
3146                    // Supplemental code point, use two-level lookup.
3147                    ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
3148                    ix = this.index[ix];
3149                    ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;
3150                    ix = this.index[ix];
3151                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3152                    return this.data[ix];
3153                }
3154                if (codePoint <= 0x10ffff) {
3155                    return this.data[this.highValueIndex];
3156                }
3157            }
3158
3159            // Fall through.  The code point is outside of the legal range of 0..0x10ffff.
3160            return this.errorValue;
3161        }
3162    }]);
3163
3164    return Trie;
3165}();
3166});
3167
3168unwrapExports(Trie_1);
3169var Trie_2 = Trie_1.Trie;
3170var Trie_3 = Trie_1.createTrieFromBase64;
3171var Trie_4 = Trie_1.UTRIE2_INDEX_2_MASK;
3172var Trie_5 = Trie_1.UTRIE2_INDEX_2_BLOCK_LENGTH;
3173var Trie_6 = Trie_1.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH;
3174var Trie_7 = Trie_1.UTRIE2_INDEX_1_OFFSET;
3175var Trie_8 = Trie_1.UTRIE2_UTF8_2B_INDEX_2_LENGTH;
3176var Trie_9 = Trie_1.UTRIE2_UTF8_2B_INDEX_2_OFFSET;
3177var Trie_10 = Trie_1.UTRIE2_INDEX_2_BMP_LENGTH;
3178var Trie_11 = Trie_1.UTRIE2_LSCP_INDEX_2_LENGTH;
3179var Trie_12 = Trie_1.UTRIE2_DATA_MASK;
3180var Trie_13 = Trie_1.UTRIE2_DATA_BLOCK_LENGTH;
3181var Trie_14 = Trie_1.UTRIE2_LSCP_INDEX_2_OFFSET;
3182var Trie_15 = Trie_1.UTRIE2_SHIFT_1_2;
3183var Trie_16 = Trie_1.UTRIE2_INDEX_SHIFT;
3184var Trie_17 = Trie_1.UTRIE2_SHIFT_1;
3185var Trie_18 = Trie_1.UTRIE2_SHIFT_2;
3186
3187var linebreakTrie = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAA
3187XgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwA
3187KAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AH
3187QAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATw
3187BPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATw
3187BPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUA
vendor: 4,711 bytes, lines 3187-3197
3187BQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';
3188
3189var LineBreak = createCommonjsModule(function (module, exports) {
3190Object.defineProperty(exports, "__esModule", {
3191    value: true
3192});
3193exports.LineBreaker = exports.inlineBreakOpportunities = exports.lineBreakAtIndex = exports.codePointsToCharacterClasses = exports.UnicodeTrie = exports.BREAK_ALLOWED = exports.BREAK_NOT_ALLOWED = exports.BREAK_MANDATORY = exports.classes = exports.LETTER_NUMBER_MODIFIER = undefined;
3194
3195var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3196
3197var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
3197 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
3198
3199
3200
3201
3202
3203var _linebreakTrie2 = _interopRequireDefault(linebreakTrie);
3204
3205
3206
3207function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3208
3209function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
3210
3211function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3212
3213var LETTER_NUMBER_MODIFIER = exports.LETTER_NUMBER_MODIFIER = 50;
3214
3215// Non-tailorable Line Breaking Classes
3216var BK = 1; //  Cause a line break (after)
3217var CR = 2; //  Cause a line break (after), except between CR and LF
3218var LF = 3; //  Cause a line break (after)
3219var CM = 4; //  Prohibit a line break between the character and the preceding character
3220var NL = 5; //  Cause a line break (after)
3221var SG = 6; //  Do not occur in well-formed text
3222var WJ = 7; //  Prohibit line breaks before and after
3223var ZW = 8; //  Provide a break opportunity
3224var GL = 9; //  Prohibit line breaks before and after
3225var SP = 10; // Enable indirect line breaks
3226var ZWJ = 11; // Prohibit line breaks within joiner sequences
3227// Break Opportunities
3228var B2 = 12; //  Provide a line break opportunity before and after the character
3229var BA = 13; //  Generally provide a line break opportunity after the character
3230var BB = 14; //  Generally provide a line break opportunity before the character
3231var HY = 15; //  Provide a line break opportunity after the character, except in numeric context
3232var CB = 16; //   Provide a line break opportunity contingent on additional information
3233// Characters Prohibiting Certain Breaks
3234var CL = 17; //  Prohibit line breaks before
3235var CP = 18; //  Prohibit line breaks before
3236var EX = 19; //  Prohibit line breaks before
3237var IN = 20; //  Allow only indirect line breaks between pairs
3238var NS = 21; //  Allow only indirect line breaks before
3239var OP = 22; //  Prohibit line breaks after
3240var QU = 23; //  Act like they are both opening and closing
3241// Numeric Context
3242var IS = 24; //  Prevent breaks after any and before numeric
3243var NU = 25; //  Form numeric expressions for line breaking purposes
3244var PO = 26; //  Do not break following a numeric expression
3245var PR = 27; //  Do not break in front of a numeric expression
3246var SY = 28; //  Prevent a break before; and allow a break after
3247// Other Characters
3248var AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID
3249var AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters
3250var CJ = 31; //  Treat as NS or ID for strict or normal breaking.
3251var EB = 32; //  Do not break from following Emoji Modifier
3252var EM = 33; //  Do not break from preceding Emoji Base
3253var H2 = 34; //  Form Korean syllable blocks
3254var H3 = 35; //  Form Korean syllable blocks
3255var HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic
3256var ID = 37; //  Break before or after; except in some numeric context
3257var JL = 38; //  Form Korean syllable blocks
3258var JV = 39; //  Form Korean syllable blocks
3259var JT = 40; //  Form Korean syllable blocks
3260var RI = 41; //  Keep pairs together. For pairs; break before and after other classes
3261var SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis
3262var XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions
3263
3264var classes = exports.classes = {
3265    BK: BK,
3266    CR: CR,
3267    LF: LF,
3268    CM: CM,
3269    NL: NL,
3270    SG: SG,
3271    WJ: WJ,
3272    ZW: ZW,
3273    GL: GL,
3274    SP: SP,
3275    ZWJ: ZWJ,
3276    B2: B2,
3277    BA: BA,
3278    BB: BB,
3279    HY: HY,
3280    CB: CB,
3281    CL: CL,
3282    CP: CP,
3283    EX: EX,
3284    IN: IN,
3285    NS: NS,
3286    OP: OP,
3287    QU: QU,
3288    IS: IS,
3289    NU: NU,
3290    PO: PO,
3291    PR: PR,
3292    SY: SY,
3293    AI: AI,
3294    AL: AL,
3295    CJ: CJ,
3296    EB: EB,
3297    EM: EM,
3298    H2: H2,
3299    H3: H3,
3300    HL: HL,
3301    ID: ID,
3302    JL: JL,
3303    JV: JV,
3304    JT: JT,
3305    RI: RI,
3306    SA: SA,
3307    XX: XX
3308};
3309
3310var BREAK_MANDATORY = exports.BREAK_MANDATORY = '!';
3311var BREAK_NOT_ALLOWED = exports.BREAK_NOT_ALLOWED = '×';
3312var BREAK_ALLOWED = exports.BREAK_ALLOWED = '÷';
3313var UnicodeTrie = exports.UnicodeTrie = (0, Trie_1.createTrieFromBase64)(_linebreakTrie2.default);
3314
3315var ALPHABETICS = [AL, HL];
3316var HARD_LINE_BREAKS = [BK, CR, LF, NL];
3317var SPACE = [SP, ZW];
3318var PREFIX_POSTFIX = [PR, PO];
3319var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);
3320var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
3321var HYPHEN = [HY, BA];
3322
3323var codePointsToCharacterClasses = exports.codePointsToCharacterClasses = function codePointsToCharacterClasses(codePoints) {
3324    var lineBreak = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'strict';
3325
3326    var types = [];
3327    var indicies = [];
3328    var categories = [];
vendor: 4,993 bytes, lines 3329-3488
3329    codePoints.forEach(function (codePoint, index) {
3330        var classType = UnicodeTrie.get(codePoint);
3331        if (classType > LETTER_NUMBER_MODIFIER) {
3332            categories.push(true);
3333            classType -= LETTER_NUMBER_MODIFIER;
3334        } else {
3335            categories.push(false);
3336        }
3337
3338        if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {
3339            // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0
3340            if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {
3341                indicies.push(index);
3342                return types.push(CB);
3343            }
3344        }
3345
3346        if (classType === CM || classType === ZWJ) {
3347            // LB10 Treat any remaining combining mark or ZWJ as AL.
3348            if (index === 0) {
3349                indicies.push(index);
3350                return types.push(AL);
3351            }
3352
3353            // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of
3354            // the base character in all of the following rules. Treat ZWJ as if it were CM.
3355            var prev = types[index - 1];
3356            if (LINE_BREAKS.indexOf(prev) === -1) {
3357                indicies.push(indicies[index - 1]);
3358                return types.push(prev);
3359            }
3360            indicies.push(index);
3361            return types.push(AL);
3362        }
3363
3364        indicies.push(index);
3365
3366        if (classType === CJ) {
3367            return types.push(lineBreak === 'strict' ? NS : ID);
3368        }
3369
3370        if (classType === SA) {
3371            return types.push(AL);
3372        }
3373
3374        if (classType === AI) {
3375            return types.push(AL);
3376        }
3377
3378        // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL
3379        // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised
3380        // to take into account the actual line breaking properties for these characters.
3381        if (classType === XX) {
3382            if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) {
3383                return types.push(ID);
3384            } else {
3385                return types.push(AL);
3386            }
3387        }
3388
3389        types.push(classType);
3390    });
3391
3392    return [indicies, types, categories];
3393};
3394
3395var isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(a, b, currentIndex, classTypes) {
3396    var current = classTypes[currentIndex];
3397    if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {
3398        var i = currentIndex;
3399        while (i <= classTypes.length) {
3400            i++;
3401            var next = classTypes[i];
3402
3403            if (next === b) {
3404                return true;
3405            }
3406
3407            if (next !== SP) {
3408                break;
3409            }
3410        }
3411    }
3412
3413    if (current === SP) {
3414        var _i = currentIndex;
3415
3416        while (_i > 0) {
3417            _i--;
3418            var prev = classTypes[_i];
3419
3420            if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {
3421                var n = currentIndex;
3422                while (n <= classTypes.length) {
3423                    n++;
3424                    var _next = classTypes[n];
3425
3426                    if (_next === b) {
3427                        return true;
3428                    }
3429
3430                    if (_next !== SP) {
3431                        break;
3432                    }
3433                }
3434            }
3435
3436            if (prev !== SP) {
3437                break;
3438            }
3439        }
3440    }
3441    return false;
3442};
3443
3444var previousNonSpaceClassType = function previousNonSpaceClassType(currentIndex, classTypes) {
3445    var i = currentIndex;
3446    while (i >= 0) {
3447        var type = classTypes[i];
3448        if (type === SP) {
3449            i--;
3450        } else {
3451            return type;
3452        }
3453    }
3454    return 0;
3455};
3456
3457var _lineBreakAtIndex = function _lineBreakAtIndex(codePoints, classTypes, indicies, index, forbiddenBreaks) {
3458    if (indicies[index] === 0) {
3459        return BREAK_NOT_ALLOWED;
3460    }
3461
3462    var currentIndex = index - 1;
3463    if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
3464        return BREAK_NOT_ALLOWED;
3465    }
3466
3467    var beforeIndex = currentIndex - 1;
3468    var afterIndex = currentIndex + 1;
3469    var current = classTypes[currentIndex];
3470
3471    // LB4 Always break after hard line breaks.
3472    // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.
3473    var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
3474    var next = classTypes[afterIndex];
3475
3476    if (current === CR && next === LF) {
3477        return BREAK_NOT_ALLOWED;
3478    }
3479
3480    if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
3481        return BREAK_MANDATORY;
3482    }
3483
3484    // LB6 Do not break before hard line breaks.
3485    if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
3486        return BREAK_NOT_ALLOWED;
3487    }
3488
3489    // LB7 Do not break before spaces or zero width space.
3490    if (SPACE.indexOf(next) !== -1) {
3491        return BREAK_NOT_ALLOWED;
3492    }
3493
3494    // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.
3495    if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
3496        return BREAK_ALLOWED;
3497    }
3498
3499    // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.
3500    if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {
3501        return BREAK_NOT_ALLOWED;
3502    }
3503
3504    // LB11 Do not break before or after Word joiner and related characters.
3505    if (current === WJ || next === WJ) {
3506        return BREAK_NOT_ALLOWED;
3507    }
3508
3509    // LB12 Do not break after NBSP and related characters.
3510    if (current === GL) {
3511        return BREAK_NOT_ALLOWED;
3512    }
3513
3514    // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.
3515    if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
3516        return BREAK_NOT_ALLOWED;
3517    }
3518
3519    // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.
3520    if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
3521        return BREAK_NOT_ALLOWED;
3522    }
3523
3524    // LB14 Do not break after ‘[’, even after spaces.
3525    if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
3526        return BREAK_NOT_ALLOWED;
3527    }
3528
3529    // LB15 Do not break within ‘”[’, even with intervening spaces.
3530    if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
3531        return BREAK_NOT_ALLOWED;
3532    }
3533
3534    // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.
3535    if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
3536        return BREAK_NOT_ALLOWED;
3537    }
3538
3539    // LB17 Do not break within ‘——’, even with intervening spaces.
3540    if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
3541        return BREAK_NOT_ALLOWED;
3542    }
3543
3544    // LB18 Break after spaces.
3545    if (current === SP) {
3546        return BREAK_ALLOWED;
3547    }
3548
3549    // LB19 Do not break before or after quotation marks, such as ‘ ” ’.
3550    if (current === QU || next === QU) {
3551        return BREAK_NOT_ALLOWED;
3552    }
3553
3554    // LB20 Break before and after unresolved CB.
3555    if (next === CB || current === CB) {
3556        return BREAK_ALLOWED;
3557    }
3558
3559    // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.
3560    if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
3561        return BREAK_NOT_ALLOWED;
3562    }
3563
3564    // LB21a Don't break after Hebrew + Hyphen.
3565    if (before === HL && HYPHEN.indexOf(current) !== -1) {
3566        return BREAK_NOT_ALLOWED;
3567    }
3568
3569    // LB21b Don’t break between Solidus and Hebrew letters.
3570    if (current === SY && next === HL) {
3571        return BREAK_NOT_ALLOWED;
3572    }
3573
3574    // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.
3575    if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {
3576        return BREAK_NOT_ALLOWED;
3577    }
3578
3579    // LB23 Do not break between digits and letters.
3580    if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {
3581        return BREAK_NOT_ALLOWED;
3582    }
3583
3584    // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.
3585    if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {
3586        return BREAK_NOT_ALLOWED;
3587    }
3588
3589    // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.
3590    if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
3591        return BREAK_NOT_ALLOWED;
3592    }
3593
3594    // LB25 Do not break between the following pairs of classes relevant to numbers:
3595    if (
3596    // (PR | PO) × ( OP | HY )? NU
3597    [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) ||
3598    // ( OP | HY ) × NU
3599    [OP, HY].indexOf(current) !== -1 && next === NU ||
3600    // NU ×	(NU | SY | IS)
3601    current === NU && [NU, SY, IS].indexOf(next) !== -1) {
3602        return BREAK_NOT_ALLOWED;
3603    }
3604
3605    // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)
3606    if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
3607        var prevIndex = currentIndex;
3608        while (prevIndex >= 0) {
3609            var type = classTypes[prevIndex];
3610            if (type === NU) {
3611                return BREAK_NOT_ALLOWED;
3612            } else if ([SY, IS].indexOf(type) !== -1) {
3613                prevIndex--;
3614            } else {
3615                break;
3616            }
3617        }
3618    }
3619
3620    // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))
3621    if ([PR, PO].indexOf(next) !== -1) {
3622        var _prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
3623        while (_prevIndex >= 0) {
3624            var _type = classTypes[_prevIndex];
3625            if (_type === NU) {
3626                return BREAK_NOT_ALLOWED;
3627            } else if ([SY, IS].indexOf(_type) !== -1) {
3628                _prevIndex--;
3629            } else {
3630                break;
3631            }
3632        }
3633    }
3634
3635    // LB26 Do not break a Korean syllable.
3636    if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {
3637        return BREAK_NOT_ALLOWED;
3638    }
3639
3640    // LB27 Treat a Korean Syllable Block the same as ID.
3641    if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {
3642        return BREAK_NOT_ALLOWED;
3643    }
3644
3645    // LB28 Do not break between alphabetics (“at”).
3646    if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
3647        return BREAK_NOT_ALLOWED;
3648    }
3649
3650    // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).
3651    if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
3652        return BREAK_NOT_ALLOWED;
3653    }
3654
3655    // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.
3656    if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {
3657        return BREAK_NOT_ALLOWED;
3658    }
3659
3660    // LB30a Break between two regional indicator symbols if and only if there are an even number of regional
3661    // indicators preceding the position of the break.
3662    if (current === RI && next === RI) {
3663        var i = indicies[currentIndex];
3664        var count = 1;
3665        while (i > 0) {
3666            i--;
3667            if (classTypes[i] === RI) {
3668                count++;
3669            } else {
3670                break;
3671            }
3672        }
3673        if (count % 2 !== 0) {
3674            return BREAK_NOT_ALLOWED;
3675        }
3676    }
3677
3678    // LB30b Do not break between an emoji base and an emoji modifier.
3679    if (current === EB && next === EM) {
3680        return BREAK_NOT_ALLOWED;
3681    }
3682
3683    return BREAK_ALLOWED;
3684};
3685
3686var lineBreakAtIndex = exports.lineBreakAtIndex = function lineBreakAtIndex(codePoints, index) {
3687    // LB2 Never break at the start of text.
3688    if (index === 0) {
3689        return BREAK_NOT_ALLOWED;
3690    }
3691
3692    // LB3 Always break at the end of text.
3693    if (index >= codePoints.length) {
3694        return BREAK_MANDATORY;
3695    }
3696
3697    var _codePointsToCharacte = codePointsToCharacterClasses(codePoints),
3698        _codePointsToCharacte2 = _slicedToArray(_codePointsToCharacte, 2),
3699        indicies = _codePointsToCharacte2[0],
3700        classTypes = _codePointsToCharacte2[1];
3701
3702    return _lineBreakAtIndex(codePoints, classTypes, indicies, index);
3703};
3704
3705var cssFormattedClasses = function cssFormattedClasses(codePoints, options) {
3706    if (!options) {
3707        options = { lineBreak: 'normal', wordBreak: 'normal' };
3708    }
3709
3710    var _codePointsToCharacte3 = codePointsToCharacterClasses(codePoints, options.lineBreak),
3711        _codePointsToCharacte4 = _slicedToArray(_codePointsToCharacte3, 3),
3712        indicies = _codePointsToCharacte4[0],
3713        classTypes = _codePointsToCharacte4[1],
3714        isLetterNumber = _codePointsToCharacte4[2];
3715
3716    if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {
3717        classTypes = classTypes.map(function (type) {
3718            return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;
3719        });
3720    }
3721
3722    var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (isLetterNumber, i) {
3723        return isLetterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;
3724    }) : null;
3725
3726    return [indicies, classTypes, forbiddenBreakpoints];
3727};
3728
3729var inlineBreakOpportunities = exports.inlineBreakOpportunities = function inlineBreakOpportunities(str, options) {
3730    var codePoints = (0, Util$2.toCodePoints)(str);
3731    var output = BREAK_NOT_ALLOWED;
3732
3733    var _cssFormattedClasses = cssFormattedClasses(codePoints, options),
3734        _cssFormattedClasses2 = _slicedToArray(_cssFormattedClasses, 3),
3735        indicies = _cssFormattedClasses2[0],
3736        classTypes = _cssFormattedClasses2[1],
3737        forbiddenBreakpoints = _cssFormattedClasses2[2];
3738
3739    codePoints.forEach(function (codePoint, i) {
3740        output += (0, Util$2.fromCodePoint)(codePoint) + (i >= codePoints.length - 1 ? BREAK_MANDATORY : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));
3741    });
3742
3743    return output;
3744};
3745
3746var Break = function () {
3747    function Break(codePoints, lineBreak, start, end) {
3748        _classCallCheck(this, Break);
3749
3750        this._codePoints = codePoints;
3751        this.required = lineBreak === BREAK_MANDATORY;
3752        this.start = start;
3753        this.end = end;
3754    }
3755
3756    _createClass(Break, [{
3757        key: 'slice',
3758        value: function slice() {
3759            return Util$2.fromCodePoint.apply(undefined, _toConsumableArray(this._codePoints.slice(this.start, this.end)));
3760        }
3761    }]);
3762
3763    return Break;
3764}();
3765
3766var LineBreaker = exports.LineBreaker = function LineBreaker(str, options) {
3767    var codePoints = (0, Util$2.toCodePoints)(str);
3768
3769    var _cssFormattedClasses3 = cssFormattedClasses(codePoints, options),
3770        _cssFormattedClasses4 = _slicedToArray(_cssFormattedClasses3, 3),
3771        indicies = _cssFormattedClasses4[0],
3772        classTypes = _cssFormattedClasses4[1],
3773        forbiddenBreakpoints = _cssFormattedClasses4[2];
3774
3775    var length = codePoints.length;
3776    var lastEnd = 0;
3777    var nextIndex = 0;
3778
3779    return {
3780        next: function next() {
3781            if (nextIndex >= length) {
3782                return { done: true };
3783            }
3784            var lineBreak = BREAK_NOT_ALLOWED;
3785            while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED) {}
3786
3787            if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {
3788                var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);
3789                lastEnd = nextIndex;
3790                return { value: value, done: false };
3791            }
3792
3793            return { done: true };
3794        }
3795    };
3796};
3797});
3798
3799unwrapExports(LineBreak);
3800var LineBreak_1 = LineBreak.LineBreaker;
3801var LineBreak_2 = LineBreak.inlineBreakOpportunities;
3802var LineBreak_3 = LineBreak.lineBreakAtIndex;
3803var LineBreak_4 = LineBreak.codePointsToCharacterClasses;
3804var LineBreak_5 = LineBreak.UnicodeTrie;
3805var LineBreak_6 = LineBreak.BREAK_ALLOWED;
3806var LineBreak_7 = LineBreak.BREAK_NOT_ALLOWED;
3807var LineBreak_8 = LineBreak.BREAK_MANDATORY;
3808var LineBreak_9 = LineBreak.classes;
3809var LineBreak_10 = LineBreak.LETTER_NUMBER_MODIFIER;
3810
3811var dist = createCommonjsModule(function (module, exports) {
3812Object.defineProperty(exports, "__esModule", {
3813  value: true
3814});
3815
3816
3817
3818Object.defineProperty(exports, 'toCodePoints', {
3819  enumerable: true,
3820  get: function get() {
3821    return Util$2.toCodePoints;
3822  }
3823});
3824Object.defineProperty(exports, 'fromCodePoint', {
3825  enumerable: true,
3826  get: function get() {
3827    return Util$2.fromCodePoint;
3828  }
3829});
3830
3831
3832
3833Object.defineProperty(exports, 'LineBreaker', {
3834  enumerable: true,
3835  get: function get() {
3836    return LineBreak.LineBreaker;
3837  }
3838});
3839});
3840
3841unwrapExports(dist);
3842
3843var Unicode = createCommonjsModule(function (module, exports) {
3844Object.defineProperty(exports, "__esModule", {
3845    value: true
3846});
3847exports.breakWords = exports.fromCodePoint = exports.toCodePoints = undefined;
3848
3849
3850
3851Object.defineProperty(exports, 'toCodePoints', {
3852    enumerable: true,
3853    get: function get() {
3854        return dist.toCodePoints;
3855    }
3856});
3857Object.defineProperty(exports, 'fromCodePoint', {
3858    enumerable: true,
3859    get: function get() {
3860        return dist.fromCodePoint;
3861    }
3862});
3863
3864
3865
3866var _NodeContainer2 = _interopRequireDefault(NodeContainer_1);
3867
3868
3869
3870function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3871
3872var breakWords = exports.breakWords = function breakWords(str, parent) {
3873    var breaker = (0, dist.LineBreaker)(str, {
3874        lineBreak: parent.style.lineBreak,
3875        wordBreak: parent.style.overflowWrap === overflowWrap.OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : parent.style.wordBreak
3876    });
3877
3878    var words = [];
3879    var bk = void 0;
3880
3881    while (!(bk = breaker.next()).done) {
3882        words.push(bk.value.slice());
3883    }
3884
3885    return words;
3886};
3887});
3888
3889unwrapExports(Unicode);
3890var Unicode_1 = Unicode.breakWords;
3891var Unicode_2 = Unicode.fromCodePoint;
3892var Unicode_3 = Unicode.toCodePoints;
3893
3894var TextBounds_1 = createCommonjsModule(function (module, exports) {
3895Object.defineProperty(exports, "__esModule", {
3896    value: true
3897});
3898exports.parseTextBounds = exports.TextBounds = undefined;
3899
3900
3901
3902
3903
3904
3905
3906var _Feature2 = _interopRequireDefault(Feature);
3907
3908
3909
3910function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3911
3912function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3913
3914var TextBounds = exports.TextBounds = function TextBounds(text, bounds) {
3915    _classCallCheck(this, TextBounds);
3916
3917    this.text = text;
3918    this.bounds = bounds;
3919};
3920
3921var parseTextBounds = exports.parseTextBounds = function parseTextBounds(value, parent, node) {
3922    var letterRendering = parent.style.letterSpacing !== 0;
3923    var textList = letterRendering ? (0, Unicode.toCodePoints)(value).map(function (i) {
3924        return (0, Unicode.fromCodePoint)(i);
3925    }) : (0, Unicode.breakWords)(value, parent);
3926    var length = textList.length;
3927    var defaultView = node.parentNode ? node.parentNode.ownerDocument.defaultView : null;
3928    var scrollX = defaultView ? defaultView.pageXOffset : 0;
3929    var scrollY = defaultView ? defaultView.pageYOffset : 0;
3930    var textBounds = [];
3931    var offset = 0;
3932    for (var i = 0; i < length; i++) {
3933        var text = textList[i];
3934        if (parent.style.textDecoration !== textDecoration.TEXT_DECORATION.NONE || text.trim().length > 0) {
3935            if (_Feature2.default.SUPPORT_RANGE_BOUNDS) {
3936                textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length, scrollX, scrollY)));
3937            } else {
3938                var replacementNode = node.splitText(text.length);
3939                textBounds.push(new TextBounds(text, getWrapperBounds(node, scrollX, scrollY)));
3940                node = replacementNode;
3941            }
3942        } else if (!_Feature2.default.SUPPORT_RANGE_BOUNDS) {
3943            node = node.splitText(text.length);
3944        }
3945        offset += text.length;
3946    }
3947    return textBounds;
3948};
3949
3950var getWrapperBounds = function getWrapperBounds(node, scrollX, scrollY) {
3951    var wrapper = node.ownerDocument.createElement('html2canvaswrapper');
3952    wrapper.appendChild(node.cloneNode(true));
3953    var parentNode = node.parentNode;
3954    if (parentNode) {
3955        parentNode.replaceChild(wrapper, node);
3956        var bounds = (0, Bounds_1.parseBounds)(wrapper, scrollX, scrollY);
3957        if (wrapper.firstChild) {
3958            parentNode.replaceChild(wrapper.firstChild, wrapper);
3959        }
3960        return bounds;
3961    }
3962    return new Bounds_1.Bounds(0, 0, 0, 0);
3963};
3964
3965var getRangeBounds = function getRangeBounds(node, offset, length, scrollX, scrollY) {
3966    var range = node.ownerDocument.createRange();
3967    range.setStart(node, offset);
3968    range.setEnd(node, offset + length);
3969    return Bounds_1.Bounds.fromClientRect(range.getBoundingClientRect(), scrollX, scrollY);
3970};
3971});
3972
3973unwrapExports(TextBounds_1);
3974var TextBounds_2 = TextBounds_1.parseTextBounds;
3975var TextBounds_3 = TextBounds_1.TextBounds;
3976
3977var TextContainer_1 = createCommonjsModule(function (module, exports
3977) {
3978Object.defineProperty(exports, "__esModule", {
3979    value: true
3980});
3981
3982var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3983
3984
3985
3986
3987
3988function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3989
3990var TextContainer = function () {
3991    function TextContainer(text, parent, bounds) {
3992        _classCallCheck(this, TextContainer);
3993
3994        this.text = text;
3995        this.parent = parent;
3996        this.bounds = bounds;
3997    }
3998
3999    _createClass(TextContainer, null, [{
4000        key: 'fromTextNode',
4001        value: function fromTextNode(node, parent) {
4002            var text = transform(node.data, parent.style.textTransform);
4003            return new TextContainer(text, parent, (0, TextBounds_1.parseTextBounds)(text, parent, node));
4004        }
4005    }]);
4006
4007    return TextContainer;
4008}();
4009
4010exports.default = TextContainer;
4011
4012
4013var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
4014
4015var transform = function transform(text, _transform) {
4016    switch (_transform) {
4017        case textTransform.TEXT_TRANSFORM.LOWERCASE:
4018            return text.toLowerCase();
4019        case textTransform.TEXT_TRANSFORM.CAPITALIZE:
4020            return text.replace(CAPITALIZE, capitalize);
4021        case textTransform.TEXT_TRANSFORM.UPPERCASE:
4022            return text.toUpperCase();
4023        default:
4024            return text;
4025    }
4026};
4027
4028function capitalize(m, p1, p2) {
4029    if (m.length > 0) {
4030        return p1 + p2.toUpperCase();
4031    }
4032
4033    return m;
4034}
4035});
4036
4037unwrapExports(TextContainer_1);
4038
4039var Circle_1 = createCommonjsModule(function (module, exports) {
4040Object.defineProperty(exports, "__esModule", {
4041    value: true
4042});
4043
4044
4045
4046function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4047
4048var Circle = function Circle(x, y, radius) {
4049    _classCallCheck(this, Circle);
4050
4051    this.type = Path.PATH.CIRCLE;
4052    this.x = x;
4053    this.y = y;
4054    this.radius = radius;
4055    
4056};
4057
4058exports.default = Circle;
4059});
4060
4061unwrapExports(Circle_1);
4062
4063var Input = createCommonjsModule(function (module, exports) {
4064Object.defineProperty(exports, "__esModule", {
4065    value: true
4066});
4067exports.reformatInputBounds = exports.inlineSelectElement = exports.inlineTextAreaElement = exports.inlineInputElement = exports.getInputBorderRadius = exports.INPUT_BACKGROUND = exp
4067orts.INPUT_BORDERS = exports.INPUT_COLOR = undefined;
4068
4069
4070
4071var _TextContainer2 = _interopRequireDefault(TextContainer_1);
4072
4073
4074
4075
4076
4077
4078
4079var _Circle2 = _interopRequireDefault(Circle_1);
4080
4081
4082
4083var _Vector2 = _interopRequireDefault(Vector_1);
4084
4085
4086
4087var _Color2 = _interopRequireDefault(Color_1);
4088
4089
4090
4091var _Length2 = _interopRequireDefault(Length_1);
4092
4093
4094
4095
4096
4097
4098
4099function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4100
4101var INPUT_COLOR = exports.INPUT_COLOR = new _Color2.default([42, 42, 42]);
4102var INPUT_BORDER_COLOR = new _Color2.default([165, 165, 165]);
4103var INPUT_BACKGROUND_COLOR = new _Color2.default([222, 222, 222]);
4104var INPUT_BORDER = {
4105    borderWidth: 1,
4106    borderColor: INPUT_BORDER_COLOR,
4107    borderStyle: border.BORDER_STYLE.SOLID
4108};
4109var INPUT_BORDERS = exports.INPUT_BORDERS = [INPUT_BORDER, INPUT_BORDER, INPUT_BORDER, INPUT_BORDER];
4110var INPUT_BACKGROUND = exports.INPUT_BACKGROUND = {
4111    backgroundColor: INPUT_BACKGROUND_COLOR,
4112    backgroundImage: [],
4113    backgroundClip: background.BACKGROUND_CLIP.PADDING_BOX,
4114    backgroundOrigin: background.BACKGROUND_ORIGIN.PADDING_BOX
4115};
4116
4117var RADIO_BORDER_RADIUS = new _Length2.default('50%');
4118var RADIO_BORDER_RADIUS_TUPLE = [RADIO_BORDER_RADIUS, RADIO_BORDER_RADIUS];
4119var INPUT_RADIO_BORDER_RADIUS = [RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE];
4120
4121var CHECKBOX_BORDER_RADIUS = new _Length2.default('3px');
4122var CHECKBOX_BORDER_RADIUS_TUPLE = [CHECKBOX_BORDER_RADIUS, CHECKBOX_BORDER_RADIUS];
4123var INPUT_CHECKBOX_BORDER_RADIUS = [CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE];
4124
4125var getInputBorderRadius = exports.getInputBorderRadius = function getInputBorderRadius(node) {
4126    return node.type === 'radio' ? INPUT_RADIO_BORDER_RADIUS : INPUT_CHECKBOX_BORDER_RADIUS;
4127};
4128
4129var inlineInputElement = exports.inlineInputElement = function inlineInputElement(node, container) {
4130    if (node.type === 'radio' || node.type === 'checkbox') {
4131        if (node.checked) {
4132            var size = Math.min(container.bounds.width, container.bounds.height);
4133            container.childNodes.push(node.type === 'checkbox' ? [new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79), new _Vector2.default(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549), new _Vector2.default(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071), new _Vector2.default(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649), new _Vector2.default(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23), new _Vector2.default(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085), new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)] : new _Circle2.default(container.bounds.left + size / 4, container.bounds.top + size / 4, size / 4));
4134        }
4135    } else {
4136        inlineFormElement(getInputValue(node), node, container, false);
4137    }
4138};
4139
4140var inlineTextAreaElement = exports.inlineTextAreaElement = function inlineTextAreaElement(node, container) {
4141    inlineFormElement(node.value, node, container, true);
4142};
4143
4144var inlineSelectElement = exports.inlineSelectElement = function inlineSelectElement(node, container) {
4145    var option = node.options[node.selectedIndex || 0];
4146    inlineFormElement(option ? option.text || '' : '', node, container, false);
4147};
4148
4149var reformatInputBounds = exports.reformatInputBounds = function reformatInputBounds(bounds) {
4150    if (bounds.width > bounds.height) {
4151        bounds.left += (bounds.width - bounds.height) / 2;
4152        bounds.width = bounds.height;
4153    } else if (bounds.width < bounds.height) {
4154        bounds.top += (bounds.height - bounds.width) / 2;
4155        bounds.height = bounds.width;
4156    }
4157    return bounds;
4158};
4159
4160var inlineFormElement = function inlineFormElement(value, node, container, allowLinebreak) {
4161    var body = node.ownerDocument.body;
4162    if (value.length > 0 && body) {
4163        var wrapper = node.ownerDocument.createElement('html2canvaswrapper');
4164        (0, Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node, null), wrapper);
4165        wrapper.style.position = 'absolute';
4166        wrapper.style.left = container.bounds.left + 'px';
4167        wrapper.style.top = container.bounds.top + 'px';
4168        if (!allowLinebreak) {
4169            wrapper.style.whiteSpace = 'nowrap';
4170        }
4171        var text = node.ownerDocument.createTextNode(value);
4172        wrapper.appendChild(text);
4173        body.appendChild(wrapper);
4174        container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));
4175        body.removeChild(wrapper);
4176    }
4177};
4178
4179var getInputValue = function getInputValue(node) {
4180    var value = node.type === 'password' ? new Array(node.value.length + 1).join('\u2022') : node.value;
4181
4182    return value.length === 0 ? node.placeholder || '' : value;
4183};
4184});
4185
4186unwrapExports(Input);
4187var Input_1 = Input.reformatInputBounds;
4188var Input_2 = Input.inlineSelectElement;
4189var Input_3 = Input.inlineTextAreaElement;
4190var Input_4 = Input.inlineInputElement;
4191var Input_5 = Input.getInputBorderRadius;
4192var Input_6 = Input.INPUT_BACKGROUND;
4193var Input_7 = Input.INPUT_BORDERS;
4194var Input_8 = Input.INPUT_COLOR;
4195
4196var ListItem = createCommonjsModule(function (module, exports) {
4197Object.defineProperty(exports, "__esModule", {
4198    value: true
4199});
4200exports.createCounterText = exports.inlineListItemElement = exports.getListOwner = undefined;
4201
4202
4203
4204
4205
4206var _NodeContainer2 = _interopRequireDefault(NodeContainer_1);
4207
4208
4209
4210var _TextContainer2 = _interopRequireDefault(TextContainer_1);
4211
4212
4213
4214
4215
4216function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4217
4218// Margin between the enumeration and the list item content
4219var MARGIN_RIGHT = 7;
4220
4221var ancestorTypes = ['OL', 'UL', 'MENU'];
4222
4223var getListOwner = exports.getListOwner = function getListOwner(container) {
4224    var parent = container.parent;
4225    if (!parent) {
4226        return null;
4227    }
4228
4229    do {
4230        var isAncestor = ancestorTypes.indexOf(parent.tagName) !== -1;
4231        if (isAncestor) {
4232            return parent;
4233        }
4234        parent = parent.parent;
4235    } while (parent);
4236
4237    return container.parent;
4238};
4239
4240var inlineListItemElement = exports.inlineListItemElement = function inlineListItemElement(node, container, resourceLoader) {
4241    var listStyle$$1 = container.style.listStyle;
4242
4243    if (!listStyle$$1) {
4244        return;
4245    }
4246
4247    var style = node.ownerDocument.defaultView.getComputedStyle(node, null);
4248    var wrapper = node.ownerDocument.createElement('html2canvaswrapper');
4249    (0, Util.copyCSSStyles)(style, wrapper);
4250
4251    wrapper.style.position = 'absolute';
4252    wrapper.style.bottom = 'auto';
4253    wrapper.style.display = 'block';
4254    wrapper.style.letterSpacing = 'normal';
4255
4256    switch (listStyle$$1.listStylePosition) {
4257        case listStyle.LIST_STYLE_POSITION.OUTSIDE:
4258            wrapper.style.left = 'auto';
4259            wrapper.style.right = node.ownerDocument.defaultView.innerWidth - container.bounds.left - container.style.margin[1].getAbsoluteValue(container.bounds.width) + MARGIN_RIGHT + 'px';
4260            wrapper.style.textAlign = 'right';
4261            break;
4262        case listStyle.LIST_STYLE_POSITION.INSIDE:
4263            wrapper.style.left = container.bounds.left - container.style.margin[3].getAbsoluteValue(container.bounds.width) + 'px';
4264            wrapper.style.right = 'auto';
4265            wrapper.style.textAlign = 'left';
4266            break;
4267    }
4268
4269    var text = void 0;
4270    var MARGIN_TOP = container.style.margin[0].getAbsoluteValue(container.bounds.width);
4271    var styleImage = listStyle$$1.listStyleImage;
4272    if (styleImage) {
4273        if (styleImage.method === 'url') {
4274            var image = node.ownerDocument.createElement('img');
4275            image.src = styleImage.args[0];
4276            wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px';
4277            wrapper.style.width = 'auto';
4278            wrapper.style.height = 'auto';
4279            wrapper.appendChild(image);
4280        } else {
4281            var size = parseFloat(container.style.font.fontSize) * 0.5;
4282            wrapper.style.top = container.bounds.top - MARGIN_TOP + container.bounds.height - 1.5 * size + 'px';
4283            wrapper.style.width = size + 'px';
4284            wrapper.style.height = size + 'px';
4285            wrapper.style.backgroundImage = style.listStyleImage;
4286        }
4287    } else if (typeof container.listIndex === 'number') {
4288        text = node.ownerDocument.createTextNode(createCounterText(container.listIndex, listStyle$$1.listStyleType, true));
4289        wrapper.appendChild(text);
4290        wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px';
4291    }
4292
4293    // $FlowFixMe
4294    var body = node.ownerDocument.body;
4295    body.appendChild(wrapper);
4296
4297    if (text) {
4298        container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));
4299        body.removeChild(wrapper);
4300    } else {
4301        // $FlowFixMe
4302        container.childNodes.push(new _NodeContainer2.default(wrapper, container, resourceLoader, 0));
4303    }
4304};
4305
4306var ROMAN_UPPER = {
4307    integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
4308    values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
4309};
4310
4311var ARMENIAN = {
4312    integers: [9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
4313    values: ['Ք', 'Փ', 'Ւ', 'Ց', 'Ր', 'Տ', 'Վ', 'Ս', 'Ռ', 'Ջ', 'Պ', 'Չ', 'Ո', 'Շ', 'Ն', 'Յ', 'Մ', 'Ճ', 'Ղ', 'Ձ', 'Հ', 'Կ', 'Ծ', 'Խ', 'Լ', 'Ի', 'Ժ', 'Թ', 'Ը', 'Է', 'Զ', 'Ե', 'Դ', 'Գ', 'Բ', 'Ա']
4314};
4315
4316var HEBREW = {
4317    integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
4318    values: ['י׳', 'ט׳', 'ח׳', 'ז׳', 'ו׳', 'ה׳', 'ד׳', 'ג׳', 'ב׳', 'א׳', 'ת', 'ש', 'ר', 'ק', 'צ', 'פ', 'ע', 'ס', 'נ', 'מ', 'ל', 'כ', 'יט', 'יח', 'יז', 'טז', 'טו', 'י', 'ט', 'ח', 'ז', 'ו', 'ה', 'ד', 'ג', 'ב', 'א']
4319};
4320
4321var GEORGIAN = {
4322    integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
4323    values: ['ჵ', 'ჰ', 'ჯ', 'ჴ', 'ხ', 'ჭ', 'წ', 'ძ', 'ც', 'ჩ', 'შ', 'ყ', 'ღ', 'ქ', 'ფ', 'ჳ', 'ტ', 'ს', 'რ', 'ჟ', 'პ', 'ო', 'ჲ', 'ნ', 'მ', 'ლ', 'კ', 'ი', 'თ', 'ჱ', 'ზ', 'ვ', 'ე', 'დ', 'გ', 'ბ', 'ა']
4324};
4325
4326var createAdditiveCounter = function createAdditiveCounter(value, min, max, symbols, fallback, suffix) {
4327    if (value < min || value > max) {
4328        return createCounterText(value, fallback, suffix.length > 0);
4329    }
4330
4331    return symbols.integers.reduce(function (string, integer, index) {
4332        while (value >= integer) {
4333            value -= integer;
4334            string += symbols.values[index];
4335        }
4336        return string;
4337    }, '') + suffix;
4338};
4339
4340var createCounterStyleWithSymbolResolver = function createCounterStyleWithSymbolResolver(value, codePointRangeLength, isNumeric, resolver) {
4341    var string = '';
4342
4343    do {
4344        if (!isNumeric) {
4345            value--;
4346        }
4347        string = resolver(value) + string;
4348        value /= codePointRangeLength;
4349    } while (value * codePointRangeLength >= codePointRangeLength);
4350
4351    return string;
4352};
4353
4354var createCounterStyleFromRange = function createCounterStyleFromRange(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {
4355    var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
4356
4357    return (value < 0 ? '-' : '') + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {
4358        return (0, Unicode.fromCodePoint)(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
4359    }) + suffix);
4360};
4361
4362var createCounterStyleFromSymbols = function createCounterStyleFromSymbols(value, symbols) {
4363    var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '. ';
4364
4365    var codePointRangeLength = symbols.length;
4366    return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) {
4367        return symbols[Math.floor(codePoint % codePointRangeLength)];
4368    }) + suffix;
4369};
4370
4371var CJK_ZEROS = 1 << 0;
4372var CJK_TEN_COEFFICIENTS = 1 << 1;
4373var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
4374var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
4375
4376var createCJKCounter = function createCJKCounter(value, numbers, multipliers, negativeSign, suffix, flags) {
4377    if (value < -9999 || value > 9999) {
4378        return createCounterText(value, listStyle.LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);
4379    }
4380    var tmp = Math.abs(value);
4381    var string = suffix;
4382
4383    if (tmp === 0) {
4384        return numbers[0] + string;
4385    }
4386
4387    for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
4388        var coefficient = tmp % 10;
4389
4390        if (coefficient === 0 && (0, Util.contains)(flags, CJK_ZEROS) && string !== '') {
4391            string = numbers[coefficient] + string;
4392        } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && (0, Util.contains)(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && (0, Util.contains)(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && (0, Util.contains)(flags, CJK_HUNDRED_COEFFICIENTS)) {
4393            string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;
4394        } else if (coefficient === 1 && digit > 0) {
4395            string = multipliers[digit - 1] + string;
4396        }
4397        tmp = Math.floor(tmp / 10);
4398    }
4399
4400    return (value < 0 ? negativeSign : '') + string;
4401};
4402
4403var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';
4404var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';
4405var JAPANESE_NEGATIVE = 'マイナス';
4406var KOREAN_NEGATIVE = '마이너스 ';
4407
4408var createCounterText = exports.createCounterText = function createCounterText(value, type, appendSuffix) {
4409    var defaultSuffix = appendSuffix ? '. ' : '';
4410    var cjkSuffix = appendSuffix ? '、' : '';
4411    var koreanSuffix = appendSuffix ? ', ' : '';
4412    switch (type) {
4413        case listStyle.LIST_STYLE_TYPE.DISC:
4414            return '•';
4415        case listStyle.LIST_STYLE_TYPE.CIRCLE:
4416            return '◦';
4417        case listStyle.LIST_STYLE_TYPE.SQUARE:
4418            return '◾';
4419        case listStyle.LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:
4420            var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
4421            return string.length < 4 ? '0' + string : string;
4422        case listStyle.LIST_STYLE_TYPE.CJK_DECIMAL:
4423            return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);
4424        case listStyle.LIST_STYLE_TYPE.LOWER_ROMAN:
4425            return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();
4426        case listStyle.LIST_STYLE_TYPE.UPPER_ROMAN:
4427            return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4428        case listStyle.LIST_STYLE_TYPE.LOWER_GREEK:
4429            return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
4430        case listStyle.LIST_STYLE_TYPE.LOWER_ALPHA:
4431            return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
4432        case listStyle.LIST_STYLE_TYPE.UPPER_ALPHA:
4433            return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
4434        case listStyle.LIST_STYLE_TYPE.ARABIC_INDIC:
4435            return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
4436        case listStyle.LIST_STYLE_TYPE.ARMENIAN:
4437        case listStyle.LIST_STYLE_TYPE.UPPER_ARMENIAN:
4438            return createAdditiveCounter(value, 1, 9999, ARMENIAN, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4439        case listStyle.LIST_STYLE_TYPE.LOWER_ARMENIAN:
4440            return createAdditiveCounter(value, 1, 9999, ARMENIAN, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();
4441        case listStyle.LIST_STYLE_TYPE.BENGALI:
4442            return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
4443        case listStyle.LIST_STYLE_TYPE.CAMBODIAN:
4444        case listStyle.LIST_STYLE_TYPE.KHMER:
4445            return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
4446        case listStyle.LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:
4447            return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);
4448        case listStyle.LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:
4449            return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);
4450        case listStyle.LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:
4451        case listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:
4452            return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
4453        case listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:
4454            return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
4455        case listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:
4456            return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
4457        case listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:
4458            return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
4459        case listStyle.LIST_STYLE_TYPE.JAPANESE_INFORMAL:
4460            return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);
4461        case listStyle.LIST_STYLE_TYPE.JAPANESE_FORMAL:
4462            return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
4463        case listStyle.LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:
4464            return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
4465        case listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:
4466            return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);
4467        case listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:
4468            return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
4469        case listStyle.LIST_STYLE_TYPE.DEVANAGARI:
4470            return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);
4471        case listStyle.LIST_STYLE_TYPE.GEORGIAN:
4472            return createAdditiveCounter(value, 1, 19999, GEORGIAN, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4473        case listStyle.LIST_STYLE_TYPE.GUJARATI:
4474            return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);
4475        case listStyle.LIST_STYLE_TYPE.GURMUKHI:
4476            return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);
4477        case listStyle.LIST_STYLE_TYPE.HEBREW:
4478            return createAdditiveCounter(value, 1, 10999, HEBREW, listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4479        case listStyle.LIST_STYLE_TYPE.HIRAGANA:
4480            return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');
4481        case listStyle.LIST_STYLE_TYPE.HIRAGANA_IROHA:
4482            return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');
4483        case listStyle.LIST_STYLE_TYPE.KANNADA:
4484            return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);
4485        case listStyle.LIST_STYLE_TYPE.KATAKANA:
4486            return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);
4487        case listStyle.LIST_STYLE_TYPE.KATAKANA_IROHA:
4488            return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);
4489        case listStyle.LIST_STYLE_TYPE.LAO:
4490            return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);
4491        case listStyle.LIST_STYLE_TYPE.MONGOLIAN:
4492            return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);
4493        case listStyle.LIST_STYLE_TYPE.MYANMAR:
4494            return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);
4495        case listStyle.LIST_STYLE_TYPE.ORIYA:
4496            return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);
4497        case listStyle.LIST_STYLE_TYPE.PERSIAN:
4498            return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);
4499        case listStyle.LIST_STYLE_TYPE.TAMIL:
4500            return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);
4501        case listStyle.LIST_STYLE_TYPE.TELUGU:
4502            return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);
4503        case listStyle.LIST_STYLE_TYPE.THAI:
4504            return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);
4505        case listStyle.LIST_STYLE_TYPE.TIBETAN:
4506            return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);
4507        case listStyle.LIST_STYLE_TYPE.DECIMAL:
4508        default:
4509            return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
4510    }
4511};
4512});
4513
4514unwrapExports(ListItem);
4515var ListItem_1 = ListItem.createCounterText;
4516var ListItem_2 = ListItem.inlineListItemElement;
4517var ListItem_3 = ListItem.getListOwner;
4518
4519var NodeContainer_1 = createCommonjsModule(function (module, exports) {
4520Object.defineProperty(exports, "__esModule", {
4521    value: true
4522});
4523
4524var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4525
4526
4527
4528var _Color2 = _interopRequireDefault(Color_1);
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4581
4582function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4583
4584var INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];
4585
4586var NodeContainer = function () {
4587    function NodeContainer(node, parent, resourceLoader, index) {
4588        var _this = this;
4589
4590        _classCallCheck(this, NodeContainer);
4591
4592        this.parent = parent;
4593        this.tagName = node.tagName;
4594        this.index = index;
4595        this.childNodes = [];
4596        this.listItems = [];
4597        if (typeof node.start === 'number') {
4598            this.listStart = node.start;
4599        }
4600        var defaultView = node.ownerDocument.defaultView;
4601        var scrollX = defaultView.pageXOffset;
4602        var scrollY = defaultView.pageYOffset;
4603        var style = defaultView.getComputedStyle(node, null);
4604        var display$$1 = (0, display.parseDisplay)(style.display);
4605
4606        var IS_INPUT = node.type === 'radio' || node.type === 'checkbox';
4607
4608        var position$$1 = (0, position.parsePosition)(style.position);
4609
4610        this.style = {
4611            background: IS_INPUT ? Input.INPUT_BACKGROUND : (0, background.parseBackgroun
4611d)(style, resourceLoader),
4612            border: IS_INPUT ? Input.INPUT_BORDERS : (0, border.parseBorder)(style),
4613            borderRadius: (node instanceof defaultView.HTMLInputElement || node instanceof HTMLInputElement) && IS_INPUT ? (0, Input.getInputBorderRadius)(node) : (0, borderRadius.parseBorderRadius)(style),
4614            color: IS_INPUT ? Input.INPUT_COLOR : new _Color2.default(style.color),
4615            display: display$$1,
4616            float: (0, float_1.parseCSSFloat)(style.float),
4617            font: (0, font.parseFont)(style),
4618            letterSpacing: (0, letterSpacing.parseLetterSpacing)(style.letterSpacing),
4619            listStyle: display$$1 === display.DISPLAY.LIST_ITEM ? (0, listStyle.parseListStyle)(style) : null,
4620            lineBreak: (0, lineBreak.parseLineBreak)(style.lineBreak),
4621            margin: (0, margin.parseMargin)(style),
4622            opacity: parseFloat(style.opacity),
4623            overflow: INPUT_TAGS.indexOf(node.tagName) === -1 ? (0, overflow.parseOverflow)(style.overflow) : overflow.OVERFLOW.HIDDEN,
4624            overflowWrap: (0, overflowWrap.parseOverflowWrap)(style.overflowWrap ? style.overflowWrap : style.wordWrap),
4625            padding: (0, padding.parsePadding)(style),
4626            position: position$$1,
4627            textDecoration: (0, textDecoration.parseTextDecoration)(style),
4628            textShadow: (0, textShadow.parseTextShadow)(style.textShadow),
4629            textTransform: (0, textTransform.parseTextTransform)(style.textTransform),
4630            transform: (0, transform.parseTransform)(style),
4631            visibility: (0, visibility.parseVisibility)(style.visibility),
4632            wordBreak: (0, wordBreak.parseWordBreak)(style.wordBreak),
4633            zIndex: (0, zIndex.parseZIndex)(position$$1 !== position.POSITION.STATIC ? style.zIndex : 'auto')
4634        };
4635
4636        if (this.isTransformed()) {
4637            // getBoundingClientRect provides values post-transform, we want them without the transformation
4638            node.style.transform = 'matrix(1,0,0,1,0,0)';
4639        }
4640
4641        if (display$$1 === display.DISPLAY.LIST_ITEM) {
4642            var listOwner = (0, ListItem.getListOwner)(this);
4643            if (listOwner) {
4644                var listIndex = listOwner.listItems.length;
4645                listOwner.listItems.push(this);
4646                this.listIndex = node.hasAttribute('value') && typeof node.value === 'number' ? node.value : listIndex === 0 ? typeof listOwner.listStart === 'number' ? listOwner.listStart : 1 : listOwner.listItems[listIndex - 1].listIndex + 1;
4647            }
4648        }
4649
4650        // TODO move bound retrieval for all nodes to a later stage?
4651        if (node.tagName === 'IMG') {
4652            node.addEventListener('load', function () {
4653                _this.bounds = (0, Bounds_1.parseBounds)(node, scrollX, scrollY);
4654                _this.curvedBounds = (0, Bounds_1.parseBoundCurves)(_this.bounds, _this.style.border, _this.style.borderRadius);
4655            });
4656        }
4657        this.image = getImage(node, resourceLoader);
4658        this.bounds = IS_INPUT ? (0, Input.reformatInputBounds)((0, Bounds_1.parseBounds)(node, scrollX, scrollY)) : (0, Bounds_1.parseBounds)(node, scrollX, scrollY);
4659        this.curvedBounds = (0, Bounds_1.parseBoundCurves)(this.bounds, this.style.border, this.style.borderRadius);
4660
4661        
4662    }
4663
4664    _createClass(NodeContainer, [{
4665        key: 'getClipPaths',
4666        value: function getClipPaths() {
4667            var parentClips = this.parent ? this.parent.getClipPaths() : [];
4668            var isClipped = this.style.overflow !== overflow.OVERFLOW.VISIBLE;
4669
4670            return isClipped ? parentClips.concat([(0, Bounds_1.calculatePaddingBoxPath)(this.curvedBounds)]) : parentClips;
4671        }
4672    }, {
4673        key: 'isInFlow',
4674        value: function isInFlow() {
4675            return this.isRootElement() && !this.isFloating() && !this.isAbsolutelyPositioned();
4676        }
4677    }, {
4678        key: 'isVisible',
4679        value: function isVisible() {
4680            return !(0, Util.contains)(this.style.display, display.DISPLAY.NONE) && this.style.opacity >
4680 0 && this.style.visibility === visibility.VISIBILITY.VISIBLE;
4681        }
4682    }, {
4683        key: 'isAbsolutelyPositioned',
4684        value: function isAbsolutelyPositioned() {
4685            return this.style.position !== position.POSITION.STATIC && this.style.position !== position.POSITION.RELATIVE;
4686        }
4687    }, {
4688        key: 'isPositioned',
4689        value: function isPositioned() {
4690            return this.style.position !== position.POSITION.STATIC;
4691        }
4692    }, {
4693        key: 'isFloating',
4694        value: function isFloating() {
4695            return this.style.float !== float_1.FLOAT.NONE;
4696        }
4697    }, {
4698        key: 'isRootElement',
4699        value: function isRootElement() {
4700            return this.parent === null;
4701        }
4702    }, {
4703        key: 'isTransformed',
4704        value: function isTransformed() {
4705            return this.style.transform !== null;
4706        }
4707    }, {
4708        key: 'isPositionedWithZIndex',
4709        value: function isPositionedWithZIndex() {
4710            return this.isPositioned() && !this.style.zIndex.auto;
4711        }
4712    }, {
4713        key: 'isInlineLevel',
4714        value: function isInlineLevel() {
4715            return (0, Util.contains)(this.style.display, display.DISPLAY.INLINE) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_BLOCK) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_FLEX) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_GRID) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_LIST_ITEM) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_TABLE);
4716        }
4717    }, {
4718        key: 'isInlineBlockOrInlineTable',
4719        value: function isInlineBlockOrInlineTable() {
4720            return (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_BLOCK) || (0, Util.contains)(this.style.display, display.DISPLAY.INLINE_TABLE);
4721        }
4722    }]);
4723
4724    return NodeContainer;
4725}();
4726
4727exports.default = NodeContainer;
4728
4729
4730var getImage = function getImage(node, resourceLoader) {
4731    if (node instanceof node.ownerDocument.defaultView.SVGSVGElement || node instanceof SVGSVGElement) {
4732        var s = new XMLSerializer();
4733        return resourceLoader.loadImage('data:image/svg+xml,' + encodeURIComponent(s.serializeToString(node)));
4734    }
4735    switch (node.tagName) {
4736        case 'IMG':
4737            // $FlowFixMe
4738            var img = node;
4739            return resourceLoader.loadImage(img.currentSrc || img.src);
4740        case 'CANVAS':
4741            // $FlowFixMe
4742            var canvas = node;
4743            return resourceLoader.loadCanvas(canvas);
4744        case 'IFRAME':
4745            var iframeKey = node.getAttribute('data-html2canvas-internal-iframe-key');
4746            if (iframeKey) {
4747                return iframeKey;
4748            }
4749            break;
4750    }
4751
4752    return null;
4753};
4754});
4755
4756unwrapExports(NodeContainer_1);
4757
4758var StackingContext_1 = createCommonjsModule(function (module, exports) {
4759Object.defineProperty(exports, "__esModule", {
4760    value: true
4761});
4762
4763var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4764
4765
4766
4767var _NodeContainer2 = _interopRequireDefault(NodeContainer_1);
4768
4769
4770
4771function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4772
4773function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4774
4775var StackingContext = function () {
4776    function StackingContext(container, parent, treatAsRealStackingContext) {
4777        _classCallCheck(this, StackingContext);
4778
4779        this.container = container;
4780        this.parent = parent;
4781        this.contexts = [];
4782        this.children = [];
4783        this.treatAsRealStackingContext = treatAsRealStackingContext;
4784    }
4785
4786    _createClass(StackingContext, [{
4787        key: 'getOpacity',
4788        value: function getOpacity() {
4789            return this.parent ? this.container.style.opacity * this.parent.getOpacity() : this.container.style.opacity;
4790        }
4791    }, {
4792        key: 'getRealParentStackingContext',
4793        value: function getRealParentStackingContext() {
4794            return !this.parent || this.treatAsRealStackingContext ? this : this.parent.getRealParentStackingContext();
4795        }
4796    }]);
4797
4798    return StackingContext;
4799}();
4800
4801exports.default = StackingContext;
4802});
4803
4804unwrapExports(StackingContext_1);
4805
4806var NodeParser_1 = createCommonjsModule(function (module, exports) {
4807Object.defineProperty(exports, "__esModule", {
4808    value: true
4809});
4810exports.NodeParser = undefined;
4811
4812
4813
4814var _StackingContext2 = _interopRequireDefault(StackingContext_1);
4815
4816
4817
4818var _NodeContainer2 = _interopRequireDefault(NodeContainer_1);
4819
4820
4821
4822var _TextContainer2 = _interopRequireDefault(TextContainer_1);
4823
4824
4825
4826
4827
4828
4829
4830function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4831
4832var NodeParser = exports.NodeParser = function NodeParser(node, resourceLoader, logger) {
4833    var index = 0;
4834
4835    var container = new _NodeContainer2.default(node, null, resourceLoader, index++);
4836    var stack = new _StackingContext2.default(container, null, true);
4837
4838    parseNodeTree(node, container, stack, resourceLoader, index);
4839
4840    return stack;
4841};
4842
4843var IGNORED_NODE_NAMES = ['SCRIPT', 'HEAD', 'TITLE', 'OBJECT', 'BR', 'OPTION'];
4844
4845var parseNodeTree = function parseNodeTree(node, parent, stack, resourceLoader, index) {
4846    for (var childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {
4847        nextNode = childNode.nextSibling;
4848        var defaultView = childNode.ownerDocument.defaultView;
4849        if (childNode instanceof defaultView.Text || childNode instanceof Text || defaultView.parent && childNode instanceof defaultView.parent.Text) {
4850            if (childNode.data.trim().length > 0) {
4851                parent.childNodes.push(_TextContainer2.default.fromTextNode(childNode, parent));
4852            }
4853        } else if (childNode instanceof defaultView.HTMLElement || childNode instanceof HTMLElement || defaultView.parent && childNode instanceof defaultView.parent.HTMLElement) {
4854            if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) {
4855                var container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++);
4856                if (container.isVisible()) {
4857                    if (childNode.tagName === 'INPUT') {
4858                        // $FlowFixMe
4859                        (0, Input.inlineInputElement)(childNode, container);
4860                    } else if (childNode.tagName === 'TEXTAREA') {
4861                        // $FlowFixMe
4862                        (0, Input.inlineTextAreaElement)(childNode, container);
4863                    } else if (childNode.tagName === 'SELECT') {
4864                        // $FlowFixMe
4865                        (0, Input.inlineSelectElement)(childNode, container);
4866                    } else if (container.style.listStyle && container.style.listStyle.listStyleType !== listStyle.LIST_STYLE_TYPE.NONE) {
4867                        (0, ListItem.inlineListItemElement)(childNode, container, resourceLoader);
4868                    }
4869
4870                    var SHOULD_TRAVERSE_CHILDREN = childNode.tagName !== 'TEXTAREA';
4871                    var treatAsRealStackingContext = createsRealStackingContext(container, childNode);
4872                    if (treatAsRealStackingContext || createsStackingContext(container)) {
4873                        // for treatAsRealStackingContext:false, any positioned descendants and descendants
4874                        // which actually create a new stacking context should be considered part of the parent stacking context
4875                        var parentStack = treatAsRealStackingContext || container.isPositioned() ? stack.getRealParentStackingContext() : stack;
4876                        var childStack = new _StackingContext2.default(container, parentStack, treatAsRealStackingContext);
4877                        parentStack.contexts.push(childStack);
4878                        if (SHOULD_TRAVERSE_CHILDREN) {
4879                            parseNodeTree(childNode, container, childStack, resourceLoader, index);
4880                        }
4881                    } else {
4882                        stack.children.push(container);
4883                        if (SHOULD_TRAVERSE_CHILDREN) {
4884                            parseNodeTree(childNode, container, stack, resourceLoader, index);
4885                        }
4886                    }
4887                }
4888            }
4889        } else if (childNode instanceof defaultView.SVGSVGElement || childNode instanceof SVGSVGElement || defaultView.parent && childNode instanceof defaultView.parent.SVGSVGElement) {
4890            var _container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++);
4891            var _treatAsRealStackingContext = createsRealStackingContext(_container, childNode);
4892            if (_treatAsRealStackingContext || createsStackingContext(_container)) {
4893                // for treatAsRealStackingContext:false, any positioned descendants and desce
4893ndants
4894                // which actually create a new stacking context should be considered part of the parent stacking context
4895                var _parentStack = _treatAsRealStackingContext || _container.isPositioned() ? stack.getRealParentStackingContext() : stack;
4896                var _childStack = new _StackingContext2.default(_container, _parentStack, _treatAsRealStackingContext);
4897                _parentStack.contexts.push(_childStack);
4898            } else {
4899                stack.children.push(_container);
4900            }
4901        }
4902    }
4903};
4904
4905var createsRealStackingContext = function createsRealStackingContext(container, node) {
4906    return container.isRootElement() || container.isPositionedWithZIndex() || container.style.opacity < 1 || container.isTransformed() || isBodyWithTransparentRoot(container, node);
4907};
4908
4909var createsStackingContext = function createsStackingContext(container) {
4910    return container.isPositioned() || container.isFloating();
4911};
4912
4913var isBodyWithTransparentRoot = function isBodyWithTransparentRoot(container, node) {
4914    return node.nodeName === 'BODY' && container.parent instanceof _NodeContainer2.default && container.parent.style.background.backgroundColor.isTransparent();
4915};
4916});
4917
4918unwrapExports(NodeParser_1);
4919var NodeParser_2 = NodeParser_1.NodeParser;
4920
4921var Font = createCommonjsModule(function (module, exports) {
4922Object.defineProperty(exports, "__esModule", {
4923    value: true
4924});
4925exports.FontMetrics = undefined;
4926
4927var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4928
4929
4930
4931function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4932
4933var SAMPLE_TEXT = 'Hidden Text';
4934
4935var FontMetrics = exports.FontMetrics = function () {
4936    function FontMetrics(document) {
4937        _classCallCheck(this, FontMetrics);
4938
4939        this._data = {};
4940        this._document = document;
4941    }
4942
4943    _createClass(FontMetrics, [{
4944        key: '_parseMetrics',
4945        value: function _parseMetrics(font) {
4946            var container = this._document.createElement('div');
4947            var img = this._document.createElement('img');
4948            var span = this._document.createElement('span');
4949
4950            var body = this._document.body;
4951            if (!body) {
4952                throw new Error('');
4953            }
4954
4955            container.style.visibility = 'hidden';
4956            container.style.fontFamily = font.fontFamily;
4957            container.style.fontSize = font.fontSize;
4958            container.style.margin = '0';
4959            container.style.padding = '0';
4960
4961            body.appendChild(container);
4962
4963            img.src = Util.SMALL_IMAGE;
4964            img.width = 1;
4965            img.height = 1;
4966
4967            img.style.margin = '0';
4968            img.style.padding = '0';
4969            img.style.verticalAlign = 'baseline';
4970
4971            span.style.fontFamily = font.fontFamily;
4972            span.style.fontSize = font.fontSize;
4973            span.style.margin = '0';
4974            span.style.padding = '0';
4975
4976            span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
4977            container.appendChild(span);
4978            container.appendChild(img);
4979            var baseline = img.offsetTop - span.offsetTop + 2;
4980
4981            container.removeChild(span);
4982            container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
4983
4984            container.style.lineHeight = 'normal';
4985            img.style.verticalAlign = 'super';
4986
4987            var middle = img.offsetTop - container.offsetTop + 2;
4988
4989            body.removeChild(container);
4990
4991            return { baseline: baseline, middle: middle };
4992        }
4993    }, {
4994        key: 'getMetrics',
4995        value: function getMetrics(font) {
4996            var key = font.fontFamily + ' ' + font.fontSize;
4997            if (this._data[key] === undefined) {
4998                this._data[key] = this._parseMetrics(font);
4999            }
5000
5001            return this._data[key];
5002        }
5003    }]);
5004
5005    return FontMetrics;
5006}();
5007});
5008
5009unwrapExports(Font);
5010var Font_1 = Font.FontMetrics;
5011
5012var Angle = createCommonjsModule(function (module, exports) {
5013Object.defineProperty(exports, "__esModule", {
5014    value: true
5015});
5016var ANGLE = /([+-]?\d*\.?\d+)(deg|grad|rad|turn)/i;
5017
5018var parseAngle = exports.parseAngle = function parseAngle(angle) {
5019    var match = angle.match(ANGLE);
5020
5021    if (match) {
5022        var value = parseFloat(match[1]);
5023        switch (match[2].toLowerCase()) {
5024            case 'deg':
5025                return Math.PI * value / 180;
5026            case 'grad':
5027                return Math.PI / 200 * value;
5028            case 'rad':
5029                return value;
5030            case 'turn':
5031                return Math.PI * 2 * value;
5032        }
5033    }
5034
5035    return null;
5036};
5037});
5038
5039unwrapExports(Angle);
5040var Angle_1 = Angle.parseAngle;
5041
5042var Gradient = createCommonjsModule(function (module, exports) {
5043Object.defineProperty(exports, "__esModule", {
5044    value: true
5045});
5046exports.transformWebkitRadialGradientArgs = exports.parseGradient = exports.RadialGradient = exports.LinearGradient = exports.RADIAL_GRADIENT_SHAPE = exports.GRADIENT_TYPE = undefined;
5047
5048var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
5049
5050
5051
5052var _NodeContainer2 = _interopRequireDefault(NodeContainer_1);
5053
5054
5055
5056
5057
5058var _Color2 = _interopRequireDefault(Color_1);
5059
5060
5061
5062var _Length2 = _interopRequireDefault(Length_1);
5063
5064
5065
5066function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5067
5068function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5069
5070var SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i;
5071var PERCENTAGE_ANGLES = /^([+-]?\d*\.?\d+)% ([+-]?\d*\.?\d+)%$/i;
5072var ENDS_WITH_LENGTH = /(px)|%|( 0)$/i;
5073var FROM_TO_COLORSTOP = /^(from|to|color-stop)\((?:([\d.]+)(%)?,\s*)?(.+?)\)$/i;
5074var RADIAL_SHAPE_DEFINITION = /^\s*(circle|ellipse)?\s*((?:([\d.]+)(px|r?em|%)\s*(?:([\d.]+)(px|r?em|%))?)|closest-side|closest-corner|farthest-side|farthest-corner)?\s*(?:at\s*(?:(left|center|right)|([\d.]+)(px|r?em|%))\s+(?:(top|center|bottom)|([\d.]+)(px|r?em|%)))?(?:\s|$)/i;
5075
5076var GRADIENT_TYPE = exports.GRADIENT_TYPE = {
5077    LINEAR_GRADIENT: 0,
5078    RADIAL_GRADIENT: 1
5079};
5080
5081var RADIAL_GRADIENT_SHAPE = exports.RADIAL_GRADIENT_SHAPE = {
5082    CIRCLE: 0,
5083    ELLIPSE: 1
5084};
5085
5086var LENGTH_FOR_POSITION = {
5087    left: new _Length2.default('0%'),
5088    top: new _Length2.default('0%'),
5089    center: new _Length2.default('50%'),
5090    right: new _Length2.default('100%'),
5091    bottom: new _Length2.default('100%')
5092};
5093
5094var LinearGradient = exports.LinearGradient = function LinearGradient(colorStops, direction) {
5095    _classCallCheck(this, LinearGradient);
5096
5097    this.type = GRADIENT_TYPE.LINEAR_GRADIENT;
5098    this.colorStops = colorStops;
5099    this.direction = direction;
5100};
5101
5102var RadialGradient = exports.RadialGradient = function RadialGradient(colorStops, shape, center, radius) {
5103    _classCallCheck(this, RadialGradient);
5104
5105    this.type = GRADIENT_TYPE.RADIAL_GRADIENT;
5106    this.colorStops = colorStops;
5107    this.shape = shape;
5108    this.center = center;
5109    this.radius = radius;
5110};
5111
5112var parseGradient = exports.parseGradient = function parseGradient(container, _ref, bounds) {
5113    var args = _ref.args,
5114        method = _ref.method,
5115        prefix = _ref.prefix;
5116
5117    if (method === 'linear-gradient') {
5118        return parseLinearGradient(args, bounds, !!prefix);
5119    } else if (method === 'gradient' && args[0] === 'linear') {
5120        // TODO handle correct angle
5121        return parseLinearGradient(['to bottom'].concat(transformObsoleteColorStops(args.slice(3))), bounds, !!prefix);
5122    } else if (method === 'radial-gradient') {
5123        return parseRadialGradient(container, prefix === '-webkit-' ? transformWebkitRadialGradientArgs(args) : args, bounds);
5124    } else if (method === 'gradient' && args[0] === 'radial') {
5125        return parseRadialGradient(container, transformObsoleteColorStops(transformWebkitRadialGradientArgs(args.slice(1))), bounds);
5126    }
5127};
5128
5129var parseColorStops = function parseColorStops(args, firstColorStopIndex, lineLength) {
5130    var colorStops = [];
5131
5132    for (var i = firstColorStopIndex; i < args.length; i++) {
5133        var value = args[i];
5134        var HAS_LENGTH = ENDS_WITH_LENGTH.test(value);
5135        var lastSpaceIndex = value.lastIndexOf(' ');
5136        var _color = new _Color2.default(HAS_LENGTH ? value.substring(0, lastSpaceIndex) : value);
5137        var _stop = HAS_LENGTH ? new _Length2.default(value.substring(lastSpaceIndex + 1)) : i === firstColorStopIndex ? new _Length2.default('0%') : i === args.length - 1 ? new _Length2.default('100%') : null;
5138        colorStops.push({ color: _color, stop: _stop });
5139    }
5140
5141    var absoluteValuedColorStops = colorStops.map(function (_ref2) {
5142        var color = _ref2.color,
5143            stop = _ref2.stop;
5144
5145        var absoluteStop = lineLength === 0 ? 0 : stop ? stop.getAbsoluteValue(lineLength) / lineLength : null;
5146
5147        return {
5148            color: color,
5149            // $FlowFixMe
5150            stop: absoluteStop
5151        };
5152    });
5153
5154    var previousColorStop = absoluteValuedColorStops[0].stop;
5155    for (var _i = 0; _i < absoluteValuedColorStops.length; _i++) {
5156        if (previousColorStop !== null) {
5157            var _stop2 = absoluteValuedColorStops[_i].stop;
5158            if (_stop2 === null) {
5159                var n = _i;
5160                while (absoluteValuedColorStops[n].stop === null) {
5161                    n++;
5162                }
5163                var steps = n - _i + 1;
5164                var nextColorStep = absoluteValuedColorStops[n].stop;
5165                var stepSize = (nextColorStep - previousColorStop) / steps;
5166                for (; _i < n; _i++) {
5167                    previousColorStop = absoluteValuedColorStops[_i].stop = previousColorStop + stepSize;
5168                }
5169            } else {
5170                previousColorStop = _stop2;
5171            }
5172        }
5173    }
5174
5175    return absoluteValuedColorStops;
5176};
5177
5178var parseLinearGradient = function parseLinearGradient(args, bounds, hasPrefix) {
5179    var angle = (0, Angle.parseAngle)(args[0]);
5180    var HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]);
5181    var HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]);
5182    var direction = HAS_DIRECTION ? angle !== null ? calculateGradientDirection(
5183    // if there is a prefix, the 0° angle points due East (instead of North per W3C)
5184    hasPrefix ? angle - Math.PI * 0.5 : angle, bounds) : HAS_SIDE_OR_CORNER ? parseSideOrCorner(args[0], bounds) : parsePercentageAngle(args[0], bounds) : calculateGradientDirection(Math.PI, bounds);
5185    var firstColorStopIndex = HAS_DIRECTION ? 1 : 0;
5186
5187    // TODO: Fix some inaccuracy with color stops with px values
5188    var lineLength = Math.min((0, Util.distance)(Math.abs(direction.x0) + Math.abs(direction.x1), Math.abs(direction.y0) + Math.abs(direction.y1)), bounds.width * 2, bounds.height * 2);
5189
5190    return new LinearGradient(parseColorStops(args, firstColorStopIndex, lineLength), direction);
5191};
5192
5193var parseRadialGradient = function parseRadialGradient(container, args, bounds) {
5194    var m = args[0].match(RADIAL_SHAPE_DEFINITION);
5195    var shape = m && (m[1] === 'circle' || // explicit shape specification
5196    m[3] !== undefined && m[5] === undefined) // only one radius coordinate
5197    ? RADIAL_GRADIENT_SHAPE.CIRCLE : RADIAL_GRADIENT_SHAPE.ELLIPSE;
5198    var radius = {};
5199    var center = {};
5200
5201    if (m) {
5202        // Radius
5203        if (m[3] !== undefined) {
5204            radius.x = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[3], m[4]).getAbsoluteValue(bounds.width);
5205        }
5206
5207        if (m[5] !== undefined) {
5208            radius.y = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[5], m[6]).getAbsoluteValue(bounds.height);
5209        }
5210
5211        // Position
5212        if (m[7]) {
5213            center.x = LENGTH_FOR_POSITION[m[7].toLowerCase()];
5214        } else if (m[8] !== undefined) {
5215            center.x = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[8], m[9]);
5216        }
5217
5218        if (m[10]) {
5219            center.y = LENGTH_FOR_POSITION[m[10].toLowerCase()];
5220        } else if (m[11] !== undefined) {
5221            center.y = (0, Length_1.calculateLengthFromValueWithUnit)(container, m[11], m[12]);
5222        }
5223    }
5224
5225    var gradientCenter = {
5226        x: center.x === undefined ? bounds.width / 2 : center.x.getAbsoluteValue(bounds.width),
5227        y: center.y === undefined ? bounds.height / 2 : center.y.getAbsoluteValue(bounds.height)
5228    };
5229    var gradientRadius = calculateRadius(m && m[2] || 'farthest-corner', shape, gradientCenter, radius, bounds);
5230
5231    return new RadialGradient(parseColorStops(args, m ? 1 : 0, Math.min(gradientRadius.x, gradientRadius.y)), shape, gradientCenter, gradientRadius);
5232};
5233
5234var calculateGradientDirection = function calculateGradientDirection(radian, bounds) {
5235    var width = bounds.width;
5236    var height = bounds.height;
5237    var HALF_WIDTH = width * 0.5;
5238    var HALF_HEIGHT = height * 0.5;
5239    var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
5240    var HALF_LINE_LENGTH = lineLength / 2;
5241
5242    var x0 = HALF_WIDTH + Math.sin(radian) * HALF_LINE_LENGTH;
5243    var y0 = HALF_HEIGHT - Math.cos(radian) * HALF_LINE_LENGTH;
5244    var x1 = width - x0;
5245    var y1 = height - y0;
5246
5247    return { x0: x0, x1: x1, y0: y0, y1: y1 };
5248};
5249
5250var parseTopRight = function parseTopRight(bounds) {
5251    return Math.acos(bounds.width / 2 / ((0, Util.distance)(bounds.width, bounds.height) / 2));
5252};
5253
5254var parseSideOrCorner = function parseSideOrCorner(side, bounds) {
5255    switch (side) {
5256        case 'bottom':
5257        case 'to top':
5258            return calculateGradientDirection(0, bounds);
5259        case 'left':
5260        case 'to right':
5261            return calculateGradientDirection(Math.PI / 2, bounds);
5262        case 'right':
5263        case 'to left':
5264            return calculateGradientDirection(3 * Math.PI / 2, bounds);
5265        case 'top right':
5266        case 'right top':
5267        case 'to bottom left':
5268        case 'to left bottom':
5269            return calculateGradientDirection(Math.PI + parseTopRight(bounds), bounds);
5270        case 'top left':
5271        case 'left top':
5272        case 'to bottom right':
5273        case 'to right bottom':
5274            return calculateGradientDirection(Math.PI - parseTopRight(bounds), bounds);
5275        case 'bottom left':
5276        case 'left bottom':
5277        case 'to top right':
5278        case 'to right top':
5279            return calculateGradientDirection(parseTopRight(bounds), bounds);
5280        case 'bottom right':
5281        case 'right bottom':
5282        case 'to top left':
5283        case 'to left top':
5284            return calculateGradientDirection(2 * Math.PI - parseTopRight(bounds), bounds);
5285        case 'top':
5286        case 'to bottom':
5287        default:
5288            return calculateGradientDirection(Math.PI, bounds);
5289    }
5290};
5291
5292var parsePercentageAngle = function parsePercentageAngle(angle, bounds) {
5293    var _angle$split$map = angle.split(' ').map(parseFloat),
5294        _angle$split$map2 = _slicedToArray(_angle$split$map, 2),
5295        left = _angle$split$map2[0],
5296        top = _angle$split$map2[1];
5297
5298    var ratio = left / 100 * bounds.width / (top / 100 * bounds.height);
5299
5300    return calculateGradientDirection(Math.atan(isNaN(ratio) ? 1 : ratio) + Math.PI / 2, bounds);
5301};
5302
5303var findCorner = function findCorner(bounds, x, y, closest) {
5304    var corners = [{ x: 0, y: 0 }, { x: 0, y: bounds.height }, { x: bounds.width, y: 0 }, { x: bounds.width, y: bounds.height }];
5305
5306    // $FlowFixMe
5307    return corners.reduce(function (stat, corner) {
5308        var d = (0, Util.distance)(x - corner.x, y - corner.y);
5309        if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
5310            return {
5311                optimumCorner: corner,
5312                optimumDistance: d
5313            };
5314        }
5315
5316        return stat;
5317    }, {
5318        optimumDistance: closest ? Infinity : -Infinity,
5319        optimumCorner: null
5320    }).optimumCorner;
5321};
5322
5323var calculateRadius = function calculateRadius(extent, shape, center, radius, bounds) {
5324    var x = center.x;
5325    var y = center.y;
5326    var rx = 0;
5327    var ry = 0;
5328
5329    switch (extent) {
5330        case 'closest-side':
5331            // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.
5332            // If the shape is an ellipse, it exactly meets the closest side in each dimension.
5333            if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
5334                rx = ry = Math.min(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));
5335            } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
5336                rx = Math.min(Math.abs(x), Math.abs(x - bounds.width));
5337                ry = Math.min(Math.abs(y), Math.abs(y - bounds.height));
5338            }
5339            break;
5340
5341        case 'closest-corner':
5342            // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.
5343            // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.
5344            if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
5345                rx = ry = Math.min((0, Util.distance)(x, y), (0, Util.distance)(x, y - bounds.height), (0, Util.distance)(x - bounds.width, y), (0, Util.distance)(x - bounds.width, y - bounds.height));
5346            } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
5347                // Compute the ratio ry/rx (which is to be the same as for "closest-side")
5348                var c = Math.min(Math.abs(y), Math.abs(y - bounds.height)) / Math.min(Math.abs(x), Math.abs(x - bounds.width));
5349                var corner = findCorner(bounds, x, y, true);
5350                rx = (0, Util.distance)(corner.x - x, (corner.y - y) / c);
5351                ry = c * rx;
5352            }
5353            break;
5354
5355        case 'farthest-side':
5356            // Same as closest-side, except the ending shape is sized based on the farthest side(s)
5357            if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
5358                rx = ry = Math.max(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));
5359            } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
5360                rx = Math.max(Math.abs(x), Math.abs(x - bounds.width));
5361                ry = Math.max(Math.abs(y), Math.abs(y - bounds.height));
5362            }
5363            break;
5364
5365        case 'farthest-corner':
5366            // Same as closest-corner, except the ending shape is sized based on the farthest corner.
5367            // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.
5368            if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
5369                rx = ry = Math.max((0, Util.distance)(x, y), (0, Util.distance)(x, y - bounds.height), (0, Util.distance)(x - bounds.width, y), (0, Util.distance)(x - bounds.width, y - bounds.height));
5370            } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
5371                // Compute the ratio ry/rx (which is to be the same as for "farthest-side")
5372                var _c = Math.max(Math.abs(y), Math.abs(y - bounds.height)) / Math.max(Math.abs(x), Math.abs(x - bounds.width));
5373                var _corner = findCorner(bounds, x, y, false);
5374                rx = (0, Util.distance)(_corner.x - x, (_corner.y - y) / _c);
5375                ry = _c * rx;
5376            }
5377            break;
5378
5379        default:
5380            // pixel or percentage values
5381            rx = radius.x || 0;
5382            ry = radius.y !== undefined ? radius.y : rx;
5383            break;
5384    }
5385
5386    return {
5387        x: rx,
5388        y: ry
5389    };
5390};
5391
5392var transformWebkitRadialGradientArgs = exports.transformWebkitRadialGradientArgs = function transformWebkitRadialGradientArgs(args) {
5393    var shape = '';
5394    var radius = '';
5395    var extent = '';
5396    var position = '';
5397    var idx = 0;
5398
5399    var POSITION = /^(left|center|right|\d+(?:px|r?em|%)?)(?:\s+(top|center|bottom|\d+(?:px|r?em|%)?))?$/i;
5400    var SHAPE_AND_EXTENT = /^(circle|ellipse)?\s*(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)?$/i;
5401    var RADIUS = /^\d+(px|r?em|%)?(?:\s+\d+(px|r?em|%)?)?$/i;
5402
5403    var matchStartPosition = args[idx].match(POSITION);
5404    if (matchStartPosition) {
5405        idx++;
5406    }
5407
5408    var matchShapeExtent = args[idx].match(SHAPE_AND_EXTENT);
5409    if (matchShapeExtent) {
5410        shape = matchShapeExtent[1] || '';
5411        extent = matchShapeExtent[2] || '';
5412        if (extent === 'contain') {
5413            extent = 'closest-side';
5414        } else if (extent === 'cover') {
5415            extent = 'farthest-corner';
5416        }
5417        idx++;
5418    }
5419
5420    var matchStartRadius = args[idx].match(RADIUS);
5421    if (matchStartRadius) {
5422        idx++;
5423    }
5424
5425    var matchEndPosition = args[idx].match(POSITION);
5426    if (matchEndPosition) {
5427        idx++;
5428    }
5429
5430    var matchEndRadius = args[idx].match(RADIUS);
5431    if (matchEndRadius) {
5432        idx++;
5433    }
5434
5435    var matchPosition = matchEndPosition || matchStartPosition;
5436    if (matchPosition && matchPosition[1]) {
5437        position = matchPosition[1] + (/^\d+$/.test(matchPosition[1]) ? 'px' : '');
5438        if (matchPosition[2]) {
5439            position += ' ' + matchPosition[2] + (/^\d+$/.test(matchPosition[2]) ? 'px' : '');
5440        }
5441    }
5442
5443    var matchRadius = matchEndRadius || matchStartRadius;
5444    if (matchRadius) {
5445        radius = matchRadius[0];
5446        if (!matchRadius[1]) {
5447            radius += 'px';
5448        }
5449    }
5450
5451    if (position && !shape && !radius && !extent) {
5452        radius = position;
5453        position = '';
5454    }
5455
5456    if (position) {
5457        position = 'at ' + position;
5458    }
5459
5460    return [[shape, extent, radius, position].filter(function (s) {
5461        return !!s;
5462    }).join(' ')].concat(args.slice(idx));
5463};
5464
5465var transformObsoleteColorStops = function transformObsoleteColorStops(args) {
5466    return args.map(function (color) {
5467        return color.match(FROM_TO_COLORSTOP);
5468    })
5469    // $FlowFixMe
5470    .map(function (v, index) {
5471        if (!v) {
5472            return args[index];
5473        }
5474
5475        switch (v[1]) {
5476            case 'from':
5477                return v[4] + ' 0%';
5478            case 'to':
5479                return v[4] + ' 100%';
5480            case 'color-stop':
5481                if (v[3] === '%') {
5482                    return v[4] + ' ' + v[2];
5483                }
5484                return v[4] + ' ' + parseFloat(v[2]) * 100 + '%';
5485        }
5486    });
5487};
5488});
5489
5490unwrapExports(Gradient);
5491var Gradient_1 = Gradient.transformWebkitRadialGradientArgs;
5492var Gradient_2 = Gradient.parseGradient;
5493var Gradient_3 = Gradient.RadialGradient;
5494var Gradient_4 = Gradient.LinearGradient;
5495var Gradient_5 = Gradient.RADIAL_GRADIENT_SHAPE;
5496var Gradient_6 = Gradient.GRADIENT_TYPE;
5497
5498var Renderer_1 = createCommonjsModule(function (module, exports) {
5499Object.defineProperty(exports, "__esModule", {
5500    value: true
5501});
5502
5503var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
vendor: 1,042 bytes, lines 5503-5525
5503 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
5504
5505var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515var _TextContainer2 = _interopRequireDefault(TextContainer_1);
5516
5517
5518
5519
5520
5521function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5522
5523function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5524
5525var Renderer = function () {
5526    function Renderer(target, options) {
5527        _classCallCheck(this, Renderer);
5528
5529        this.target = target;
5530        this.options = options;
5531        target.render(options);
5532    }
5533
5534    _createClass(Renderer, [{
5535        key: 'renderNode',
5536        value: function renderNode(container) {
5537            if (container.isVisible()) {
5538                this.renderNodeBackgroundAndBorders(container);
5539                this.renderNodeContent(container);
5540            }
5541        }
5542    }, {
5543        key: 'renderNodeContent',
5544        value: function renderNodeContent(container) {
5545            var _this = this;
5546
5547            var callback = function callback() {
5548                if (container.childNodes.length) {
5549                    container.childNodes.forEach(function (child) {
5550                        if (child instanceof _TextContainer2.default) {
5551                            var style = child.parent.style;
5552                            _this.target.renderTextNode(child.bounds, style.color, style.font, style.textDecoration, style.textShadow);
5553                        } else {
5554                            _this.target.drawShape(child, container.style.color);
5555                        }
5556                    });
5557                }
5558
5559                if (container.image) {
5560                    var _image = _this.options.imageStore.get(container.image);
5561                    if (_image) {
5562                        var contentBox = (0, Bounds_1.calculateContentBox)(container.bounds, container.style.padding, container.style.border);
5563                        var _width = typeof _image.width === 'number' && _image.width > 0 ? _image.width : contentBox.width;
5564                        var _height = typeof _image.height === 'number' && _image.height > 0 ? _image.height : contentBox.height;
5565                        if (_width > 0 && _height > 0) {
5566                            _this.target.clip([(0, Bounds_1.calculatePaddingBoxPath)(container.curvedBounds)], function () {
5567                                _this.target.drawImage(_image, new Bounds_1.Bounds(0, 0, _width, _height), contentBox);
5568                            });
5569                        }
5570                    }
5571                }
5572            };
5573            var paths = container.getClipPaths();
5574            if (paths.length) {
5575                this.target.clip(paths, callback);
5576            } else {
5577                callback();
5578            }
5579        }
5580    }, {
5581        key: 'renderNodeBackgroundAndBorders',
5582        value: function renderNodeBackgroundAndBorders(container) {
5583            var _this2 = this;
5584
5585            var HAS_BACKGROUND = !container.style.background.backgroundColor.isTransparent() || container.style.background.backgroundImage.length;
5586
5587            var hasRenderableBorders = container.style.border.some(function (border$$2) {
5588                return border$$2.borderStyle !== border.BORDER_STYLE.NONE && !border$$2.borderColor.isTransparent();
5589            });
5590
5591            var callback = function callback() {
5592                var backgroundPaintingArea = (0, background.calculateBackgroungPaintingArea)(container.curvedBounds, container.style.background.backgroundClip);
5593
5594                if (HAS_BACKGROUND) {
5595                    _this2.target.clip([backgroundPaintingArea], function () {
5596                        if (!container.style.background.backgroundColor.isTransparent()) {
5597                            _this2.target.fill(container.style.background.backgroundColor);
5598                        }
5599
5600                        _this2.renderBackgroundImage(container);
5601                    });
5602                }
5603
5604                container.style.border.forEach(function (border$$2, side) {
5605                    if (border$$2.borderStyle !== border.BORDER_STYLE.NONE && !border$$2.borderColor.isTransparent()) {
5606                        _this2.renderBorder(border$$2, side, container.curvedBounds);
5607                    }
5608                });
5609            };
5610
5611            if (HAS_BACKGROUND || hasRenderableBorders) {
5612                var paths = container.parent ? container.parent.getClipPaths() : [];
5613                if (paths.length) {
5614                    this.target.clip(paths, callback);
5615                } else {
5616                    callback();
5617                }
5618            }
5619        }
5620    }, {
5621        key: 'renderBackgroundImage',
5622        value: function renderBackgroundImage(container) {
5623            var _this3 = this;
5624
5625            container.style.background.backgroundImage.slice(0).reverse().forEach(function (backgroundImage) {
5626                if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) {
5627                    _this3.renderBackgroundRepeat(container, backgroundImage);
5628                } else if (/gradient/i.test(backgroundImage.source.method)) {
5629                    _this3.renderBackgroundGradient(container, backgroundImage);
5630                }
5631            });
5632        }
5633    }, {
5634        key: 'renderBackgroundRepeat',
5635        value: function renderBackgroundRepeat(container, background$$2) {
5636            var image = this.options.imageStore.get(background$$2.source.args[0]);
5637            if (image) {
5638                var backgroundPositioningArea = (0, background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);
5639                var backgroundImageSize = (0, background.calculateBackgroundSize)(background$$2, image, backgroundPositioningArea);
5640                var position = (0, background.calculateBackgroundPosition)(background$$2.position, backgroundImageSize, backgroundPositioningArea);
5641                var _path = (0, background.calculateBackgroundRepeatPath)(background$$2, position, backgroundImageSize, backgroundPositioningArea, container.bounds);
5642
5643                var _offsetX = Math.round(backgroundPositioningArea.left + position.x);
5644                var _offsetY = Math.round(backgroundPositioningArea.top + position.y);
5645                this.target.renderRepeat(_path, image, backgroundImageSize, _offsetX, _offsetY);
5646            }
5647        }
5648    }, {
5649        key: 'renderBackgroundGradient',
5650        value: function renderBackgroundGradient(container, background$$2) {
5651            var backgroundPositioningArea = (0, background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);
5652            var backgroundImageSize = (0, background.calculateGradientBackgroundSize)(background$$2, backgroundPositioningArea);
5653            var position = (0, background.calculateBackgroundPosition)(background$$2.position, backgroundImageSize, backgroundPositioningArea);
5654            var gradientBounds = new Bounds_1.Bounds(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y), backgroundImageSize.width, backgroundImageSize.height);
5655
5656            var gradient = (0, Gradient.parseGradient)(container, background$$2.source, gradientBounds);
5657            if (gradient) {
5658                switch (gradient.type) {
5659                    case Gradient.GRADIENT_TYPE.LINEAR_GRADIENT:
5660                        // $FlowFixMe
5661                        this.target.renderLinearGradient(gradientBounds, gradient);
5662                        break;
5663                    case Gradient.GRADIENT_TYPE.RADIAL_GRADIENT:
5664                        // $FlowFixMe
5665                        this.target.renderRadialGradient(gradientBounds, gradient);
5666                        break;
5667                }
5668            }
5669        }
5670    }, {
5671        key: 'renderBorder',
5672        value: function renderBorder(border$$2, side, curvePoints) {
5673            this.target.drawShape((0, Bounds_1.parsePathForBorder)(curvePoints, side), border$$2.borderColor);
5674        }
5675    }, {
5676        key: 'renderStack',
5677        value: function renderStack(stack) {
5678            var _this4 = this;
5679
5680            if (stack.container.isVisible()) {
5681                var _opacity = stack.getOpacity();
5682                if (_opacity !== this._opacity) {
5683                    this.target.setOpacity(stack.getOpacity());
5684                    this._opacity = _opacity;
5685                }
5686
5687                var _transform = stack.container.style.transform;
5688                if (_transform !== null) {
5689                    this.target.transform(stack.container.bounds.left + _transform.transformOrigin[0].value, stack.container.bounds.top + _transform.transformOrigin[1].value, _transform.transform, function () {
5690                        return _this4.renderStackContent(stack);
5691                    });
5692                } else {
5693                    this.renderStackContent(stack);
5694                }
5695            }
5696        }
5697    }, {
5698        key: 'renderStackContent',
5699        value: function renderStackContent(stack) {
5700            var _splitStackingContext = splitStackingContexts(stack),
5701                _splitStackingContext2 = _slicedToArray(_splitStackingContext, 5),
5702                negativeZIndex = _splitStackingContext2[0],
5703                zeroOrAutoZIndexOrTransformedOrOpacity = _splitStackingContext2[1],
5704                positiveZIndex = _splitStackingContext2[2],
5705                nonPositionedFloats = _splitStackingContext2[3],
5706                nonPositionedInlineLevel = _splitStackingContext2[4];
5707
5708            var _splitDescendants = splitDescendants(stack),
5709                _splitDescendants2 = _slicedToArray(_splitDescendants, 2),
5710                inlineLevel = _splitDescendants2[0],
5711                nonInlineLevel = _splitDescendants2[1];
5712
5713            // https://www.w3.org/TR/css-position-3/#painting-order
5714            // 1. the background and borders of the element forming the stacking context.
5715
5716
5717            this.renderNodeBackgroundAndBorders(stack.container);
5718            // 2. the child stacking contexts with negative stack levels (most negative first).
5719            negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this);
5720            // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
5721            this.renderNodeContent(stack.container);
5722            nonInlineLevel.forEach(this.renderNode, this);
5723            // 4. All non-positioned floating descendants, in tree order. For each one of these,
5724            // treat the element as if it created a new stacking context, but any positioned descendants and descendants
5725            // which actually create a new stacking context should be considered part of the parent stacking context,
5726            // not this new one.
5727            nonPositionedFloats.forEach(this.renderStack, this);
5728            // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.
5729            nonPositionedInlineLevel.forEach(this.renderStack, this);
5730            inlineLevel.forEach(this.renderNode, this);
5731            // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:
5732            //  All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.
5733            //  For those with 'z-index: auto', treat the element as if it created a new stacking context,
5734            //  but any positioned descendants and descendants which actually create a new stacking context should be
5735            //  considered part of the parent stacking context, not this new one. For those with 'z-index: 0',
5736            //  treat the stacking context generated atomically.
5737            //
5738            //  All opacity descendants with opacity less than 1
5739            //
5740            //  All transform descendants with transform other than none
5741            zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this);
5742            // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index
5743            // order (smallest first) then tree order.
5744            positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this);
5745        }
5746    }, {
5747        key: 'render',
5748        value: function render(stack) {
5749            if (this.options.backgroundColor) {
5750                this.target.rectangle(this.options.x, this.options.y, this.options.width, this.options.height, this.options.backgroundColor);
5751            }
5752            this.renderStack(stack);
5753            var target = this.target.getTarget();
5754            return target;
5755        }
5756    }]);
5757
5758    return Renderer;
5759}();
5760
5761exports.default = Renderer;
5762
5763
5764var splitDescendants = function splitDescendants(stack) {
5765    var inlineLevel = [];
5766    var nonInlineLevel = [];
5767
5768    var length = stack.children.length;
5769    for (var i = 0; i < length; i++) {
5770        var child = stack.children[i];
5771        if (child.isInlineLevel()) {
5772            inlineLevel.push(child);
5773        } else {
5774            nonInlineLevel.push(child);
5775        }
5776    }
5777    return [inlineLevel, nonInlineLevel];
5778};
5779
5780var splitStackingContexts = function splitStackingContexts(stack) {
5781    var negativeZIndex = [];
5782    var zeroOrAutoZIndexOrTransformedOrOpacity = [];
5783    var positiveZIndex = [];
5784    var nonPositionedFloats = [];
5785    var nonPositionedInlineLevel = [];
5786    var length = stack.contexts.length;
5787    for (var i = 0; i < length; i++) {
5788        var child = stack.contexts[i];
5789        if (child.container.isPositioned() || child.container.style.opacity < 1 || child.container.isTransformed()) {
5790            if (child.container.style.zIndex.order < 0) {
5791                negativeZIndex.push(child);
5792            } else if (child.container.style.zIndex.order > 0) {
5793                positiveZIndex.push(child);
5794            } else {
5795                zeroOrAutoZIndexOrTransformedOrOpacity.push(child);
5796            }
5797        } else {
5798            if (child.container.isFloating()) {
5799                nonPositionedFloats.push(child);
5800            } else {
5801                nonPositionedInlineLevel.push(child);
5802            }
5803        }
5804    }
5805    return [negativeZIndex, zeroOrAutoZIndexOrTransformedOrOpacity, positiveZIndex, nonPositionedFloats, nonPositionedInlineLevel];
5806};
5807
5808var sortByZIndex = function sortByZIndex(a, b) {
5809    if (a.container.style.zIndex.order > b.container.style.zIndex.order) {
5810        return 1;
5811    } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) {
5812        return -1;
5813    }
5814
5815    return a.container.index > b.container.index ? 1 : -1;
5816};
5817});
5818
5819unwrapExports(Renderer_1);
5820
5821var _Proxy = createCommonjsModule(function (module, exports) {
5822Object.defineProperty(exports, "__esModule", {
5823    value: true
5824});
5825exports.Proxy = undefined;
5826
5827
5828
5829var _Feature2 = _interopRequireDefault(Feature);
5830
5831function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5832
5833var Proxy = exports.Proxy = function Proxy(src, options) {
5834    if (!options.proxy) {
5835        return Promise.reject(null);
5836    }
5837    var proxy = options.proxy;
5838
5839    return new Promise(function (resolve, reject) {
5840        var responseType = _Feature2.default.SUPPORT_CORS_XHR && _Feature2.default.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';
5841        var xhr = _Feature2.default.SUPPORT_CORS_XHR ? new XMLHttpRequest() : new XDomainRequest();
5842        xhr.onload = function () {
5843            if (xhr instanceof XMLHttpRequest) {
5844                if (xhr.status === 200) {
5845                    if (responseType === 'text') {
5846                        resolve(xhr.response);
5847                    } else {
5848                        var reader = new FileReader();
5849                        // $FlowFixMe
5850                        reader.addEventListener('load', function () {
5851                            return resolve(reader.result);
5852                        }, false);
5853                        // $FlowFixMe
5854                        reader.addEventListener('error', function (e) {
5855                            return reject(e);
5856                        }, false);
5857                        reader.readAsDataURL(xhr.response);
5858                    }
5859                } else {
5860                    reject('');
5861                }
5862            } else {
5863                resolve(xhr.responseText);
5864            }
5865        };
5866
5867        xhr.onerror = reject;
5868        xhr.open('GET', proxy + '?url=' + encodeURIComponent(src) + '&responseType=' + responseType);
5869
5870        if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {
5871            xhr.responseType = responseType;
5872        }
5873
5874        if (options.imageTimeout) {
5875            var timeout = options.imageTimeout;
5876            xhr.timeout = timeout;
5877            xhr.ontimeout = function () {
5878                return reject('');
5879            };
5880        }
5881
5882        xhr.send();
5883    });
5884};
5885});
5886
5887unwrapExports(_Proxy);
5888var _Proxy_1 = _Proxy.Proxy;
5889
5890var ResourceLoader_1 = createCommonjsModule(function (module, exports) {
5891Object.defineProperty(exports, "__esModule", {
5892    value: true
5893});
5894exports.ResourceStore = undefined;
5895
5896var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5897
5898
5899
5900var _Feature2 = _interopRequireDefault(Feature);
5901
5902
5903
5904function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5905
5906function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5907
5908var ResourceLoader = function () {
5909    function ResourceLoader(options, logger, window) {
5910        _classCallCheck(this, ResourceLoader);
5911
5912        this.options = options;
5913        this._window = window;
5914        this.origin = this.getOrigin(window.location.href);
5915        this.cache = {};
5916        this.logger = logger;
5917        this._index = 0;
5918    }
5919
5920    _createClass(ResourceLoader, [{
5921        key: 'loadImage',
5922        value: function loadImage(src) {
5923            var _this = this;
5924
5925            if (this.hasResourceInCache(src)) {
5926                return src;
5927            }
5928            if (isBlobImage(src)) {
5929                this.cache[src] = _loadImage(src, this.options.imageTimeout || 0);
5930                return src;
5931            }
5932
5933            if (!isSVG(src) || _Feature2.default.SUPPORT_SVG_DRAWING) {
5934                if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) {
5935                    return this.addImage(src, src, false);
5936                } else if (!this.isSameOrigin(src)) {
5937                    if (typeof this.options.proxy === 'string') {
5938                        this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {
5939                            return _loadImage(src, _this.options.imageTimeout || 0);
5940                        });
5941                        return src;
5942                    } else if (this.options.useCORS === true && _Feature2.default.SUPPORT_CORS_IMAGES) {
5943                        return this.addImage(src, src, true);
5944                    }
5945                }
5946            }
5947        }
5948    }, {
5949        key: 'inlineImage',
5950        value: function inlineImage(src) {
5951            var _this2 = this;
5952
5953            if (isInlineImage(src)) {
5954                return _loadImage(src, this.options.imageTimeout || 0);
5955            }
5956            if (this.hasResourceInCache(src)) {
5957                return this.cache[src];
5958            }
5959            if (!this.isSameOrigin(src) && typeof this.options.proxy === 'string') {
5960                return this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {
5961                    return _loadImage(src, _this2.options.imageTimeout || 0);
5962                });
5963            }
5964
5965            return this.xhrImage(src);
5966        }
5967    }, {
5968        key: 'xhrImage',
5969        value: function xhrImage(src) {
5970            var _this3 = this;
5971
5972            this.cache[src] = new Promise(function (resolve, reject) {
5973                var xhr = new XMLHttpRequest();
5974                xhr.onreadystatechange = function () {
5975                    if (xhr.readyState === 4) {
5976                        if (xhr.status !== 200) {
5977                            reject('Failed to fetch image ' + src.substring(0, 256) + ' with status code ' + xhr.status);
5978                        } else {
5979                            var reader = new FileReader();
5980                            reader.addEventListener('load', function () {
5981                                // $FlowFixMe
5982                                var result = reader.result;
5983                                resolve(result);
5984                            }, false);
5985                            reader.addEventListener('error', function (e) {
5986                                return reject(e);
5987                            }, false);
5988                            reader.readAsDataURL(xhr.response);
5989                        }
5990                    }
5991                };
5992                xhr.responseType = 'blob';
5993                if (_this3.options.imageTimeout) {
5994                    var timeout = _this3.options.imageTimeout;
5995                    xhr.timeout = timeout;
5996                    xhr.ontimeout = function () {
5997                        return reject('');
5998                    };
5999                }
6000                xhr.open('GET', src, true);
6001                xhr.send();
6002            }).then(function (src) {
6003                return _loadImage(src, _this3.options.imageTimeout || 0);
6004            });
6005
6006            return this.cache[src];
6007        }
6008    }, {
6009        key: 'loadCanvas',
6010        value: function loadCanvas(node) {
6011            var key = String(this._index++);
6012            this.cache[key] = Promise.resolve(node);
6013            return key;
6014        }
6015    }, {
6016        key: 'hasResourceInCache',
6017        value: function hasResourceInCache(key) {
6018            return typeof this.cache[key] !== 'undefined';
6019        }
6020    }, {
6021        key: 'addImage',
6022        value: function addImage(key, src, useCORS) {
6023            var _this4 = this;
6024
6025            var imageLoadHandler = function imageLoadHandler(supportsDataImages) {
6026                return new Promise(function (resolve, reject) {
6027                    var img = new Image();
6028                    img.onload = function () {
6029                        return resolve(img);
6030                    };
6031                    //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous
6032                    if (!supportsDataImages || useCORS) {
6033                        img.crossOrigin = 'anonymous';
6034                    }
6035
6036                    img.onerror = reject;
6037                    img.src = src;
6038                    if (img.complete === true) {
6039                        // Inline XML images may fail to parse, throwing an Error later on
6040                        setTimeout(function () {
6041                            resolve(img);
6042                        }, 500);
6043                    }
6044                    if (_this4.options.imageTimeout) {
6045                        var timeout = _this4.options.imageTimeout;
6046                        setTimeout(function () {
6047                            return reject('');
6048                        }, timeout);
6049                    }
6050                });
6051            };
6052
6053            this.cache[key] = isInlineBase64Image(src) && !isSVG(src) ? // $FlowFixMe
6054            _Feature2.default.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) : imageLoadHandler(true);
6055            return key;
6056        }
6057    }, {
6058        key: 'isSameOrigin',
6059        value: function isSameOrigin(url) {
6060            return this.getOrigin(url) === this.origin;
6061        }
6062    }, {
6063        key: 'getOrigin',
6064        value: function getOrigin(url) {
6065            var link = this._link || (this._link = this._window.document.createElement('a'));
6066            link.href = url;
6067            link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/
6068            return link.protocol + link.hostname + link.port;
6069        }
6070    }, {
6071        key: 'ready',
6072        value: function ready() {
6073            var _this5 = this;
6074
6075            var keys = Object.keys(this.cache);
6076            var values = keys.map(function (str) {
6077                return _this5.cache[str].catch(function (e) {
6078                    return null;
6079                });
6080            });
6081            return Promise.all(values).then(function (images) {
6082                return new ResourceStore(keys, images);
6083            });
6084        }
6085    }]);
6086
6087    return ResourceLoader;
6088}();
6089
6090exports.default = ResourceLoader;
6091
6092var ResourceStore = exports.ResourceStore = function () {
6093    function ResourceStore(keys, resources) {
6094        _classCallCheck(this, ResourceStore);
6095
6096        this._keys = keys;
6097        this._resources = resources;
6098    }
6099
6100    _createClass(ResourceStore, [{
6101        key: 'get',
6102        value: function get(key) {
6103            var index = this._keys.indexOf(key);
6104            return index === -1 ? null : this._resources[index];
6105        }
6106    }]);
6107
6108    return ResourceStore;
6109}();
6110
6111var INLINE_SVG = /^data:image\/svg\+xml/i;
6112var INLINE_BASE64 = /^data:image\/.*;base64,/i;
6113var INLINE_IMG = /^data:image\/.*/i;
6114
6115var isInlineImage = function isInlineImage(src) {
6116    return INLINE_IMG.test(src);
6117};
6118var isInlineBase64Image = function isInlineBase64Image(src) {
6119    return INLINE_BASE64.test(src);
6120};
6121var isBlobImage = function isBlobImage(src) {
6122    return src.substr(0, 4) === 'blob';
6123};
6124
6125var isSVG = function isSVG(src) {
6126    return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);
6127};
6128
6129var _loadImage = function _loadImage(src, timeout) {
6130    return new Promise(function (resolve, reject) {
6131        var img = new Image();
6132        img.onload = function () {
6133            return resolve(img);
6134        };
6135        img.onerror = reject;
6136        img.src = src;
6137        if (img.complete === true) {
6138            // Inline XML images may fail to parse, throwing an Error later on
6139            setTimeout(function () {
6140                resolve(img);
6141            }, 500);
6142        }
6143        if (timeout) {
6144            setTimeout(function () {
6145                return reject('');
6146            }, timeout);
6147        }
6148    });
6149};
6150});
6151
6152unwrapExports(ResourceLoader_1);
6153var ResourceLoader_2 = ResourceLoader_1.ResourceStore;
6154
6155var PseudoNodeContent = createCommonjsModule(function (module, exports) {
6156Object.defineProperty(exports, "__esModule", {
6157    value: true
6158});
6159exports.parseContent = exports.resolvePseudoContent = exports.popCounters = exports.parseCounterReset = exports.TOKEN_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = undefined;
6160
6161var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
6162
6163
6164
6165
6166
6167var PSEUDO_CONTENT_ITEM_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = {
6168    TEXT: 0,
6169    IMAGE: 1
6170};
6171
6172var TOKEN_TYPE = exports.TOKEN_TYPE = {
6173    STRING: 0,
6174    ATTRIBUTE: 1,
6175    URL: 2,
6176    COUNTER: 3,
6177    COUNTERS: 4,
6178    OPENQUOTE: 5,
6179    CLOSEQUOTE: 6
6180};
6181
6182var parseCounterReset = exports.parseCounterReset = function parseCounterReset(style, data) {
6183    if (!style || !style.counterReset || style.counterReset === 'none') {
6184        return [];
6185    }
6186
6187    var counterNames = [];
6188    var counterResets = style.counterReset.split(/\s*,\s*/);
6189    var lenCounterResets = counterResets.length;
6190
6191    for (var i = 0; i < lenCounterResets; i++) {
6192        var _counterResets$i$spli = counterResets[i].split(/\s+/),
6193            _counterResets$i$spli2 = _slicedToArray(_counterResets$i$spli, 2),
6194            counterName = _counterResets$i$spli2[0],
6195            initialValue = _counterResets$i$spli2[1];
6196
6197        counterNames.push(counterName);
6198        var counter = data.counters[counterName];
6199        if (!counter) {
6200            counter = data.counters[counterName] = [];
6201        }
6202        counter.push(parseInt(initialValue || 0, 10));
6203    }
6204
6205    return counterNames;
6206};
6207
6208var popCounters = exports.popCounters = function popCounters(counterNames, data) {
6209    var lenCounters = counterNames.length;
6210    for (var i = 0; i < lenCounters; i++) {
6211        data.counters[counterNames[i]].pop();
6212    }
6213};
6214
6215var resolvePseudoContent = exports.resolvePseudoContent = function resolvePseudoContent(node, style, data) {
6216    if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {
6217        return null;
6218    }
6219
6220    var tokens = parseContent(style.content);
6221
6222    var len = tokens.length;
6223    var contentItems = [];
6224    var s = '';
6225
6226    // increment the counter (if there is a "counter-increment" declaration)
6227    var counterIncrement = style.counterIncrement;
6228    if (counterIncrement && counterIncrement !== 'none') {
6229        var _counterIncrement$spl = counterIncrement.split(/\s+/),
6230            _counterIncrement$spl2 = _slicedToArray(_counterIncrement$spl, 2),
6231            counterName = _counterIncrement$spl2[0],
6232            incrementValue = _counterIncrement$spl2[1];
6233
6234        var counter = data.counters[counterName];
6235        if (counter) {
6236            counter[counter.length - 1] += incrementValue === undefined ? 1 : parseInt(incrementValue, 10);
6237        }
6238    }
6239
6240    // build the content string
6241    for (var i = 0; i < len; i++) {
6242        var token = tokens[i];
6243        switch (token.type) {
6244            case TOKEN_TYPE.STRING:
6245                s += token.value || '';
6246                break;
6247
6248            case TOKEN_TYPE.ATTRIBUTE:
6249                if (node instanceof HTMLElement && token.value) {
6250                    s += node.getAttribute(token.value) || '';
6251                }
6252                break;
6253
6254            case TOKEN_TYPE.COUNTER:
6255                var _counter = data.counters[token.name || ''];
6256                if (_counter) {
6257                    s += formatCounterValue([_counter[_counter.length - 1]], '', token.format);
6258                }
6259                break;
6260
6261            case TOKEN_TYPE.COUNTERS:
6262                var _counters = data.counters[token.name || ''];
6263                if (_counters) {
6264                    s += formatCounterValue(_counters, token.glue, token.format);
6265                }
6266                break;
6267
6268            case TOKEN_TYPE.OPENQUOTE:
6269                s += getQuote(style, true, data.quoteDepth);
6270                data.quoteDepth++;
6271                break;
6272
6273            case TOKEN_TYPE.CLOSEQUOTE:
6274                data.quoteDepth--;
6275                s += getQuote(style, false, data.quoteDepth);
6276                break;
6277
6278            case TOKEN_TYPE.URL:
6279                if (s) {
6280                    contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });
6281                    s = '';
6282                }
6283                contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.IMAGE, value: token.value || '' });
6284                break;
6285        }
6286    }
6287
6288    if (s) {
6289        contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });
6290    }
6291
6292    return contentItems;
6293};
6294
6295var parseContent = exports.parseContent = function parseContent(content, cache) {
6296    if (cache && cache[content]) {
6297        return cache[content];
6298    }
6299
6300    var tokens = [];
6301    var len = content.length;
6302
6303    var isString = false;
6304    var isEscaped = false;
6305    var isFunction = false;
6306    var str = '';
6307    var functionName = '';
6308    var args = [];
6309
6310    for (var i = 0; i < len; i++) {
6311        var c = content.charAt(i);
6312
6313        switch (c) {
6314            case "'":
6315            case '"':
6316                if (isEscaped) {
6317                    str += c;
6318                } else {
6319                    isString = !isString;
6320                    if (!isFunction && !isString) {
6321                        tokens.push({ type: TOKEN_TYPE.STRING, value: str });
6322                        str = '';
6323                    }
6324                }
6325                break;
6326
6327            case '\\':
6328                if (isEscaped) {
6329                    str += c;
6330                    isEscaped = false;
6331                } else {
6332                    isEscaped = true;
6333                }
6334                break;
6335
6336            case '(':
6337                if (isString) {
6338                    str += c;
6339                } else {
6340                    isFunction = true;
6341                    functionName = str;
6342                    str = '';
6343                    args = [];
6344                }
6345                break;
6346
6347            case ')':
6348                if (isString) {
6349                    str += c;
6350                } else if (isFunction) {
6351                    if (str) {
6352                        args.push(str);
6353                    }
6354
6355                    switch (functionName) {
6356                        case 'attr':
6357                            if (args.length > 0) {
6358                                tokens.push({ type: TOKEN_TYPE.ATTRIBUTE, value: args[0] });
6359                            }
6360                            break;
6361
6362                        case 'counter':
6363                            if (args.length > 0) {
6364                                var counter = {
6365                                    type: TOKEN_TYPE.COUNTER,
6366                                    name: args[0]
6367                                };
6368                                if (args.length > 1) {
6369                                    counter.format = args[1];
6370                                }
6371                                tokens.push(counter);
6372                            }
6373                            break;
6374
6375                        case 'counters':
6376                            if (args.length > 0) {
6377                                var _counters2 = {
6378                                    type: TOKEN_TYPE.COUNTERS,
6379                                    name: args[0]
6380                                };
6381                                if (args.length > 1) {
6382                                    _counters2.glue = args[1];
6383                                }
6384                                if (args.length > 2) {
6385                                    _counters2.format = args[2];
6386                                }
6387                                tokens.push(_counters2);
6388                            }
6389                            break;
6390
6391                        case 'url':
6392                            if (args.length > 0) {
6393                                tokens.push({ type: TOKEN_TYPE.URL, value: args[0] });
6394                            }
6395                            break;
6396                    }
6397
6398                    isFunction = false;
6399                    str = '';
6400                }
6401                break;
6402
6403            case ',':
6404                if (isString) {
6405                    str += c;
6406                } else if (isFunction) {
6407                    args.push(str);
6408                    str = '';
6409                }
6410                break;
6411
6412            case ' ':
6413            case '\t':
6414                if (isString) {
6415                    str += c;
6416                } else if (str) {
6417                    addOtherToken(tokens, str);
6418                    str = '';
6419                }
6420                break;
6421
6422            default:
6423                str += c;
6424        }
6425
6426        if (c !== '\\') {
6427            isEscaped = false;
6428        }
6429    }
6430
6431    if (str) {
6432        addOtherToken(tokens, str);
6433    }
6434
6435    if (cache) {
6436        cache[content] = tokens;
6437    }
6438
6439    return tokens;
6440};
6441
6442var addOtherToken = function addOtherToken(tokens, identifier) {
6443    switch (identifier) {
6444        case 'open-quote':
6445            tokens.push({ type: TOKEN_TYPE.OPENQUOTE });
6446            break;
6447        case 'close-quote':
6448            tokens.push({ type: TOKEN_TYPE.CLOSEQUOTE });
6449            break;
6450    }
6451};
6452
6453var getQuote = function getQuote(style, isOpening, quoteDepth) {
6454    var quotes = style.quotes ? style.quotes.split(/\s+/) : ["'\"'", "'\"'"];
6455    var idx = quoteDepth * 2;
6456    if (idx >= quotes.length) {
6457        idx = quotes.length - 2;
6458    }
6459    if (!isOpening) {
6460        ++idx;
6461    }
6462    return quotes[idx].replace(/^["']|["']$/g, '');
6463};
6464
6465var formatCounterValue = function formatCounterValue(counter, glue, format) {
6466    var len = counter.length;
6467    var result = '';
6468
6469    for (var i = 0; i < len; i++) {
6470        if (i > 0) {
6471            result += glue || '';
6472        }
6473        result += (0, ListItem.createCounterText)(counter[i], (0, listStyle.parseListStyleType)(format || 'decimal'), false);
6474    }
6475
6476    return result;
6477};
6478});
6479
6480unwrapExports(PseudoNodeContent);
6481var PseudoNodeContent_1 = PseudoNodeContent.parseContent;
6482var PseudoNodeContent_2 = PseudoNodeContent.resolvePseudoContent;
6483var PseudoNodeContent_3 = PseudoNodeContent.popCounters;
6484var PseudoNodeContent_4 = PseudoNodeContent.parseCounterReset;
6485var PseudoNodeContent_5 = PseudoNodeContent.TOKEN_TYPE;
6486var PseudoNodeContent_6 = PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE;
6487
6488var Clone = createCommonjsModule(function (module, exports) {
6489Object.defineProperty(exports, "__esModule", {
6490    value: true
6491});
6492exports.cloneWindow = exports.DocumentCloner = undefined;
6493
6494var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
6495
6496var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6497
6498
6499
6500
6501
6502
6503
6504var _ResourceLoader2 = _interopRequireDefault(ResourceLoader_1);
6505
6506
6507
6508
6509
6510
6511
6512var _CanvasRenderer2 = _interopRequireDefault(CanvasRenderer_1);
6513
6514
6515
6516function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6517
6518function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6519
6520var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';
6521
6522var DocumentCloner = exports.DocumentCloner = function () {
6523    function DocumentCloner(element, options, logger, copyInline, renderer) {
6524        _classCallCheck(this, DocumentCloner);
6525
6526        this.referenceElement = element;
6527        this.scrolledElements = [];
6528        this.copyStyles = copyInline;
6529        this.inlineImages = copyInline;
6530        this.logger = logger;
6531        this.options = options;
6532        this.renderer = renderer;
6533        this.resourceLoader = new _ResourceLoader2.default(options, logger, window);
6534        this.pseudoContentData = {
6535            counters: {},
6536            quoteDepth: 0
6537        };
6538        // $FlowFixMe
6539        this.documentElement = this.cloneNode(element.ownerDocument.documentElement);
6540    }
6541
6542    _createClass(DocumentCloner, [{
6543        key: 'inlineAllImages',
6544        value: function inlineAllImages(node) {
6545            var _this = this;
6546
6547            if (this.inlineImages && node) {
6548                var style = node.style;
6549                Promise.all((0, background.parseBackgroundImage)(style.backgroundImage).map(function (backgroundImage) {
6550                    if (backgroundImage.method === 'url') {
6551                        return _this.resourceLoader.inlineImage(backgroundImage.args[0]).then(function (img) {
6552                            return img && typeof img.src === 'string' ? 'url("' + img.src + '")' : 'none';
6553                        }).catch(function (e) {
6554                            
6555                        });
6556                    }
6557                    return Promise.resolve('' + backgroundImage.prefix + backgroundImage.method + '(' + backgroundImage.args.join(',') + ')');
6558                })).then(function (backgroundImages) {
6559                    if (backgroundImages.length > 1) {
6560                        // TODO Multiple backgrounds somehow broken in Chrome
6561                        style.backgroundColor = '';
6562                    }
6563                    style.backgroundImage = backgroundImages.join(',');
6564                });
6565
6566                if (node instanceof HTMLImageElement) {
6567                    this.resourceLoader.inlineImage(node.src).then(function (img) {
6568                        if (img && node instanceof HTMLImageElement && node.parentNode) {
6569                            var parentNode = node.parentNode;
6570                            var clonedChild = (0, Util.copyCSSStyles)(node.style, img.cloneNode(false));
6571                            parentNode.replaceChild(clonedChild, node);
6572                        }
6573                    }).catch(function (e) {
6574                        
6575                    });
6576                }
6577            }
6578        }
6579    }, {
6580        key: 'inlineFonts',
6581        value: function inlineFonts(document) {
6582            var _this2 = this;
6583
6584            return Promise.all(Array.from(document.styleSheets).map(function (sheet) {
6585                if (sheet.href) {
6586                    return fetch(sheet.href).then(function (res) {
6587                        return res.text();
6588                    }).then(function (text) {
6589                        return createStyleSheetFontsFromText(text, sheet.href);
6590                    }).catch(function (e) {
6591                        return [];
6592                    });
6593                }
6594                return getSheetFonts(sheet, document);
6595            })).then(function (fonts) {
6596                return fonts.reduce(function (acc, font) {
6597                    return acc.concat(font);
6598                }, []);
6599            }).then(function (fonts) {
6600                return Promise.all(fonts.map(function (font) {
6601                    return fetch(font.formats[0].src).then(function (response) {
6602                        return response.blob();
6603                    }).then(function (blob) {
6604                        return new Promise(function (resolve, reject) {
6605                            var reader = new FileReader();
6606                            reader.onerror = reject;
6607                            reader.onload = function () {
6608                                // $FlowFixMe
6609                                var result = reader.result;
6610                                resolve(result);
6611                            };
6612                            reader.readAsDataURL(blob);
6613                        });
6614                    }).then(function (dataUri) {
6615                        font.fontFace.setProperty('src', 'url("' + dataUri + '")');
6616                        return '@font-face {' + font.fontFace.cssText + ' ';
6617                    });
6618                }));
6619            }).then(function (fontCss) {
6620                var style = document.createElement('style');
6621                style.textContent = fontCss.join('\n');
6622                _this2.documentElement.appendChild(style);
6623            });
6624        }
6625    }, {
6626        key: 'createElementClone',
6627        value: function createElementClone(node) {
6628            var _this3 = this;
6629
6630            if (this.copyStyles && node instanceof HTMLCanvasElement) {
6631                var img = node.ownerDocument.createElement('img');
6632                try {
6633                    img.src = node.toDataURL();
6634                    return img;
6635                } catch (e) {
6636                    
6637                }
6638            }
6639
6640            if (node instanceof HTMLIFrameElement) {
6641                var tempIframe = node.cloneNode(false);
6642                var iframeKey = generateIframeKey();
6643                tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey);
6644
6645                var _parseBounds = (0, Bounds_1.parseBounds)(node, 0, 0),
6646                    width = _parseBounds.width,
6647                    height = _parseBounds.height;
6648
6649                this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options).then(function (documentElement) {
6650                    return _this3.renderer(documentElement, {
6651                        async: _this3.options.async,
6652                        allowTaint: _this3.options.allowTaint,
6653                        backgroundColor: '#ffffff',
6654                        canvas: null,
6655                        imageTimeout: _this3.options.imageTimeout,
6656                        logging: _this3.options.logging,
6657                        proxy: _this3.options.proxy,
6658                        removeContainer: _this3.options.removeContainer,
6659                        scale: _this3.options.scale,
6660                        foreignObjectRendering: _this3.options.foreignObjectRendering,
6661                        useCORS: _this3.options.useCORS,
6662                        target: new _CanvasRenderer2.default(),
6663                        width: width,
6664                        height: height,
6665                        x: 0,
6666                        y: 0,
6667                        windowWidth: documentElement.ownerDocument.defaultView.innerWidth,
6668                        windowHeight: documentElement.ownerDocument.defaultView.innerHeight,
6669                        scrollX: documentElement.ownerDocument.defaultView.pageXOffset,
6670                        scrollY: documentElement.ownerDocument.defaultView.pageYOffset
6671                    }, _this3.logger.child(iframeKey));
6672                }).then(function (canvas) {
6673                    return new Promise(function (resolve, reject) {
6674                        var iframeCanvas = document.createElement('img');
6675                        iframeCanvas.onload = function () {
6676                            return resolve(canvas);
6677                        };
6678                        iframeCanvas.onerror = reject;
6679                        iframeCanvas.src = canvas.toDataURL();
6680                        if (tempIframe.parentNode) {
6681                            tempIframe.parentNode.replaceChild((0, Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node), iframeCanvas), tempIframe);
6682                        }
6683                    });
6684                });
6685                return tempIframe;
6686            }
6687
6688            if (node instanceof HTMLStyleElement && node.sheet && node.sheet.cssRules) {
6689                var css = [].slice.call(node.sheet.cssRules, 0).reduce(function (css, rule) {
6690                    try {
6691                        if (rule && rule.cssText) {
6692                            return css + rule.cssText;
6693                        }
6694                        return css;
6695                    } catch (err) {
6696                        _this3.logger.log('Unable to access cssText property', rule.name);
6697                        return css;
6698                    }
6699                }, '');
6700                var style = node.cloneNode(false);
6701                style.textContent = css;
6702                return style;
6703            }
6704
6705            return node.cloneNode(false);
6706        }
6707    }, {
6708        key: 'cloneNode',
6709        value: function cloneNode(node) {
6710            var clone = node.nodeType === Node.TEXT_NODE ? document.createTextNode(node.nodeValue) : this.createElementClone(node);
6711
6712            var window = node.ownerDocument.defaultView;
6713            var style = node instanceof window.HTMLElement ? window.getComputedStyle(node) : null;
6714            var styleBefore = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':before') : null;
6715            var styleAfter = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':after') : null;
6716
6717            if (this.referenceElement === node && clone instanceof window.HTMLElement) {
6718                this.clonedReferenceElement = clone;
6719            }
6720
6721            if (clone instanceof window.HTMLBodyElement) {
6722                createPseudoHideStyles(clone);
6723            }
6724
6725            var counters = (0, PseudoNodeContent.parseCounterReset)(style, this.pseudoContentData);
6726            var contentBefore = (0, PseudoNodeContent.resolvePseudoContent)(node, styleBefore, this.pseudoContentData);
6727
6728            for (var child = node.firstChild; child; child = child.nextSibling) {
6729                if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT' &&
6730                // $FlowFixMe
6731                !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== 'function' ||
6732                // $FlowFixMe
6733                !this.options.ignoreElements(child))) {
6734                    if (!this.copyStyles || child.nodeName !== 'STYLE') {
6735                        clone.appendChild(this.cloneNode(child));
6736                    }
6737                }
6738            }
6739
6740            var contentAfter = (0, PseudoNodeContent.resolvePseudoContent)(node, styleAfter, this.pseudoContentData);
6741            (0, PseudoNodeContent.popCounters)(counters, this.pseudoContentData);
6742
6743            if (node instanceof window.HTMLElement && clone instanceof window.HTMLElement) {
6744                if (styleBefore) {
6745                    this.inlineAllImages(inlinePseudoElement(node, clone, styleBefore, contentBefore, PSEUDO_BEFORE));
6746                }
6747                if (styleAfter) {
6748                    this.inlineAllImages(inlinePseudoElement(node, clone, styleAfter, contentAfter, PSEUDO_AFTER));
6749                }
6750                if (style && this.copyStyles && !(node instanceof HTMLIFrameElement)) {
6751                    (0, Util.copyCSSStyles)(style, clone);
6752                }
6753                this.inlineAllImages(clone);
6754                if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
6755                    this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
6756                }
6757                switch (node.nodeName) {
6758                    case 'CANVAS':
6759                        if (!this.copyStyles) {
6760                            cloneCanvasContents(node, clone);
6761                        }
6762                        break;
6763                    case 'TEXTAREA':
6764                    case 'SELECT':
6765                        clone.value = node.value;
6766                        break;
6767                }
6768            }
6769            return clone;
6770        }
6771    }]);
6772
6773    return DocumentCloner;
6774}();
6775
6776var getSheetFonts = function getSheetFonts(sheet, document) {
6777    // $FlowFixMe
6778    return (sheet.cssRules ? Array.from(sheet.cssRules) : []).filter(function (rule) {
6779        return rule.type === CSSRule.FONT_FACE_RULE;
6780    }).map(function (rule) {
6781        var src = (0, background.parseBackgroundImage)(rule.style.getPropertyValue('src'));
6782        var formats = [];
6783        for (var i = 0; i < src.length; i++) {
6784            if (src[i].method === 'url' && src[i + 1] && src[i + 1].method === 'format') {
6785                var a = document.createElement('a');
6786                a.href = src[i].args[0];
6787                if (document.body) {
6788                    document.body.appendChild(a);
6789                }
6790
6791                var font = {
6792                    src: a.href,
6793                    format: src[i + 1].args[0]
6794                };
6795                formats.push(font);
6796            }
6797        }
6798
6799        return {
6800            // TODO select correct format for browser),
6801
6802            formats: formats.filter(function (font) {
6803                return (/^woff/i.test(font.format)
6804                );
6805            }),
6806            fontFace: rule.style
6807        };
6808    }).filter(function (font) {
6809        return font.formats.length;
6810    });
6811};
6812
6813var createStyleSheetFontsFromText = function createStyleSheetFontsFromText(text, baseHref) {
6814    var doc = document.implementation.createHTMLDocument('');
6815    var base = document.createElement('base');
6816    // $FlowFixMe
6817    base.href = baseHref;
6818    var style = document.createElement('style');
6819
6820    style.textContent = text;
6821    if (doc.head) {
6822        doc.head.appendChild(base);
6823    }
6824    if (doc.body) {
6825        doc.body.appendChild(style);
6826    }
6827
6828    return style.sheet ? getSheetFonts(style.sheet, doc) : [];
6829};
6830
6831var restoreOwnerScroll = function restoreOwnerScroll(ownerDocument, x, y) {
6832    if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {
6833        ownerDocument.defaultView.scrollTo(x, y);
6834    }
6835};
6836
6837var cloneCanvasContents = function cloneCanvasContents(canvas, clonedCanvas) {
6838    try {
6839        if (clonedCanvas) {
6840            clonedCanvas.width = canvas.width;
6841            clonedCanvas.height = canvas.height;
6842            var ctx = canvas.getContext('2d');
6843            var clonedCtx = clonedCanvas.getContext('2d');
6844            if (ctx) {
6845                clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
6846            } else {
6847                clonedCtx.drawImage(canvas, 0, 0);
6848            }
6849        }
6850    } catch (e) {}
6851};
6852
6853var inlinePseudoElement = function inlinePseudoElement(node, clone, style, contentItems, pseudoElt) {
6854    if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {
6855        return;
6856    }
6857
6858    var anonymousReplacedElement = clone.ownerDocument.createElement('html2canvaspseudoelement');
6859    (0, Util.copyCSSStyles)(style, anonymousReplacedElement);
6860
6861    if (contentItems) {
6862        var len = contentItems.length;
6863        for (var i = 0; i < len; i++) {
6864            var item = contentItems[i];
6865            switch (item.type) {
6866                case PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.IMAGE:
6867                    var img = clone.ownerDocument.createElement('img');
6868                    img.src = (0, background.parseBackgroundImage)('url(' + item.value + ')')[0].args[0];
6869                    img.style.opacity = '1';
6870                    anonymousReplacedElement.appendChild(img);
6871                    break;
6872                case PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.TEXT:
6873                    anonymousReplacedElement.appendChild(clone.ownerDocument.createTextNode(item.value));
6874                    break;
6875            }
6876        }
6877    }
6878
6879    anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
6880    clone.className += pseudoElt === PSEUDO_BEFORE ? ' ' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
6881    if (pseudoElt === PSEUDO_BEFORE) {
6882        clone.insertBefore(anonymousReplacedElement, clone.firstChild);
6883    } else {
6884        clone.appendChild(anonymousReplacedElement);
6885    }
6886
6887    return anonymousReplacedElement;
6888};
6889
6890var PSEUDO_BEFORE = ':before';
6891var PSEUDO_AFTER = ':after';
6892var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';
6893var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';
6894
6895var PSEUDO_HIDE_ELEMENT_STYLE = '{\n    content: "" !important;\n    display: none !important;\n}';
6896
6897var createPseudoHideStyles = function createPseudoHideStyles(body) {
6898    createStyles(body, '.' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + '\n         .' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
6899};
6900
6901var createStyles = function createStyles(body, styles) {
6902    var style = body.ownerDocument.createElement('style');
6903    style.innerHTML = styles;
6904    body.appendChild(style);
6905};
6906
6907var initNode = function initNode(_ref) {
6908    var _ref2 = _slicedToArray(_ref, 3),
6909        element = _ref2[0],
6910        x = _ref2[1],
6911        y = _ref2[2];
6912
6913    element.scrollLeft = x;
6914    element.scrollTop = y;
6915};
6916
6917var generateIframeKey = function generateIframeKey() {
6918    return Math.ceil(Date.now() + Math.random() * 10000000).toString(16);
6919};
6920
6921var DATA_URI_REGEXP = /^data:text\/(.+);(base64)?,(.*)$/i;
6922
6923var getIframeDocumentElement = function getIframeDocumentElement(node, options) {
6924    try {
6925        return Promise.resolve(node.contentWindow.document.documentElement);
6926    } catch (e) {
6927        return options.proxy ? (0, _Proxy.Proxy)(node.src, options).then(function (html) {
6928            var match = html.match(DATA_URI_REGEXP);
6929            if (!match) {
6930                return Promise.reject();
6931            }
6932
6933            return match[2] === 'base64' ? window.atob(decodeURIComponent(match[3])) : decodeURIComponent(match[3]);
6934        }).then(function (html) {
6935            return createIframeContainer(node.ownerDocument, (0, Bounds_1.parseBounds)(node, 0, 0)).then(function (cloneIframeContainer) {
6936                var cloneWindow = cloneIframeContainer.contentWindow;
6937                var documentClone = cloneWindow.document;
6938
6939                documentClone.open();
6940                documentClone.write(html);
6941                var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {
6942                    return documentClone.documentElement;
6943                });
6944
6945                documentClone.close();
6946                return iframeLoad;
6947            });
6948        }) : Promise.reject();
6949    }
6950};
6951
6952var createIframeContainer = function createIframeContainer(ownerDocument, bounds) {
6953    var cloneIframeContainer = ownerDocument.createElement('iframe');
6954
6955    cloneIframeContainer.className = 'html2canvas-container';
6956    cloneIframeContainer.style.visibility = 'hidden';
6957    cloneIframeContainer.style.position = 'fixed';
6958    cloneIframeContainer.style.left = '-10000px';
6959    cloneIframeContainer.style.top = '0px';
6960    cloneIframeContainer.style.border = '0';
6961    cloneIframeContainer.width = bounds.width.toString();
6962    cloneIframeContainer.height = bounds.height.toString();
6963    cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it
6964    cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');
6965    if (!ownerDocument.body) {
6966        return Promise.reject('');
6967    }
6968
6969    ownerDocument.body.appendChild(cloneIframeContainer);
6970
6971    return Promise.resolve(cloneIframeContainer);
6972};
6973
6974var iframeLoader = function iframeLoader(cloneIframeContainer) {
6975    var cloneWindow = cloneIframeContainer.contentWindow;
6976    var documentClone = cloneWindow.document;
6977
6978    return new Promise(function (resolve, reject) {
6979        cloneWindow.onload = cloneIframeContainer.onload = documentClone.onreadystatechange = function () {
6980            var interval = setInterval(function () {
6981                if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {
6982                    clearInterval(interval);
6983                    resolve(cloneIframeContainer);
6984                }
6985            }, 50);
6986        };
6987    });
6988};
6989
6990var cloneWindow = exports.cloneWindow = function cloneWindow(ownerDocument, bounds, referenceElement, options, logger, renderer) {
6991    var cloner = new DocumentCloner(referenceElement, options, logger, false, renderer);
6992    var scrollX = ownerDocument.defaultView.pageXOffset;
6993    var scrollY = ownerDocument.defaultView.pageYOffset;
6994
6995    return createIframeContainer(ownerDocument, bounds).then(function (cloneIframeContainer) {
6996        var cloneWindow = cloneIframeContainer.contentWindow;
6997        var documentClone = cloneWindow.document;
6998
6999        /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle
7000             if window url is about:blank, we can assign the url to current by writing onto the document
7001             */
7002
7003        var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {
7004            cloner.scrolledElements.forEach(initNode);
7005            cloneWindow.scrollTo(bounds.left, bounds.top);
7006            if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== bounds.top || cloneWindow.scrollX !== bounds.left)) {
7007                documentClone.documentElement.style.top = -bounds.top + 'px';
7008                documentClone.documentElement.style.left = -bounds.left + 'px';
7009                documentClone.documentElement.style.position = 'absolute';
7010            }
7011
7012            var result = Promise.resolve([cloneIframeContainer, cloner.clonedReferenceElement, cloner.resourceLoader]);
7013
7014            var onclone = options.onclone;
7015
7016            return cloner.clonedReferenceElement instanceof cloneWindow.HTMLElement || cloner.clonedReferenceElement instanceof ownerDocument.defaultView.HTMLElement || cloner.clonedReferenceElement instanceof HTMLElement ? typeof onclone === 'function' ? Promise.resolve().then(function () {
7017                return onclone(documentClone);
7018            }).then(function () {
7019                return result;
7020            }) : result : Promise.reject('');
7021        });
7022
7023        documentClone.open();
7024        documentClone.write(serializeDoctype(document.doctype) + '<html></html>');
7025        // Chrome scrolls the parent document for some reason after the write to the cloned window???
7026        restoreOwnerScroll(referenceElement.ownerDocument, scrollX, scrollY);
7027        documentClone.replaceChild(documentClone.adoptNode(cloner.documentElement), documentClone.documentElement);
7028        documentClone.close();
7029
7030        return iframeLoad;
7031    });
7032};
7033
7034var serializeDoctype = function serializeDoctype(doctype) {
7035    var str = '';
7036    if (doctype) {
7037        str += '<!DOCTYPE ';
7038        if (doctype.name) {
7039            str += doctype.name;
7040        }
7041
7042        if (doctype.internalSubset) {
7043            str += doctype.internalSubset;
7044        }
7045
7046        if (doctype.publicId) {
7047            str += '"' + doctype.publicId + '"';
7048        }
7049
7050        if (doctype.systemId) {
7051            str += '"' + doctype.systemId + '"';
7052        }
7053
7054        str += '>';
7055    }
7056
7057    return str;
7058};
7059});
7060
7061unwrapExports(Clone);
7062var Clone_1 = Clone.cloneWindow;
7063var Clone_2 = Clone.DocumentCloner;
7064
7065var Window = createCommonjsModule(function (module, exports) {
7066Object.defineProperty(exports, "__esModule", {
7067    value: true
7068});
7069exports.renderElement = undefined;
7070
7071var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); }
7071 else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
7072
7073
7074
7075var _Logger2 = _interopRequireDefault(Logger_1);
7076
7077
7078
7079
7080
7081var _Renderer2 = _interopRequireDefault(Renderer_1);
7082
7083
7084
7085var _ForeignObjectRenderer2 = _interopRequireDefault(ForeignObjectRenderer_1);
7086
7087
7088
7089var _Feature2 = _interopRequireDefault(Feature);
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099var _Color2 = _interopRequireDefault(Color_1);
7100
7101function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7102
7103var renderElement = exports.renderElement = function renderElement(element, options, logger) {
7104    var ownerDocument = element.ownerDocument;
7105
7106    var windowBounds = new Bounds_1.Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight);
7107
7108    // http://www.w3.org/TR/css3-background/#special-backgrounds
7109    var documentBackgroundColor = ownerDocument.documentElement ? new _Color2.default(getComputedStyle(ownerDocument.documentElement).backgroundColor) : Color_1.TRANSPARENT;
7110    var bodyBackgroundColor = ownerDocument.body ? new _Color2.default(getComputedStyle(ownerDocument.body).backgroundColor) : Color_1.TRANSPARENT;
7111
7112    var backgroundColor = element === ownerDocument.documentElement ? documentBackgroundColor.isTransparent() ? bodyBackgroundColor.isTransparent() ? options.backgroundColor ? new _Color2.default(options.backgroundColor) : null : bodyBackgroundColor : documentBackgroundColor : options.backgroundColor ? new _Color2.default(options.backgroundColor) : null;
7113
7114    return (options.foreignObjectRendering ? // $FlowFixMe
7115    _Feature2.default.SUPPORT_FOREIGNOBJECT_DRAWING : Promise.resolve(false)).then(function (supportForeignObject) {
7116        return supportForeignObject ? function (cloner) {
7117            return cloner.inlineFonts(ownerDocument).then(function () {
7118                return cloner.resourceLoader.ready();
7119            }).then(function () {
7120                var renderer = new _ForeignObjectRenderer2.default(cloner.documentElement);
7121
7122                var defaultView = ownerDocument.defaultView;
7123                var scrollX = defaultView.pageXOffset;
7124                var scrollY = defaultView.pageYOffset;
7125
7126                var isDocument = element.tagName === 'HTML' || element.tagName === 'BODY';
7127
7128                var _ref = isDocument ? (0, Bounds_1.parseDocumentSize)(ownerDocument) : (0, Bounds_1.parseBounds)(element, scrollX, scrollY),
7129                    width = _ref.width,
7130                    height = _ref.height,
7131                    left = _ref.left,
7132                    top = _ref.top;
7133
7134                return renderer.render({
7135                    backgroundColor: backgroundColor,
7136                    logger: logger,
7137                    scale: options.scale,
7138                    x: typeof options.x === 'number' ? options.x : left,
7139                    y: typeof options.y === 'number' ? options.y : top,
7140                    width: typeof options.width === 'number' ? options.width : Math.ceil(width),
7141                    height: typeof options.height === 'number' ? options.height : Math.ceil(height),
7142                    windowWidth: options.windowWidth,
7143                    windowHeight: options.windowHeight,
7144                    scrollX: options.scrollX,
7145                    scrollY: options.scrollY
7146                });
7147            });
7148        }(new Clone.DocumentCloner(element, options, logger, true, renderElement)) : (0, Clone.cloneWindow)(ownerDocument, windowBounds, element, options, logger, renderElement).then(function (_ref2) {
7149            var _ref3 = _slicedToArray(_ref2, 3),
7150                container = _ref3[0],
7151                clonedElement = _ref3[1],
7152                resourceLoader = _ref3[2];
7153
7154            var stack = (0, NodeParser_1.NodeParser)(clonedElement, resourceLoader, logger);
7155            var clonedDocument = clonedElement.ownerDocument;
7156
7157            if (backgroundColor === stack.container.style.background.backgroundColor) {
7158                stack.container.style.background.backgroundColor = Color_1.TRANSPARENT;
7159            }
7160
7161            return resourceLoader.ready().then(function (imageStore) {
7162                var fontMetrics = new Font.FontMetrics(clonedDocument);
7163                var defaultView = clonedDocument.defaultView;
7164                var scrollX = defaultView.pageXOffset;
7165                var scrollY = defaultView.pageYOffset;
7166
7167                var isDocument = clonedElement.tagName === 'HTML' || clonedElement.tagName === 'BODY';
7168
7169                var _ref4 = isDocument ? (0, Bounds_1.parseDocumentSize)(ownerDocument) : (0, Bounds_1.parseBounds)(clonedElement, scrollX, scrollY),
7170                    width = _ref4.width,
7171                    height = _ref4.height,
7172                    left = _ref4.left,
7173                    top = _ref4.top;
7174
7175                var renderOptions = {
7176                    backgroundColor: backgroundColor,
7177                    fontMetrics: fontMetrics,
7178                    imageStore: imageStore,
7179                    logger: logger,
7180                    scale: options.scale,
7181                    x: typeof options.x === 'number' ? options.x : left,
7182                    y: typeof options.y === 'number' ? options.y : top,
7183                    width: typeof options.width === 'number' ? options.width : Math.ceil(width),
7184                    height: typeof options.height === 'number' ? options.height : Math.
7184ceil(height)
7185                };
7186
7187                if (Array.isArray(options.target)) {
7188                    return Promise.all(options.target.map(function (target) {
7189                        var renderer = new _Renderer2.default(target, renderOptions);
7190                        return renderer.render(stack);
7191                    }));
7192                } else {
7193                    var renderer = new _Renderer2.default(options.target, renderOptions);
7194                    var canvas = renderer.render(stack);
7195                    if (options.removeContainer === true) {
7196                        if (container.parentNode) {
7197                            container.parentNode.removeChild(container);
7198                        } else {}
7199                    }
7200
7201                    return canvas;
7202                }
7203            });
7204        });
7205    });
7206};
7207});
7208
7209unwrapExports(Window);
7210var Window_1 = Window.renderElement;
7211
7212var npm = createCommonjsModule(function (module) {
7213var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
7214
7215
7216
7217var _CanvasRenderer2 = _interopRequireDefault(CanvasRenderer_1);
7218
7219
7220
7221var _Logger2 = _interopRequireDefault(Logger_1);
7222
7223
7224
7225function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7226
7227var html2canvas = function html2canvas(element, conf) {
7228    var config = conf || {};
7229    var logger = new _Logger2.default(typeof config.logging === 'boolean' ? config.logging : true);
7230    logger.log('html2canvas ' + "$npm_package_version");
7231
7232    var ownerDocument = element.ownerDocument;
7233    if (!ownerDocument) {
7234        return Promise.reject('Provided element is not within a Document');
7235    }
7236    var defaultView = ownerDocument.defaultView;
7237
7238    var defaultOptions = {
7239        async: true,
7240        allowTaint: false,
7241        backgroundColor: '#ffffff',
7242        imageTimeout: 15000,
7243        logging: true,
7244        proxy: null,
7245        removeContainer: true,
7246        foreignObjectRendering: false,
7247        scale: defaultView.devicePixelRatio || 1,
7248        target: new _CanvasRenderer2.default(config.canvas),
7249        useCORS: false,
7250        windowWidth: defaultView.innerWidth,
7251        windowHeight: defaultView.innerHeight,
7252        scrollX: defaultView.pageXOffset,
7253        scrollY: defaultView.pageYOffset
7254    };
7255
7256    var result = (0, Window.renderElement)(element, _extends({}, defaultOptions, config), logger);
7257
7258    return result;
7259};
7260
7261html2canvas.CanvasRenderer = _CanvasRenderer2.default;
7262
7263module.exports = html2canvas;
7264});
7265
7266var html2canvas$1 = unwrapExports(npm);
7267
7268var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
7269  return typeof obj;
7270} : function (obj) {
7271  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
7272};
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294var _extends = Object.assign || function (target) {
7295  for (var i = 1; i < arguments.length; i++) {
7296    var source = arguments[i];
7297
7298    for (var key in source) {
7299      if (Object.prototype.hasOwnProperty.call(source, key)) {
7300        target[key] = source[key];
7301      }
7302    }
7303  }
7304
7305  return target;
7306};
7307
7308// Determine the type of a variable/object.
7309var objType = function objType(obj) {
7310  var type = typeof obj === 'undefined' ? 'undefined' : _typeof(obj);
7311  if (type === 'undefined') return 'undefined';else if (type === 'string' || obj instanceof String) return 'string';else if (type === 'number' || obj instanceof Number) return 'number';else if (type === 'function' || obj instanceof Function) return 'function';else if (!!obj && obj.constructor === Array) return 'array';else if (obj && obj.nodeType === 1) return 'element';else if (type === 'object') return 'object';else return 'unknown';
7312};
7313
7314// Create an HTML element with optional className, innerHTML, and style.
7315var createElement = function createElement(tagName, opt) {
7316  var el = document.createElement(tagName);
7317  if (opt.className) el.className = opt.className;
7318  if (opt.innerHTML) {
7319    el.innerHTML = opt.innerHTML;
7320    var scripts = el.getElementsByTagName('script');
7321    for (var i = scripts.length; i-- > 0; null) {
7322      scripts[i].parentNode.removeChild(scripts[i]);
7323    }
7324  }
7325  for (var key in opt.style) {
7326    el.style[key] = opt.style[key];
7327  }
7328  return el;
7329};
7330
7331// Deep-clone a node and preserve contents/properties.
7332var cloneNode = function cloneNode(node, javascriptEnabled) {
7333  // Recursively clone the node.
7334  var clone = node.nodeType === 3 ? document.createTextNode(node.nodeValue) : node.cloneNode(false);
7335  for (var child = node.firstChild; child; child = child.nextSibling) {
7336    if (javascriptEnabled === true || child.nodeType !== 1 || child.nodeName !== 'SCRIPT') {
7337      clone.appendChild(cloneNode(child, javascriptEnabled));
7338    }
7339  }
7340
7341  if (node.nodeType === 1) {
7342    // Preserve contents/properties of special nodes.
7343    if (node.nodeName === 'CANVAS') {
7344      clone.width = node.width;
7345      clone.height = node.height;
7346      clone.getContext('2d').drawImage(node, 0, 0);
7347    } else if (node.nodeName === 'TEXTAREA' || node.nodeName === 'SELECT') {
7348      clone.value = node.value;
7349    }
7350
7351    // Preserve the node's scroll position when it loads.
7352    clone.addEventListener('load', function () {
7353      clone.scrollTop = node.scrollTop;
7354      clone.scrollLeft = node.scrollLeft;
7355    }, true);
7356  }
7357
vendor: 4,646 bytes, lines 7358-7529
7358  // Return the cloned node.
7359  return clone;
7360};
7361
7362// Convert units from px using the conversion value 'k' from jsPDF.
7363var unitConvert = function unitConvert(obj, k) {
7364  if (objType(obj) === 'number') {
7365    return obj * 72 / 96 / k;
7366  } else {
7367    var newObj = {};
7368    for (var key in obj) {
7369      newObj[key] = obj[key] * 72 / 96 / k;
7370    }
7371    return newObj;
7372  }
7373};
7374
7375// Convert units to px using the conversion value 'k' from jsPDF.
7376var toPx = function toPx(val, k) {
7377  return Math.floor(val * k / 72 * 96);
7378};
7379
7380var es6Promise = createCommonjsModule(function (module, exports) {
7381/*!
7382 * @overview es6-promise - a tiny implementation of Promises/A+.
7383 * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
7384 * @license   Licensed under MIT license
7385 *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
7386 * @version   v4.2.5+7f2b526d
7387 */
7388
7389(function (global, factory) {
7390	module.exports = factory();
7391}(commonjsGlobal, (function () { function objectOrFunction(x) {
7392  var type = typeof x;
7393  return x !== null && (type === 'object' || type === 'function');
7394}
7395
7396function isFunction(x) {
7397  return typeof x === 'function';
7398}
7399
7400
7401
7402var _isArray = void 0;
7403if (Array.isArray) {
7404  _isArray = Array.isArray;
7405} else {
7406  _isArray = function (x) {
7407    return Object.prototype.toString.call(x) === '[object Array]';
7408  };
7409}
7410
7411var isArray = _isArray;
7412
7413var len = 0;
7414var vertxNext = void 0;
7415var customSchedulerFn = void 0;
7416
7417var asap = function asap(callback, arg) {
7418  queue[len] = callback;
7419  queue[len + 1] = arg;
7420  len += 2;
7421  if (len === 2) {
7422    // If len is 2, that means that we need to schedule an async flush.
7423    // If additional callbacks are queued before the queue is flushed, they
7424    // will be processed by this flush that we are scheduling.
7425    if (customSchedulerFn) {
7426      customSchedulerFn(flush);
7427    } else {
7428      scheduleFlush();
7429    }
7430  }
7431};
7432
7433function setScheduler(scheduleFn) {
7434  customSchedulerFn = scheduleFn;
7435}
7436
7437function setAsap(asapFn) {
7438  asap = asapFn;
7439}
7440
7441var browserWindow = typeof window !== 'undefined' ? window : undefined;
7442var browserGlobal = browserWindow || {};
7443var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
7444var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
7445
7446// test for web worker but not in IE10
7447var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
7448
7449// node
7450function useNextTick() {
7451  // node version 0.10.x displays a deprecation warning when nextTick is used recursively
7452  // see https://github.com/cujojs/when/issues/410 for details
7453  return function () {
7454    return process.nextTick(flush);
7455  };
7456}
7457
7458// vertx
7459function useVertxTimer() {
7460  if (typeof vertxNext !== 'undefined') {
7461    return function () {
7462      vertxNext(flush);
7463    };
7464  }
7465
7466  return useSetTimeout();
7467}
7468
7469function useMutationObserver() {
7470  var iterations = 0;
7471  var observer = new BrowserMutationObserver(flush);
7472  var node = document.createTextNode('');
7473  observer.observe(node, { characterData: true });
7474
7475  return function () {
7476    node.data = iterations = ++iterations % 2;
7477  };
7478}
7479
7480// web worker
7481function useMessageChannel() {
7482  var channel = new MessageChannel();
7483  channel.port1.onmessage = flush;
7484  return function () {
7485    return channel.port2.postMessage(0);
7486  };
7487}
7488
7489function useSetTimeout() {
7490  // Store setTimeout reference so es6-promise will be unaffected by
7491  // other code modifying setTimeout (like sinon.useFakeTimers())
7492  var globalSetTimeout = setTimeout;
7493  return function () {
7494    return globalSetTimeout(flush, 1);
7495  };
7496}
7497
7498var queue = new Array(1000);
7499function flush() {
7500  for (var i = 0; i < len; i += 2) {
7501    var callback = queue[i];
7502    var arg = queue[i + 1];
7503
7504    callback(arg);
7505
7506    queue[i] = undefined;
7507    queue[i + 1] = undefined;
7508  }
7509
7510  len = 0;
7511}
7512
7513function attemptVertx() {
7514  try {
7515    var vertx = Function('return this')().require('vertx');
7516    vertxNext = vertx.runOnLoop || vertx.runOnContext;
7517    return useVertxTimer();
7518  } catch (e) {
7519    return useSetTimeout();
7520  }
7521}
7522
7523var scheduleFlush = void 0;
7524// Decide what async method to use to triggering processing of queued callbacks:
7525if (isNode) {
7526  scheduleFlush = useNextTick();
7527} else if (BrowserMutationObserver) {
7528  scheduleFlush = useMutationObserver();
7529} else if (isWorker) {
vendor: 9,188 bytes, lines 7530-7912
7530  scheduleFlush = useMessageChannel();
7531} else if (browserWindow === undefined && typeof commonjsRequire === 'function') {
7532  scheduleFlush = attemptVertx();
7533} else {
7534  scheduleFlush = useSetTimeout();
7535}
7536
7537function then(onFulfillment, onRejection) {
7538  var parent = this;
7539
7540  var child = new this.constructor(noop);
7541
7542  if (child[PROMISE_ID] === undefined) {
7543    makePromise(child);
7544  }
7545
7546  var _state = parent._state;
7547
7548
7549  if (_state) {
7550    var callback = arguments[_state - 1];
7551    asap(function () {
7552      return invokeCallback(_state, child, callback, parent._result);
7553    });
7554  } else {
7555    subscribe(parent, child, onFulfillment, onRejection);
7556  }
7557
7558  return child;
7559}
7560
7561/**
7562  `Promise.resolve` returns a promise that will become resolved with the
7563  passed `value`. It is shorthand for the following:
7564
7565  ```javascript
7566  let promise = new Promise(function(resolve, reject){
7567    resolve(1);
7568  });
7569
7570  promise.then(function(value){
7571    // value === 1
7572  });
7573  ```
7574
7575  Instead of writing the above, your code now simply becomes the following:
7576
7577  ```javascript
7578  let promise = Promise.resolve(1);
7579
7580  promise.then(function(value){
7581    // value === 1
7582  });
7583  ```
7584
7585  @method resolve
7586  @static
7587  @param {Any} value value that the returned promise will be resolved with
7588  Useful for tooling.
7589  @return {Promise} a promise that will become fulfilled with the given
7590  `value`
7591*/
7592function resolve$1(object) {
7593  /*jshint validthis:true */
7594  var Constructor = this;
7595
7596  if (object && typeof object === 'object' && object.constructor === Constructor) {
7597    return object;
7598  }
7599
7600  var promise = new Constructor(noop);
7601  resolve(promise, object);
7602  return promise;
7603}
7604
7605var PROMISE_ID = Math.random().toString(36).substring(2);
7606
7607function noop() {}
7608
7609var PENDING = void 0;
7610var FULFILLED = 1;
7611var REJECTED = 2;
7612
7613var TRY_CATCH_ERROR = { error: null };
7614
7615function selfFulfillment() {
7616  return new TypeError("You cannot resolve a promise with itself");
7617}
7618
7619function cannotReturnOwn() {
7620  return new TypeError('A promises callback cannot return that same promise.');
7621}
7622
7623function getThen(promise) {
7624  try {
7625    return promise.then;
7626  } catch (error) {
7627    TRY_CATCH_ERROR.error = error;
7628    return TRY_CATCH_ERROR;
7629  }
7630}
7631
7632function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
7633  try {
7634    then$$1.call(value, fulfillmentHandler, rejectionHandler);
7635  } catch (e) {
7636    return e;
7637  }
7638}
7639
7640function handleForeignThenable(promise, thenable, then$$1) {
7641  asap(function (promise) {
7642    var sealed = false;
7643    var error = tryThen(then$$1, thenable, function (value) {
7644      if (sealed) {
7645        return;
7646      }
7647      sealed = true;
7648      if (thenable !== value) {
7649        resolve(promise, value);
7650      } else {
7651        fulfill(promise, value);
7652      }
7653    }, function (reason) {
7654      if (sealed) {
7655        return;
7656      }
7657      sealed = true;
7658
7659      reject(promise, reason);
7660    }, 'Settle: ' + (promise._label || ' unknown promise'));
7661
7662    if (!sealed && error) {
7663      sealed = true;
7664      reject(promise, error);
7665    }
7666  }, promise);
7667}
7668
7669function handleOwnThenable(promise, thenable) {
7670  if (thenable._state === FULFILLED) {
7671    fulfill(promise, thenable._result);
7672  } else if (thenable._state === REJECTED) {
7673    reject(promise, thenable._result);
7674  } else {
7675    subscribe(thenable, undefined, function (value) {
7676      return resolve(promise, value);
7677    }, function (reason) {
7678      return reject(promise, reason);
7679    });
7680  }
7681}
7682
7683function handleMaybeThenable(promise, maybeThenable, then$$1) {
7684  if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
7685    handleOwnThenable(promise, maybeThenable);
7686  } else {
7687    if (then$$1 === TRY_CATCH_ERROR) {
7688      reject(promise, TRY_CATCH_ERROR.error);
7689      TRY_CATCH_ERROR.error = null;
7690    } else if (then$$1 === undefined) {
7691      fulfill(promise, maybeThenable);
7692    } else if (isFunction(then$$1)) {
7693      handleForeignThenable(promise, maybeThenable, then$$1);
7694    } else {
7695      fulfill(promise, maybeThenable);
7696    }
7697  }
7698}
7699
7700function resolve(promise, value) {
7701  if (promise === value) {
7702    reject(promise, selfFulfillment());
7703  } else if (objectOrFunction(value)) {
7704    handleMaybeThenable(promise, value, getThen(value));
7705  } else {
7706    fulfill(promise, value);
7707  }
7708}
7709
7710function publishRejection(promise) {
7711  if (promise._onerror) {
7712    promise._onerror(promise._result);
7713  }
7714
7715  publish(promise);
7716}
7717
7718function fulfill(promise, value) {
7719  if (promise._state !== PENDING) {
7720    return;
7721  }
7722
7723  promise._result = value;
7724  promise._state = FULFILLED;
7725
7726  if (promise._subscribers.length !== 0) {
7727    asap(publish, promise);
7728  }
7729}
7730
7731function reject(promise, reason) {
7732  if (promise._state !== PENDING) {
7733    return;
7734  }
7735  promise._state = REJECTED;
7736  promise._result = reason;
7737
7738  asap(publishRejection, promise);
7739}
7740
7741function subscribe(parent, child, onFulfillment, onRejection) {
7742  var _subscribers = parent._subscribers;
7743  var length = _subscribers.length;
7744
7745
7746  parent._onerror = null;
7747
7748  _subscribers[length] = child;
7749  _subscribers[length + FULFILLED] = onFulfillment;
7750  _subscribers[length + REJECTED] = onRejection;
7751
7752  if (length === 0 && parent._state) {
7753    asap(publish, parent);
7754  }
7755}
7756
7757function publish(promise) {
7758  var subscribers = promise._subscribers;
7759  var settled = promise._state;
7760
7761  if (subscribers.length === 0) {
7762    return;
7763  }
7764
7765  var child = void 0,
7766      callback = void 0,
7767      detail = promise._result;
7768
7769  for (var i = 0; i < subscribers.length; i += 3) {
7770    child = subscribers[i];
7771    callback = subscribers[i + settled];
7772
7773    if (child) {
7774      invokeCallback(settled, child, callback, detail);
7775    } else {
7776      callback(detail);
7777    }
7778  }
7779
7780  promise._subscribers.length = 0;
7781}
7782
7783function tryCatch(callback, detail) {
7784  try {
7785    return callback(detail);
7786  } catch (e) {
7787    TRY_CATCH_ERROR.error = e;
7788    return TRY_CATCH_ERROR;
7789  }
7790}
7791
7792function invokeCallback(settled, promise, callback, detail) {
7793  var hasCallback = isFunction(callback),
7794      value = void 0,
7795      error = void 0,
7796      succeeded = void 0,
7797      failed = void 0;
7798
7799  if (hasCallback) {
7800    value = tryCatch(callback, detail);
7801
7802    if (value === TRY_CATCH_ERROR) {
7803      failed = true;
7804      error = value.error;
7805      value.error = null;
7806    } else {
7807      succeeded = true;
7808    }
7809
7810    if (promise === value) {
7811      reject(promise, cannotReturnOwn());
7812      return;
7813    }
7814  } else {
7815    value = detail;
7816    succeeded = true;
7817  }
7818
7819  if (promise._state !== PENDING) {
7820    // noop
7821  } else if (hasCallback && succeeded) {
7822    resolve(promise, value);
7823  } else if (failed) {
7824    reject(promise, error);
7825  } else if (settled === FULFILLED) {
7826    fulfill(promise, value);
7827  } else if (settled === REJECTED) {
7828    reject(promise, value);
7829  }
7830}
7831
7832function initializePromise(promise, resolver) {
7833  try {
7834    resolver(function resolvePromise(value) {
7835      resolve(promise, value);
7836    }, function rejectPromise(reason) {
7837      reject(promise, reason);
7838    });
7839  } catch (e) {
7840    reject(promise, e);
7841  }
7842}
7843
7844var id = 0;
7845function nextId() {
7846  return id++;
7847}
7848
7849function makePromise(promise) {
7850  promise[PROMISE_ID] = id++;
7851  promise._state = undefined;
7852  promise._result = undefined;
7853  promise._subscribers = [];
7854}
7855
7856function validationError() {
7857  return new Error('Array Methods must be provided an Array');
7858}
7859
7860var Enumerator = function () {
7861  function Enumerator(Constructor, input) {
7862    this._instanceConstructor = Constructor;
7863    this.promise = new Constructor(noop);
7864
7865    if (!this.promise[PROMISE_ID]) {
7866      makePromise(this.promise);
7867    }
7868
7869    if (isArray(input)) {
7870      this.length = input.length;
7871      this._remaining = input.length;
7872
7873      this._result = new Array(this.length);
7874
7875      if (this.length === 0) {
7876        fulfill(this.promise, this._result);
7877      } else {
7878        this.length = this.length || 0;
7879        this._enumerate(input);
7880        if (this._remaining === 0) {
7881          fulfill(this.promise, this._result);
7882        }
7883      }
7884    } else {
7885      reject(this.promise, validationError());
7886    }
7887  }
7888
7889  Enumerator.prototype._enumerate = function _enumerate(input) {
7890    for (var i = 0; this._state === PENDING && i < input.length; i++) {
7891      this._eachEntry(input[i], i);
7892    }
7893  };
7894
7895  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
7896    var c = this._instanceConstructor;
7897    var resolve$$1 = c.resolve;
7898
7899
7900    if (resolve$$1 === resolve$1) {
7901      var _then = getThen(entry);
7902
7903      if (_then === then && entry._state !== PENDING) {
7904        this._settledAt(entry._state, i, entry._result);
7905      } else if (typeof _then !== 'function') {
7906        this._remaining--;
7907        this._result[i] = entry;
7908      } else if (c === Promise$1) {
7909        var promise = new c(noop);
7910        handleMaybeThenable(promise, entry, _then);
7911        this._willSettleAt(promise, i);
7912      } else {
vendor: 3,868 bytes, lines 7913-8051
7913        this._willSettleAt(new c(function (resolve$$1) {
7914          return resolve$$1(entry);
7915        }), i);
7916      }
7917    } else {
7918      this._willSettleAt(resolve$$1(entry), i);
7919    }
7920  };
7921
7922  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
7923    var promise = this.promise;
7924
7925
7926    if (promise._state === PENDING) {
7927      this._remaining--;
7928
7929      if (state === REJECTED) {
7930        reject(promise, value);
7931      } else {
7932        this._result[i] = value;
7933      }
7934    }
7935
7936    if (this._remaining === 0) {
7937      fulfill(promise, this._result);
7938    }
7939  };
7940
7941  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
7942    var enumerator = this;
7943
7944    subscribe(promise, undefined, function (value) {
7945      return enumerator._settledAt(FULFILLED, i, value);
7946    }, function (reason) {
7947      return enumerator._settledAt(REJECTED, i, reason);
7948    });
7949  };
7950
7951  return Enumerator;
7952}();
7953
7954/**
7955  `Promise.all` accepts an array of promises, and returns a new promise which
7956  is fulfilled with an array of fulfillment values for the passed promises, or
7957  rejected with the reason of the first passed promise to be rejected. It casts all
7958  elements of the passed iterable to promises as it runs this algorithm.
7959
7960  Example:
7961
7962  ```javascript
7963  let promise1 = resolve(1);
7964  let promise2 = resolve(2);
7965  let promise3 = resolve(3);
7966  let promises = [ promise1, promise2, promise3 ];
7967
7968  Promise.all(promises).then(function(array){
7969    // The array here would be [ 1, 2, 3 ];
7970  });
7971  ```
7972
7973  If any of the `promises` given to `all` are rejected, the first promise
7974  that is rejected will be given as an argument to the returned promises's
7975  rejection handler. For example:
7976
7977  Example:
7978
7979  ```javascript
7980  let promise1 = resolve(1);
7981  let promise2 = reject(new Error("2"));
7982  let promise3 = reject(new Error("3"));
7983  let promises = [ promise1, promise2, promise3 ];
7984
7985  Promise.all(promises).then(function(array){
7986    // Code here never runs because there are rejected promises!
7987  }, function(error) {
7988    // error.message === "2"
7989  });
7990  ```
7991
7992  @method all
7993  @static
7994  @param {Array} entries array of promises
7995  @param {String} label optional string for labeling the promise.
7996  Useful for tooling.
7997  @return {Promise} promise that is fulfilled when all `promises` have been
7998  fulfilled, or rejected if any of them become rejected.
7999  @static
8000*/
8001function all(entries) {
8002  return new Enumerator(this, entries).promise;
8003}
8004
8005/**
8006  `Promise.race` returns a new promise which is settled in the same way as the
8007  first passed promise to settle.
8008
8009  Example:
8010
8011  ```javascript
8012  let promise1 = new Promise(function(resolve, reject){
8013    setTimeout(function(){
8014      resolve('promise 1');
8015    }, 200);
8016  });
8017
8018  let promise2 = new Promise(function(resolve, reject){
8019    setTimeout(function(){
8020      resolve('promise 2');
8021    }, 100);
8022  });
8023
8024  Promise.race([promise1, promise2]).then(function(result){
8025    // result === 'promise 2' because it was resolved before promise1
8026    // was resolved.
8027  });
8028  ```
8029
8030  `Promise.race` is deterministic in that only the state of the first
8031  settled promise matters. For example, even if other promises given to the
8032  `promises` array argument are resolved, but the first settled promise has
8033  become rejected before the other promises became fulfilled, the returned
8034  promise will become rejected:
8035
8036  ```javascript
8037  let promise1 = new Promise(function(resolve, reject){
8038    setTimeout(function(){
8039      resolve('promise 1');
8040    }, 200);
8041  });
8042
8043  let promise2 = new Promise(function(resolve, reject){
8044    setTimeout(function(){
8045      reject(new Error('promise 2'));
8046    }, 100);
8047  });
8048
8049  Promise.race([promise1, promise2]).then(function(result){
8050    // Code here never runs
8051  }, function(reason){
8052    // reason.message === 'promise 2' because promise 2 became rejected before
8053    // promise 1 became fulfilled
8054  });
8055  ```
8056
8057  An example real-world use case is implementing timeouts:
8058
8059  ```javascript
8060  Promise.race([ajax('foo.json'), timeout(5000)])
8061  ```
8062
8063  @method race
8064  @static
8065  @param {Array} promises array of promises to observe
8066  Useful for tooling.
8067  @return {Promise} a promise which settles in the same way as the first passed
8068  promise to settle.
8069*/
8070function race(entries) {
8071  /*jshint validthis:true */
8072  var Constructor = this;
8073
8074  if (!isArray(entries)) {
8075    return new Constructor(function (_, reject) {
8076      return reject(new TypeError('You must pass an array to race.'));
8077    });
8078  } else {
8079    return new Constructor(function (resolve, reject) {
8080      var length = entries.length;
8081      for (var i = 0; i < length; i++) {
8082        Constructor.resolve(entries[i]).then(resolve, reject);
8083      }
8084    });
8085  }
8086}
8087
8088/**
8089  `Promise.reject` returns a promise rejected with the passed `reason`.
8090  It is shorthand for the following:
8091
8092  ```javascript
8093  let promise = new Promise(function(resolve, reject){
8094    reject(new Error('WHOOPS'));
8095  });
8096
8097  promise.then(function(value){
8098    // Code here doesn't run because the promise is rejected!
8099  }, function(reason){
8100    // reason.message === 'WHOOPS'
8101  });
8102  ```
8103
8104  Instead of writing the above, your code now simply becomes the following:
8105
8106  ```javascript
8107  let promise = Promise.reject(new Error('WHOOPS'));
8108
8109  promise.then(function(value){
8110    // Code here doesn't run because the promise is rejected!
8111  }, function(reason){
8112    // reason.message === 'WHOOPS'
8113  });
8114  ```
8115
8116  @method reject
8117  @static
8118  @param {Any} reason value that the returned promise will be rejected with.
8119  Useful for tooling.
8120  @return {Promise} a promise rejected with the given `reason`.
8121*/
8122function reject$1(reason) {
8123  /*jshint validthis:true */
8124  var Constructor = this;
8125  var promise = new Constructor(noop);
8126  reject(promise, reason);
8127  return promise;
8128}
8129
8130function needsResolver() {
8131  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
8132}
8133
8134function needsNew() {
8135  throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object c
8135onstructor cannot be called as a function.");
8136}
8137
8138/**
8139  Promise objects represent the eventual result of an asynchronous operation. The
8140  primary way of interacting with a promise is through its `then` method, which
8141  registers callbacks to receive either a promise's eventual value or the reason
8142  why the promise cannot be fulfilled.
8143
8144  Terminology
8145  -----------
8146
8147  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
8148  - `thenable` is an object or function that defines a `then` method.
8149  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
8150  - `exception` is a value that is thrown using the throw statement.
8151  - `reason` is a value that indicates why a promise was rejected.
8152  - `settled` the final resting state of a promise, fulfilled or rejected.
8153
8154  A promise can be in one of three states: pending, fulfilled, or rejected.
8155
8156  Promises that are fulfilled have a fulfillment value and are in the fulfilled
8157  state.  Promises that are rejected have a rejection reason and are in the
8158  rejected state.  A fulfillment value is never a thenable.
8159
8160  Promises can also be said to *resolve* a value.  If this value is also a
8161  promise, then the original promise's settled state will match the value's
8162  settled state.  So a promise that *resolves* a promise that rejects will
8163  itself reject, and a promise that *resolves* a promise that fulfills will
8164  itself fulfill.
8165
8166
8167  Basic Usage:
8168  ------------
8169
8170  ```js
8171  let promise = new Promise(function(resolve, reject) {
8172    // on success
8173    resolve(value);
8174
8175    // on failure
8176    reject(reason);
8177  });
8178
8179  promise.then(function(value) {
8180    // on fulfillment
8181  }, function(reason) {
8182    // on rejection
8183  });
8184  ```
8185
8186  Advanced Usage:
8187  ---------------
8188
8189  Promises shine when abstracting away asynchronous interactions such as
8190  `XMLHttpRequest`s.
8191
8192  ```js
8193  function getJSON(url) {
8194    return new Promise(function(resolve, reject){
8195      let xhr = new XMLHttpRequest();
8196
8197      xhr.open('GET', url);
8198      xhr.onreadystatechange = handler;
8199      xhr.responseType = 'json';
8200      xhr.setRequestHeader('Accept', 'application/json');
8201      xhr.send();
8202
8203      function handler() {
8204        if (this.readyState === this.DONE) {
8205          if (this.status === 200) {
8206            resolve(this.response);
8207          } else {
8208            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
8209          }
8210        }
8211      };
8212    });
8213  }
8214
8215  getJSON('/posts.json').then(function(json) {
8216    // on fulfillment
8217  }, function(reason) {
8218    // on rejection
8219  });
8220  ```
8221
8222  Unlike callbacks, promises are great composable primitives.
8223
8224  ```js
8225  Promise.all([
8226    getJSON('/posts'),
8227    getJSON('/comments')
8228  ]).then(function(values){
8229    values[0] // => postsJSON
8230    values[1] // => commentsJSON
8231
8232    return values;
8233  });
8234  ```
8235
8236  @class Promise
8237  @param {Function} resolver
8238  Useful for tooling.
8239  @constructor
8240*/
8241
8242var Promise$1 = function () {
8243  function Promise(resolver) {
8244    this[PROMISE_ID] = nextId();
8245    this._result = this._state = undefined;
8246    this._subscribers = [];
8247
8248    if (noop !== resolver) {
8249      typeof resolver !== 'function' && needsResolver();
8250      this instanceof Promise ? initializePromise(this, resolver) : needsNew();
8251    }
8252  }
8253
8254  /**
8255  The primary way of interacting with a promise is through its `then` method,
8256  which registers callbacks to receive either a promise's eventual value or the
8257  reason why the promise cannot be fulfilled.
8258   ```js
8259  findUser().then(function(user){
8260    // user is available
8261  }, function(reason){
8262    // user is unavailable, and you are given the reason why
8263  });
8264  ```
8265   Chaining
8266  --------
8267   The return value of `then` is itself a promise.  This second, 'downstream'
8268  promise is resolved with the return value of the first promise's fulfillment
8269  or rejection handler, or rejected if the handler throws an exception.
8270   ```js
8271  findUser().then(function (user) {
8272    return user.name;
8273  }, function (reason) {
8274    return 'default name';
8275  }).then(function (userName) {
8276    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
8277    // will be `'default name'`
8278  });
8279   findUser().then(function (user) {
8280    throw new Error('Found user, but still unhappy');
8281  }, function (reason) {
8282    throw new Error('`findUser` rejected and we're unhappy');
8283  }).then(function (value) {
8284    // never reached
8285  }, function (reason) {
8286    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
8287    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
8288  });
8289  ```
8290  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
8291   ```js
8292  findUser().then(function (user) {
8293    throw new PedagogicalException('Upstream error');
8294  }).then(function (value) {
8295    // never reached
8296  }).then(function (value) {
8297    // never reached
8298  }, function (reason) {
8299    // The `PedgagocialException` is propagated all the way down to here
8300  });
8301  ```
8302   Assimilation
8303  ------------
8304   Sometimes the value you want to propagate to a downstream promise can only be
8305  retrieved asynchronously. This can be achieved by returning a promise in the
8306  fulfillment or rejection handler. The downstream promise will then be pending
8307  until the returned promise is settled. This is called *assimilation*.
8308   ```js
8309  findUser().then(function (user) {
8310    return findCommentsByAuthor(user);
8311  }).then(function (comments) {
8312    // The user's comments are now available
8313  });
8314  ```
8315   If the assimliated promise rejects, then the downstream promise will also reject.
8316   ```js
8317  findUser().then(function (user) {
8318    return findCommentsByAuthor(user);
8319  }).then(function (comments) {
8320    // If `findCommentsByAuthor` fulfills, we'll have the value here
8321  }, function (reason) {
8322    // If `findCommentsByAuthor` rejects, we'll have the reason here
8323  });
8324  ```
vendor: 4,805 bytes, lines 8325-8561
8325   Simple Example
8326  --------------
8327   Synchronous Example
8328   ```javascript
8329  let result;
8330   try {
8331    result = findResult();
8332    // success
8333  } catch(reason) {
8334    // failure
8335  }
8336  ```
8337   Errback Example
8338   ```js
8339  findResult(function(result, err){
8340    if (err) {
8341      // failure
8342    } else {
8343      // success
8344    }
8345  });
8346  ```
8347   Promise Example;
8348   ```javascript
8349  findResult().then(function(result){
8350    // success
8351  }, function(reason){
8352    // failure
8353  });
8354  ```
8355   Advanced Example
8356  --------------
8357   Synchronous Example
8358   ```javascript
8359  let author, books;
8360   try {
8361    author = findAuthor();
8362    books  = findBooksByAuthor(author);
8363    // success
8364  } catch(reason) {
8365    // failure
8366  }
8367  ```
8368   Errback Example
8369   ```js
8370   function foundBooks(books) {
8371   }
8372   function failure(reason) {
8373   }
8374   findAuthor(function(author, err){
8375    if (err) {
8376      failure(err);
8377      // failure
8378    } else {
8379      try {
8380        findBoooksByAuthor(author, function(books, err) {
8381          if (err) {
8382            failure(err);
8383          } else {
8384            try {
8385              foundBooks(books);
8386            } catch(reason) {
8387              failure(reason);
8388            }
8389          }
8390        });
8391      } catch(error) {
8392        failure(err);
8393      }
8394      // success
8395    }
8396  });
8397  ```
8398   Promise Example;
8399   ```javascript
8400  findAuthor().
8401    then(findBooksByAuthor).
8402    then(function(books){
8403      // found books
8404  }).catch(function(reason){
8405    // something went wrong
8406  });
8407  ```
8408   @method then
8409  @param {Function} onFulfilled
8410  @param {Function} onRejected
8411  Useful for tooling.
8412  @return {Promise}
8413  */
8414
8415  /**
8416  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
8417  as the catch block of a try/catch statement.
8418  ```js
8419  function findAuthor(){
8420  throw new Error('couldn't find that author');
8421  }
8422  // synchronous
8423  try {
8424  findAuthor();
8425  } catch(reason) {
8426  // something went wrong
8427  }
8428  // async with promises
8429  findAuthor().catch(function(reason){
8430  // something went wrong
8431  });
8432  ```
8433  @method catch
8434  @param {Function} onRejection
8435  Useful for tooling.
8436  @return {Promise}
8437  */
8438
8439
8440  Promise.prototype.catch = function _catch(onRejection) {
8441    return this.then(null, onRejection);
8442  };
8443
8444  /**
8445    `finally` will be invoked regardless of the promise's fate just as native
8446    try/catch/finally behaves
8447  
8448    Synchronous example:
8449  
8450    ```js
8451    findAuthor() {
8452      if (Math.random() > 0.5) {
8453        throw new Error();
8454      }
8455      return new Author();
8456    }
8457  
8458    try {
8459      return findAuthor(); // succeed or fail
8460    } catch(error) {
8461      return findOtherAuther();
8462    } finally {
8463      // always runs
8464      // doesn't affect the return value
8465    }
8466    ```
8467  
8468    Asynchronous example:
8469  
8470    ```js
8471    findAuthor().catch(function(reason){
8472      return findOtherAuther();
8473    }).finally(function(){
8474      // author was either found, or not
8475    });
8476    ```
8477  
8478    @method finally
8479    @param {Function} callback
8480    @return {Promise}
8481  */
8482
8483
8484  Promise.prototype.finally = function _finally(callback) {
8485    var promise = this;
8486    var constructor = promise.constructor;
8487
8488    if (isFunction(callback)) {
8489      return promise.then(function (value) {
8490        return constructor.resolve(callback()).then(function () {
8491          return value;
8492        });
8493      }, function (reason) {
8494        return constructor.resolve(callback()).then(function () {
8495          throw reason;
8496        });
8497      });
8498    }
8499
8500    return promise.then(callback, callback);
8501  };
8502
8503  return Promise;
8504}();
8505
8506Promise$1.prototype.then = then;
8507Promise$1.all = all;
8508Promise$1.race = race;
8509Promise$1.resolve = resolve$1;
8510Promise$1.reject = reject$1;
8511Promise$1._setScheduler = setScheduler;
8512Promise$1._setAsap = setAsap;
8513Promise$1._asap = asap;
8514
8515/*global self*/
8516function polyfill() {
8517  var local = void 0;
8518
8519  if (typeof commonjsGlobal !== 'undefined') {
8520    local = commonjsGlobal;
8521  } else if (typeof self !== 'undefined') {
8522    local = self;
8523  } else {
8524    try {
8525      local = Function('return this')();
8526    } catch (e) {
8527      throw new Error('polyfill failed because global object is unavailable in this environment');
8528    }
8529  }
8530
8531  var P = local.Promise;
8532
8533  if (P) {
8534    var promiseToString = null;
8535    try {
8536      promiseToString = Object.prototype.toString.call(P.resolve());
8537    } catch (e) {
8538      // silently ignored
8539    }
8540
8541    if (promiseToString === '[object Promise]' && !P.cast) {
8542      return;
8543    }
8544  }
8545
8546  local.Promise = Promise$1;
8547}
8548
8549// Strange compat..
8550Promise$1.polyfill = polyfill;
8551Promise$1.Promise = Promise$1;
8552
8553return Promise$1;
8554
8555})));
8556
8557
8558
8559
8560});
8561
8562var Promise$1 = es6Promise.Promise;
8563
8564/* ----- CONSTRUCTOR ----- */
8565
8566var Worker = function Worker(opt) {
8567  // Create the root parent for the proto chain, and the starting Worker.
8568  var root = _extends(Worker.convert(Promise$1.resolve()), JSON.parse(JSON.stringify(Worker.template)));
8569  var self = Worker.convert(Promise$1.resolve(), root);
8570
8571  // Set progress, optional settings, and return.
8572  self = self.setProgress(1, Worker, 1, [Worker]);
8573  self = self.set(opt);
8574  return self;
8575};
8576
8577// Boilerplate for subclassing Promise.
8578Worker.prototype = Object.create(Promise$1.prototype);
8579Worker.prototype.constructor = Worker;
8580
8581// Converts/casts promises into Workers.
8582Worker.convert = function convert(promise, inherit) {
8583  // Uses prototypal inheritance to receive changes made to ancestors' properties.
8584  promise.__proto__ = inherit || Worker.prototype;
8585  return promise;
8586};
8587
8588Worker.template = {
8589  prop: {
8590    src: null,
8591    container: null,
8592    overlay: null,
8593    canvas: null,
8594    img: null,
8595    pdf: null,
8596    pageSize: null
8597  },
8598  progress: {
8599    val: 0,
8600    state: null,
8601    n: 0,
8602    stack: []
8603  },
8604  opt: {
8605    filename: 'file.pdf',
8606    margin: [0, 0, 0, 0],
8607    image: { type: 'jpeg', quality: 0.95 },
8608    enableLinks: true,
8609    html2canvas: {},
8610    jsPDF: {}
8611  }
8612};
8613
8614/* ----- FROM / TO ----- */
8615
8616Worker.prototype.from = function from(src, type) {
8617  function getType(src) {
8618    switch (objType(src)) {
8619      case 'string':
8620        return 'string';
8621      case 'element':
8622        return src.nodeName.toLowerCase === 'canvas' ? 'canvas' : 'element';
8623      default:
8624        return 'unknown';
8625    }
8626  }
8627
8628  return this.then(function from_main() {
8629    type = type || getType(src);
8630    switch (type) {
8631      case 'string':
8632        return this.set({ src: createElement('div', { innerHTML: src }) });
8633      case 'element':
8634        return this.set({ src: src });
8635      case 'canvas':
8636        return this.set({ canvas: src });
8637      case 'img':
8638        return this.set({ img: src });
8639      default:
8640        return this.error('Unknown source type.');
8641    }
8642  });
8643};
8644
8645Worker.prototype.to = function to(target) {
8646  // Route the 'to' request to the appropriate method.
8647  switch (target) {
8648    case 'container':
8649      return this.toContainer();
8650    case 'canvas':
8651      return this.toCanvas();
8652    case 'img':
8653      return this.toImg();
8654    case 'pdf':
8655      return this.toPdf();
8656    default:
8657      return this.error('Invalid target.');
8658  }
8659};
8660
8661Worker.prototype.toContainer = function toContainer() {
8662  // Set up function prerequisites.
8663  var prereqs = [function checkSrc() {
8664    return this.prop.src || this.error('Cannot duplicate - no source HTML.');
8665  }, function checkPageSize() {
8666    return this.prop.pageSize || this.setPageSize();
8667  }];
8668
8669  return this.thenList(prereqs).then(function toContainer_main() {
8670    // Define the CSS styles for the container and its overlay parent.
8671    var overlayCSS = {
8672      position: 'fixed', overflow: 'hidden', zIndex: 1000,
8673      left: 0, right: 0, bottom: 0, top: 0,
8674      backgroundColor: 'rgba(0,0,0,0.8)'
8675    };
8676    var containerCSS = {
8677      position: 'absolute', width: this.prop.pageSize.inner.width + this.prop.pageSize.unit,
8678      left: 0, right: 0, top: 0, height: 'auto', margin: 'auto',
8679      backgroundColor: 'white'
8680    };
8681
8682    // Set the overlay to hidden (could be changed in the future to provide a print preview).
8683    overlayCSS.opacity = 0;
8684
8685    // Create and attach the elements.
8686    var source = cloneNode(this.prop.src, this.opt.html2canvas.javascriptEnabled);
8687    this.prop.overlay = createElement('div', { className: 'html2pdf__overlay', style: overlayCSS });
8688    this.prop.container = createElement('div', { className: 'html2pdf__container', style: containerCSS });
8689    this.prop.container.appendChild(source);
8690    this.prop.overlay.appendChild(this.prop.container);
8691    document.body.appendChild(this.prop.overlay);
8692  });
8693};
8694
8695Worker.prototype.toCanvas = function toCanvas() {
8696  // Set up function prerequisites.
8697  var prereqs = [function checkContainer() {
8698    return document.body.contains(this.prop.container) || this.toContainer();
8699  }];
8700
8701  // Fulfill prereqs then create the canvas.
8702  return this.thenList(prereqs).then(function toCanvas_main() {
8703    // Handle old-fashioned 'onrendered' argument.
8704    var options = _extends({}, this.opt.html2canvas);
8705    delete options.onrendered;
8706
8707    return html2canvas$1(this.prop.container, options);
8708  }).then(function toCanvas_post(canvas) {
8709    // Handle old-fashioned 'onrendered' argument.
8710    var onRendered = this.opt.html2canvas.onrendered || function () {};
8711    onRendered(canvas);
8712
8713    this.prop.canvas = canvas;
8714    document.body.removeChild(this.prop.overlay);
8715  });
8716};
8717
8718Worker.prototype.toImg = function toImg() {
8719  // Set up function prerequisites.
8720  var prereqs = [function checkCanvas() {
8721    return this.prop.canvas || this.toCanvas();
8722  }];
8723
8724  // Fulfill prereqs then create the image.
8725  return this.thenList(prereqs).then(function toImg_main() {
8726    var imgData = this.prop.canvas.toDataURL('image/' + this.opt.image.type, this.opt.image.quality);
8727    this.prop.img = document.createElement('img');
8728    this.prop.img.src = imgData;
8729  });
8730};
8731
8732Worker.prototype.toPdf = function toPdf() {
8733  // Set up function prerequisites.
8734  var prereqs = [function checkCanvas() {
8735    return this.prop.canvas || this.toCanvas();
8736  }];
8737
8738  // Fulfill prereqs then create the image.
8739  return this.thenList(prereqs).then(function toPdf_main() {
8740    // Create local copies of frequently used properties.
8741    var canvas = this.prop.canvas;
8742    var opt = this.opt;
8743
8744    // Calculate the number of pages.
8745    var pxFullHeight = canvas.height;
8746    var pxPageHeight = Math.floor(canvas.width * this.prop.pageSize.inner.ratio);
8747    var nPages = Math.ceil(pxFullHeight / pxPageHeight);
8748
8749    // Define pageHeight separately so it can be trimmed on the final page.
8750    var pageHeight = this.prop.pageSize.inner.height;
8751
8752    // Create a one-page canvas to split up the full image.
8753    var pageCanvas = document.createElement('canvas');
8754    var pageCtx = pageCanvas.getContext('2d');
8755    pageCanvas.width = canvas.width;
8756    pageCanvas.height = pxPageHeight;
8757
8758    // Initialize the PDF.
8759    this.prop.pdf = this.prop.pdf || new jspdf_min(opt.jsPDF);
8760
8761    for (var page = 0; page < nPages; page++) {
8762      // Trim the final page to reduce file size.
8763      if (page === nPages - 1 && pxFullHeight % pxPageHeight !== 0) {
8764        pageCanvas.height = pxFullHeight % pxPageHeight;
8765        pageHeight = pageCanvas.height * this.prop.pageSize.inner.width / pageCanvas.width;
8766      }
8767
8768      // Display the page.
vendor: 10,329 bytes, lines 8769-9065
8769      var w = pageCanvas.width;
8770      var h = pageCanvas.height;
8771      pageCtx.fillStyle = 'white';
8772      pageCtx.fillRect(0, 0, w, h);
8773      pageCtx.drawImage(canvas, 0, page * pxPageHeight, w, h, 0, 0, w, h);
8774
8775      // Add the page to the PDF.
8776      if (page) this.prop.pdf.addPage();
8777      var imgData = pageCanvas.toDataURL('image/' + opt.image.type, opt.image.quality);
8778      this.prop.pdf.addImage(imgData, opt.image.type, opt.margin[1], opt.margin[0], this.prop.pageSize.inner.width, pageHeight);
8779    }
8780  });
8781};
8782
8783/* ----- OUTPUT / SAVE ----- */
8784
8785Worker.prototype.output = function output(type, options, src) {
8786  // Redirect requests to the correct function (outputPdf / outputImg).
8787  src = src || 'pdf';
8788  if (src.toLowerCase() === 'img' || src.toLowerCase() === 'image') {
8789    return this.outputImg(type, options);
8790  } else {
8791    return this.outputPdf(type, options);
8792  }
8793};
8794
8795Worker.prototype.outputPdf = function outputPdf(type, options) {
8796  // Set up function prerequisites.
8797  var prereqs = [function checkPdf() {
8798    return this.prop.pdf || this.toPdf();
8799  }];
8800
8801  // Fulfill prereqs then perform the appropriate output.
8802  return this.thenList(prereqs).then(function outputPdf_main() {
8803    /* Currently implemented output types:
8804     *    https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992
8805     *  save(options), arraybuffer, blob, bloburi/bloburl,
8806     *  datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl
8807     */
8808    return this.prop.pdf.output(type, options);
8809  });
8810};
8811
8812Worker.prototype.outputImg = function outputImg(type, options) {
8813  // Set up function prerequisites.
8814  var prereqs = [function checkImg() {
8815    return this.prop.img || this.toImg();
8816  }];
8817
8818  // Fulfill prereqs then perform the appropriate output.
8819  return this.thenList(prereqs).then(function outputImg_main() {
8820    switch (type) {
8821      case undefined:
8822      case 'img':
8823        return this.prop.img;
8824      case 'datauristring':
8825      case 'dataurlstring':
8826        return this.prop.img.src;
8827      case 'datauri':
8828      case 'dataurl':
8829        return document.location.href = this.prop.img.src;
8830      default:
8831        throw 'Image output type "' + type + '" is not supported.';
8832    }
8833  });
8834};
8835
8836Worker.prototype.save = function save(filename) {
8837  // Set up function prerequisites.
8838  var prereqs = [function checkPdf() {
8839    return this.prop.pdf || this.toPdf();
8840  }];
8841
8842  // Fulfill prereqs, update the filename (if provided), and save the PDF.
8843  return this.thenList(prereqs).set(filename ? { filename: filename } : null).then(function save_main() {
8844    this.prop.pdf.save(this.opt.filename);
8845  });
8846};
8847
8848/* ----- SET / GET ----- */
8849
8850Worker.prototype.set = function set$$1(opt) {
8851  // TODO: Implement ordered pairs?
8852
8853  // Silently ignore invalid or empty input.
8854  if (objType(opt) !== 'object') {
8855    return this;
8856  }
8857
8858  // Build an array of setter functions to queue.
8859  var fns = Object.keys(opt || {}).map(function (key) {
8860    if (key in Worker.template.prop) {
8861      // Set pre-defined properties.
8862      return function set_prop() {
8863        this.prop[key] = opt[key];
8864      };
8865    } else {
8866      switch (key) {
8867        case 'margin':
8868          return this.setMargin.bind(this, opt.margin);
8869        case 'jsPDF':
8870          return function set_jsPDF() {
8871            this.opt.jsPDF = opt.jsPDF;return this.setPageSize();
8872          };
8873        case 'pageSize':
8874          return this.setPageSize.bind(this, opt.pageSize);
8875        default:
8876          // Set any other properties in opt.
8877          return function set_opt() {
8878            this.opt[key] = opt[key];
8879          };
8880      }
8881    }
8882  }, this);
8883
8884  // Set properties within the promise chain.
8885  return this.then(function set_main() {
8886    return this.thenList(fns);
8887  });
8888};
8889
8890Worker.prototype.get = function get$$1(key, cbk) {
8891  return this.then(function get_main() {
8892    // Fetch the requested property, either as a predefined prop or in opt.
8893    var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];
8894    return cbk ? cbk(val) : val;
8895  });
8896};
8897
8898Worker.prototype.setMargin = function setMargin(margin) {
8899  return this.then(function setMargin_main() {
8900    // Parse the margin property: [top, left, bottom, right].
8901    switch (objType(margin)) {
8902      case 'number':
8903        margin = [margin, margin, margin, margin];
8904      case 'array':
8905        if (margin.length === 2) {
8906          margin = [margin[0], margin[1], margin[0], margin[1]];
8907        }
8908        if (margin.length === 4) {
8909          break;
8910        }
8911      default:
8912        return this.error('Invalid margin array.');
8913    }
8914
8915    // Set the margin property, then update pageSize.
8916    this.opt.margin = margin;
8917  }).then(this.setPageSize);
8918};
8919
8920Worker.prototype.setPageSize = function setPageSize(pageSize) {
8921  return this.then(function setPageSize_main() {
8922    // Retrieve page-size based on jsPDF settings, if not explicitly provided.
8923    pageSize = pageSize || jspdf_min.getPageSize(this.opt.jsPDF);
8924
8925    // Add 'inner' field if not present.
8926    if (!pageSize.hasOwnProperty('inner')) {
8927      pageSize.inner = {
8928        width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],
8929        height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]
8930      };
8931      pageSize.inner.px = {
8932        width: toPx(pageSize.inner.width, pageSize.k),
8933        height: toPx(pageSize.inner.height, pageSize.k)
8934      };
8935      pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;
8936    }
8937
8938    // Attach pageSize to this.
8939    this.prop.pageSize = pageSize;
8940  });
8941};
8942
8943Worker.prototype.setProgress = function setProgress(val, state, n, stack) {
8944  // Immediately update all progress values.
8945  if (val != null) this.progress.val = val;
8946  if (state != null) this.progress.state = state;
8947  if (n != null) this.progress.n = n;
8948  if (stack != null) this.progress.stack = stack;
8949  this.progress.ratio = this.progress.val / this.progress.state;
8950
8951  // Return this for command chaining.
8952  return this;
8953};
8954
8955Worker.prototype.updateProgress = function updateProgress(val, state, n, stack) {
8956  // Immediately update all progress values, using setProgress.
8957  return this.setProgress(val ? this.progress.val + val : null, state ? state : null, n ? this.progress.n + n : null, stack ? this.progress.stack.concat(stack) : null);
8958};
8959
8960/* ----- PROMISE MAPPING ----- */
8961
8962Worker.prototype.then = function then(onFulfilled, onRejected) {
8963  // Wrap `this` for encapsulation.
8964  var self = this;
8965
8966  return this.thenCore(onFulfilled, onRejected, function then_main(onFulfilled, onRejected) {
8967    // Update progress while queuing, calling, and resolving `then`.
8968    self.updateProgress(null, null, 1, [onFulfilled]);
8969    return Promise$1.prototype.then.call(this, function then_pre(val) {
8970      self.updateProgress(null, onFulfilled);
8971      return val;
8972    }).then(onFulfilled, onRejected).then(function then_post(val) {
8973      self.updateProgress(1);
8974      return val;
8975    });
8976  });
8977};
8978
8979Worker.prototype.thenCore = function thenCore(onFulfilled, onRejected, thenBase) {
8980  // Handle optional thenBase parameter.
8981  thenBase = thenBase || Promise$1.prototype.then;
8982
8983  // Wrap `this` for encapsulation and bind it to the promise handlers.
8984  var self = this;
8985  if (onFulfilled) {
8986    onFulfilled = onFulfilled.bind(self);
8987  }
8988  if (onRejected) {
8989    onRejected = onRejected.bind(self);
8990  }
8991
8992  // Cast self into a Promise to avoid polyfills recursively defining `then`.
8993  var isNative = Promise$1.toString().indexOf('[native code]') !== -1 && Promise$1.name === 'Promise';
8994  var selfPromise = isNative ? self : Worker.convert(_extends({}, self), Promise$1.prototype);
8995
8996  // Return the promise, after casting it into a Worker and preserving props.
8997  var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);
8998  return Worker.convert(returnVal, self.__proto__);
8999};
9000
9001Worker.prototype.thenExternal = function thenExternal(onFulfilled, onRejected) {
9002  // Call `then` and return a standard promise (exits the Worker chain).
9003  return Promise$1.prototype.then.call(this, onFulfilled, onRejected);
9004};
9005
9006Worker.prototype.thenList = function thenList(fns) {
9007  // Queue a series of promise 'factories' into the promise chain.
9008  var self = this;
9009  fns.forEach(function thenList_forEach(fn) {
9010    self = self.thenCore(fn);
9011  });
9012  return self;
9013};
9014
9015Worker.prototype['catch'] = function (onRejected) {
9016  // Bind `this` to the promise handler, call `catch`, and return a Worker.
9017  if (onRejected) {
9018    onRejected = onRejected.bind(this);
9019  }
9020  var returnVal = Promise$1.prototype['catch'].call(this, onRejected);
9021  return Worker.convert(returnVal, this);
9022};
9023
9024Worker.prototype.catchExternal = function catchExternal(onRejected) {
9025  // Call `catch` and return a standard promise (exits the Worker chain).
9026  return Promise$1.prototype['catch'].call(this, onRejected);
9027};
9028
9029Worker.prototype.error = function error(msg) {
9030  // Throw the error in the Promise chain.
9031  return this.then(function error_main() {
9032    throw new Error(msg);
9033  });
9034};
9035
9036/* ----- ALIASES ----- */
9037
9038Worker.prototype.using = Worker.prototype.set;
9039Worker.prototype.saveAs = Worker.prototype.save;
9040Worker.prototype.export = Worker.prototype.output;
9041Worker.prototype.run = Worker.prototype.then;
9042
9043// Import dependencies.
9044// Get dimensions of a PDF page, as determined by jsPDF.
9045jspdf_min.getPageSize = function (orientation, unit, format) {
9046  // Decode options object
9047  if ((typeof orientation === 'undefined' ? 'undefined' : _typeof(orientation)) === 'object') {
9048    var options = orientation;
9049    orientation = options.orientation;
9050    unit = options.unit || unit;
9051    format = options.format || format;
9052  }
9053
9054  // Default options
9055  unit = unit || 'mm';
9056  format = format || 'a4';
9057  orientation = ('' + (orientation || 'P')).toLowerCase();
9058  var format_as_string = ('' + format).toLowerCase();
9059
9060  // Size in pt of various paper formats
9061  var pageFormats = {
9062    'a0': [2383.94, 3370.39], 'a1': [1683.78, 2383.94],
9063    'a2': [1190.55, 1683.78], 'a3': [841.89, 1190.55],
9064    'a4': [595.28, 841.89], 'a5': [419.53, 595.28],
9065    'a6': [297.64, 419.53], 'a7': [209.76, 297.64],
9066    'a8': [147.40, 209.76], 'a9': [104.88, 147.40],
9067    'a10': [73.70, 104.88], 'b0': [2834.65, 4008.19],
9068    'b1': [2004.09, 2834.65], 'b2': [1417.32, 2004.09],
9069    'b3': [1000.63, 1417.32], 'b4': [708.66, 1000.63],
9070    'b5': [498.90, 708.66], 'b6': [354.33, 498.90],
9071    'b7': [249.45, 354.33], 'b8': [175.75, 249.45],
9072    'b9': [124.72, 175.75], 'b10': [87.87, 124.72],
9073    'c0': [2599.37, 3676.54], 'c1': [1836.85, 2599.37],
9074    'c2': [1298.27, 1836.85], 'c3': [918.43, 1298.27],
9075    'c4': [649.13, 918.43], 'c5': [459.21, 649.13],
9076    'c6': [323.15, 459.21], 'c7': [229.61, 323.15],
9077    'c8': [161.57, 229.61], 'c9': [113.39, 161.57],
9078    'c10': [79.37, 113.39], 'dl': [311.81, 623.62],
9079    'letter': [612, 792],
9080    'government-letter': [576, 756],
9081    'legal': [612, 1008],
9082    'junior-legal': [576, 360],
9083    'ledger': [1224, 792],
9084    'tabloid': [792, 1224],
9085    'credit-card': [153, 243]
9086  };
9087
9088  // Unit conversion
9089  switch (unit) {
9090    case 'pt':
9091      var k = 1;break;
9092    case 'mm':
9093      var k = 72 / 25.4;break;
9094    case 'cm':
9095      var k = 72 / 2.54;break;
9096    case 'in':
9097      var k = 72;break;
9098    case 'px':
9099      var k = 72 / 96;break;
9100    case 'pc':
9101      var k = 12;break;
9102    case 'em':
9103      var k = 12;break;
9104    case 'ex':
9105      var k = 6;break;
9106    default:
9107      throw 'Invalid unit: ' + unit;
9108  }
9109
9110  // Dimensions are stored as user units and converted to points on output
9111  if (pageFormats.hasOwnProperty(format_as_string)) {
9112    var pageHeight = pageFormats[format_as_string][1] / k;
9113    var pageWidth = pageFormats[format_as_string][0] / k;
9114  } else {
9115    try {
9116      var pageHeight = format[1];
9117      var pageWidth = format[0];
9118    } catch (err) {
9119      throw new Error('Invalid format: ' + format);
9120    }
9121  }
9122
9123  // Handle page orientation
9124  if (orientation === 'p' || orientation === 'portrait') {
9125    orientation = 'p';
9126    if (pageWidth > pageHeight) {
9127      var tmp = pageWidth;
9128      pageWidth = pageHeight;
9129      pageHeight = tmp;
9130    }
9131  } else if (orientation === 'l' || orientation === 'landscape') {
9132    orientation = 'l';
9133    if (pageHeight > pageWidth) {
9134      var tmp = pageWidth;
9135      pageWidth = pageHeight;
9136      pageHeight = tmp;
9137    }
9138  } else {
9139    throw 'Invalid orientation: ' + orientation;
9140  }
9141
9142  // Return information (k is the unit conversion ratio from pts)
9143  var info = { 'width': pageWidth, 'height': pageHeight, 'unit': unit, 'k': k };
9144  return info;
9145};
9146
9147/* Pagebreak plugin:
9148
9149    Adds page-break functionality to the html2pdf library. Page-breaks can be
9150    enabled by CSS styles, set on individual elements using selectors, or
9151    avoided from breaking inside all elements.
9152
9153    Options on the `opt.pagebreak` object:
9154
9155    mode:   String or array of strings: 'avoid-all', 'css', and/or 'legacy'
9156            Default: ['css', 'legacy']
9157
9158    before: String or array of CSS selectors for which to add page-breaks
9159            before each element. Can be a specific element with an ID
9160            ('#myID'), all elements of a type (e.g. 'img'), all of a class
9161            ('.myClass'), or even '*' to match every element.
9162
9163    after:  Like 'before', but adds a page-break immediately after the element.
9164
9165    avoid:  Like 'before', but avoids page-breaks on these elements. You can
9166            enable this feature on every element using the 'avoid-all' mode.
9167*/
9168
9169// Refs to original functions.
9170var orig = {
9171  toContainer: Worker.prototype.toContainer
9172};
9173
9174// Add pagebreak default options to the Worker template.
9175Worker.template.opt.pagebreak = {
9176  mode: ['css', 'legacy'],
9177  before: [],
9178  after: [],
9179  avoid: []
9180};
9181
9182Worker.prototype.toContainer = function toContainer() {
9183  return orig.toContainer.call(this).then(function toContainer_pagebreak() {
9184    // Setup root element and inner page height.
9185    var root = this.prop.container;
9186    var pxPageHeight = this.prop.pageSize.inner.px.height;
9187
9188    // Check all requested modes.
9189    var modeSrc = [].concat(this.opt.pagebreak.mode);
9190    var mode = {
9191      avoidAll: modeSrc.indexOf('avoid-all') !== -1,
9192      css: modeSrc.indexOf('css') !== -1,
9193      legacy: modeSrc.indexOf('legacy') !== -1
9194    };
9195
9196    // Get arrays of all explicitly requested elements.
9197    var select = {};
9198    var self = this;
9199    ['before', 'after', 'avoid'].forEach(function (key) {
9200      var all = mode.avoidAll && key === 'avoid';
9201      select[key] = all ? [] : [].concat(self.opt.pagebreak[key] || []);
9202      if (select[key].length > 0) {
9203        select[key] = Array.prototype.slice.call(root.querySelectorAll(select[key].join(', ')));
9204      }
9205    });
9206
9207    // Get all legacy page-break elements.
9208    var legacyEls = root.querySelectorAll('.html2pdf__page-break');
9209    legacyEls = Array.prototype.slice.call(legacyEls);
9210
9211    // Loop through all elements.
9212    var els = root.querySelectorAll('*');
9213    Array.prototype.forEach.call(els, function pagebreak_loop(el) {
9214      // Setup pagebreak rules based on legacy and avoidAll modes.
9215      var rules = {
9216        before: false,
9217        after: mode.legacy && legacyEls.indexOf(el) !== -1,
9218        avoid: mode.avoidAll
9219      };
9220
9221      // Add rules for css mode.
9222      if (mode.css) {
9223        // TODO: Check if this is valid with iFrames.
9224        var style = window.getComputedStyle(el);
9225        // TODO: Handle 'left' and 'right' correctly.
9226        // TODO: Add support for 'avoid' on breakBefore/After.
9227        var breakOpt = ['always', 'page', 'left', 'right'];
9228        var avoidOpt = ['avoid', 'avoid-page'];
9229        rules = {
9230          before: rules.before || breakOpt.indexOf(style.breakBefore || style.pageBreakBefore) !== -1,
9231          after: rules.after || breakOpt.indexOf(style.breakAfter || style.pageBreakAfter) !== -1,
9232          avoid: rules.avoid || avoidOpt.indexOf(style.breakInside || style.pageBreakInside) !== -1
9233        };
9234      }
9235
9236      // Add rules for explicit requests.
9237      Object.keys(rules).forEach(function (key) {
9238        rules[key] = rules[key] || select[key].indexOf(el) !== -1;
9239      });
9240
9241      // Get element position on the screen.
9242      // TODO: Subtract the top of the container from clientRect.top/bottom?
9243      var clientRect = el.getBoundingClientRect();
9244
9245      // Avoid: Check if a break happens mid-element.
9246      if (rules.avoid && !rules.before) {
9247        var startPage = Math.floor(clientRect.top / pxPageHeight);
9248        var endPage = Math.floor(clientRect.bottom / pxPageHeight);
9249        var nPages = Math.abs(clientRect.bottom - clientRect.top) / pxPageHeight;
9250
9251        // Turn on rules.before if the el is broken and is at most one page long.
9252        if (endPage !== startPage && nPages <= 1) {
9253          rules.before = true;
9254        }
9255      }
9256
9257      // Before: Create a padding div to push the element to the next page.
9258      if (rules.before) {
9259        var pad = createElement('div', { style: {
9260            display: 'block',
9261            height: pxPageHeight - clientRect.top % pxPageHeight + 'px'
9262          } });
9263        el.parentNode.insertBefore(pad, el);
9264      }
9265
9266      // After: Create a padding div to fill the remaining page.
9267      if (rules.after) {
9268        var pad = createElement('div', { style: {
9269            display: 'block',
9270            height: pxPageHeight - clientRect.bottom % pxPageHeight + 'px'
9271          } });
9272        el.parentNode.insertBefore(pad, el.nextSibling);
9273      }
9274    });
9275  });
9276};
9277
9278// Add hyperlink functionality to the PDF creation.
9279
9280// Main link array, and refs to original functions.
9281var linkInfo = [];
9282var orig$1 = {
9283  toContainer: Worker.prototype.toContainer,
9284  toPdf: Worker.prototype.toPdf
9285};
9286
9287Worker.prototype.toContainer = function toContainer() {
9288  return orig$1.toContainer.call(this).then(function toContainer_hyperlink() {
9289    // Retrieve hyperlink info if the option is enabled.
9290    if (this.opt.enableLinks) {
9291      // Find all anchor tags and get the container's bounds for reference.
9292      var container = this.prop.container;
9293      var links = container.querySelectorAll('a');
9294      var containerRect = unitConvert(container.getBoundingClientRect(), this.prop.pageSize.k);
9295      linkInfo = [];
9296
9297      // Loop through each anchor tag.
9298      Array.prototype.forEach.call(links, function (link) {
9299        // Treat each client rect as a separate link (for text-wrapping).
9300        var clientRects = link.getClientRects();
9301        for (var i = 0; i < clientRects.length; i++) {
9302          var clientRect = unitConvert(clientRects[i], this.prop.pageSize.k);
9303          clientRect.left -= containerRect.left;
9304          clientRect.top -= containerRect.top;
9305
9306          var page = Math.floor(clientRect.top / this.prop.pageSize.inner.height) + 1;
9307          var top = this.opt.margin[0] + clientRect.top % this.prop.pageSize.inner.height;
9308          var left = this.opt.margin[1] + clientRect.left;
9309
9310          linkInfo.push({ page: page, top: top, left: left, clientRect: clientRect, link: link });
9311        }
9312      }, this);
9313    }
9314  });
9315};
9316
9317Worker.prototype.toPdf = function toPdf() {
9318  return orig$1.toPdf.call(this).then(function toPdf_hyperlink() {
9319    // Add hyperlinks if the option is enabled.
9320    if (this.opt.enableLinks) {
9321      // Attach each anchor tag based on info from toContainer().
9322      linkInfo.forEach(function (l) {
9323        this.prop.pdf.setPage(l.page);
9324        this.prop.pdf.link(l.left, l.top, l.clientRect.width, l.clientRect.height, { url: l.link.href });
9325      }, this);
9326
9327      // Reset the active page of the PDF to the final page.
9328      var nPages = this.prop.pdf.internal.getNumberOfPages();
9329      this.prop.pdf.setPage(nPages);
9330    }
9331  });
9332};
9333
9334/**
9335 * Generate a PDF from an HTML element or string using html2canvas and jsPDF.
9336 *
9337 * @param {Element|string} source The source element or HTML string.
9338 * @param {Object=} opt An object of optional settings: 'margin', 'filename',
9339 *    'image' ('type' and 'quality'), and 'html2canvas' / 'jspdf', which are
9340 *    sent as settings to their corresponding functions.
9341 */
9342var html2pdf = function html2pdf(src, opt) {
9343  // Create a new worker with the given options.
9344  var worker = new html2pdf.Worker(opt);
9345
9346  if (src) {
9347    // If src is specified, perform the traditional 'simple' operation.
9348    return worker.from(src).save();
9349  } else {
9350    // Otherwise, return the worker for new Promise-based operation.
9351    return worker;
9352  }
9353};
9354html2pdf.Worker = Worker;
9355
9356return html2pdf;
9357
9358})));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.