canvas-tools.src.min.js 58 KB

1
  1. function RGBColor(g){this.ok=false;if(g.charAt(0)=="#"){g=g.substr(1,6)}g=g.replace(/ /g,"");g=g.toLowerCase();var a={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:"90ee90",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 c in a){if(g==c){g=a[c]}}var h=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(j){return[parseInt(j[1]),parseInt(j[2]),parseInt(j[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:["#00ff00","336699"],process:function(j){return[parseInt(j[1],16),parseInt(j[2],16),parseInt(j[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(j){return[parseInt(j[1]+j[1],16),parseInt(j[2]+j[2],16),parseInt(j[3]+j[3],16)]}}];for(var b=0;b<h.length;b++){var e=h[b].re;var d=h[b].process;var f=e.exec(g);if(f){channels=d(f);this.r=channels[0];this.g=channels[1];this.b=channels[2];this.ok=true}}this.r=(this.r<0||isNaN(this.r))?0:((this.r>255)?255:this.r);this.g=(this.g<0||isNaN(this.g))?0:((this.g>255)?255:this.g);this.b=(this.b<0||isNaN(this.b))?0:((this.b>255)?255:this.b);this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"};this.toHex=function(){var l=this.r.toString(16);var k=this.g.toString(16);var j=this.b.toString(16);if(l.length==1){l="0"+l}if(k.length==1){k="0"+k}if(j.length==1){j="0"+j}return"#"+l+k+j};this.getHelpXML=function(){var m=new Array();for(var o=0;o<h.length;o++){var l=h[o].example;for(var n=0;n<l.length;n++){m[m.length]=l[n]}}for(var t in a){m[m.length]=t}var p=document.createElement("ul");p.setAttribute("id","rgbcolor-examples");for(var o=0;o<m.length;o++){try{var q=document.createElement("li");var s=new RGBColor(m[o]);var u=document.createElement("div");u.style.cssText="margin: 3px; border: 1px solid black; background:"+s.toHex()+"; color:"+s.toHex();u.appendChild(document.createTextNode("test"));var k=document.createTextNode(" "+m[o]+" -> "+s.toRGB()+" -> "+s.toHex());q.appendChild(u);q.appendChild(k);p.appendChild(q)}catch(r){}}return p}}if(!window.console){window.console={};window.console.log=function(a){};window.console.dir=function(a){}}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(b){for(var a=0;a<this.length;a++){if(this[a]==b){return a}}return -1}}(function(){this.canvg=function(j,m,b){if(j==null&&m==null&&b==null){var e=document.getElementsByTagName("svg");for(var g=0;g<e.length;g++){var f=e[g];var k=document.createElement("canvas");k.width=f.clientWidth;k.height=f.clientHeight;f.parentNode.insertBefore(k,f);f.parentNode.removeChild(f);var d=document.createElement("div");d.appendChild(f);canvg(k,d.innerHTML)}return}b=b||{};if(typeof j=="string"){j=document.getElementById(j)}var h;if(j.svg==null){h=a();j.svg=h}else{h=j.svg;h.stop()}h.opts=b;var l=j.getContext("2d");if(typeof(m.documentElement)!="undefined"){h.loadXmlDoc(l,m)}else{if(m.substr(0,1)=="<"){h.loadXml(l,m)}else{h.load(l,m)}}};function a(){var b={};b.FRAMERATE=30;b.MAX_VIRTUAL_PIXELS=30000;b.init=function(c){b.Definitions={};b.Styles={};b.Animations=[];b.Images=[];b.ctx=c;b.ViewPort=new (function(){this.viewPorts=[];this.Clear=function(){this.viewPorts=[]};this.SetCurrent=function(e,d){this.viewPorts.push({width:e,height:d})};this.RemoveCurrent=function(){this.viewPorts.pop()};this.Current=function(){return this.viewPorts[this.viewPorts.length-1]};this.width=function(){return this.Current().width};this.height=function(){return this.Current().height};this.ComputeSize=function(e){if(e!=null&&typeof(e)=="number"){return e}if(e=="x"){return this.width()}if(e=="y"){return this.height()}return Math.sqrt(Math.pow(this.width(),2)+Math.pow(this.height(),2))/Math.sqrt(2)}})};b.init();b.ImagesLoaded=function(){for(var c=0;c<b.Images.length;c++){if(!b.Images[c].loaded){return false}}return true};b.trim=function(c){return c.replace(/^\s+|\s+$/g,"")};b.compressSpaces=function(c){return c.replace(/[\s\r\t\n]+/gm," ")};b.ajax=function(d){var c;if(window.XMLHttpRequest){c=new XMLHttpRequest()}else{c=new ActiveXObject("Microsoft.XMLHTTP")}if(c){c.open("GET",d,false);c.send(null);return c.responseText}return null};b.parseXml=function(c){if(window.DOMParser){var e=new DOMParser();return e.parseFromString(c,"text/xml")}else{c=c.replace(/<!DOCTYPE svg[^>]*>/,"");var d=new ActiveXObject("Microsoft.XMLDOM");d.async="false";d.loadXML(c);return d}};b.Property=function(c,e){this.name=c;this.value=e;this.hasValue=function(){return(this.value!=null&&this.value!=="")};this.numValue=function(){if(!this.hasValue()){return 0}var f=parseFloat(this.value);if((this.value+"").match(/%$/)){f=f/100}return f};this.valueOrDefault=function(f){if(this.hasValue()){return this.value}return f};this.numValueOrDefault=function(f){if(this.hasValue()){return this.numValue()}return f};var d=this;this.Color={addOpacity:function(g){var h=d.value;if(g!=null&&g!=""){var f=new RGBColor(d.value);if(f.ok){h="rgba("+f.r+", "+f.g+", "+f.b+", "+g+")"}}return new b.Property(d.name,h)}};this.Definition={getDefinition:function(){var f=d.value.replace(/^(url\()?#([^\)]+)\)?$/,"$2");return b.Definitions[f]},isUrl:function(){return d.value.indexOf("url(")==0},getFillStyle:function(g){var f=this.getDefinition();if(f!=null&&f.createGradient){return f.createGradient(b.ctx,g)}if(f!=null&&f.createPattern){return f.createPattern(b.ctx,g)}return null}};this.Length={DPI:function(f){return 96},EM:function(h){var f=12;var g=new b.Property("fontSize",b.Font.Parse(b.ctx.font).fontSize);if(g.hasValue()){f=g.Length.toPixels(h)}return f},toPixels:function(g){if(!d.hasValue()){return 0}var f=d.value+"";if(f.match(/em$/)){return d.numValue()*this.EM(g)}if(f.match(/ex$/)){return d.numValue()*this.EM(g)/2}if(f.match(/px$/)){return d.numValue()}if(f.match(/pt$/)){return d.numValue()*1.25}if(f.match(/pc$/)){return d.numValue()*15}if(f.match(/cm$/)){return d.numValue()*this.DPI(g)/2.54}if(f.match(/mm$/)){return d.numValue()*this.DPI(g)/25.4}if(f.match(/in$/)){return d.numValue()*this.DPI(g)}if(f.match(/%$/)){return d.numValue()*b.ViewPort.ComputeSize(g)}return d.numValue()}};this.Time={toMilliseconds:function(){if(!d.hasValue()){return 0}var f=d.value+"";if(f.match(/s$/)){return d.numValue()*1000}if(f.match(/ms$/)){return d.numValue()}return d.numValue()}};this.Angle={toRadians:function(){if(!d.hasValue()){return 0}var f=d.value+"";if(f.match(/deg$/)){return d.numValue()*(Math.PI/180)}if(f.match(/grad$/)){return d.numValue()*(Math.PI/200)}if(f.match(/rad$/)){return d.numValue()}return d.numValue()*(Math.PI/180)}}};b.Font=new (function(){this.Styles=["normal","italic","oblique","inherit"];this.Variants=["normal","small-caps","inherit"];this.Weights=["normal","bold","bolder","lighter","100","200","300","400","500","600","700","800","900","inherit"];this.CreateFont=function(l,h,e,k,d,g){var j=g!=null?this.Parse(g):this.CreateFont("","","","","",b.ctx.font);return{fontFamily:d||j.fontFamily,fontSize:k||j.fontSize,fontStyle:l||j.fontStyle,fontWeight:e||j.fontWeight,fontVariant:h||j.fontVariant,toString:function(){return[this.fontStyle,this.fontVariant,this.fontWeight,this.fontSize,this.fontFamily].join(" ")}}};var c=this;this.Parse=function(h){var j={};var k=b.trim(b.compressSpaces(h||"")).split(" ");var l={fontSize:false,fontStyle:false,fontWeight:false,fontVariant:false};var e="";for(var g=0;g<k.length;g++){if(!l.fontStyle&&c.Styles.indexOf(k[g])!=-1){if(k[g]!="inherit"){j.fontStyle=k[g]}l.fontStyle=true}else{if(!l.fontVariant&&c.Variants.indexOf(k[g])!=-1){if(k[g]!="inherit"){j.fontVariant=k[g]}l.fontStyle=l.fontVariant=true}else{if(!l.fontWeight&&c.Weights.indexOf(k[g])!=-1){if(k[g]!="inherit"){j.fontWeight=k[g]}l.fontStyle=l.fontVariant=l.fontWeight=true}else{if(!l.fontSize){if(k[g]!="inherit"){j.fontSize=k[g].split("/")[0]}l.fontStyle=l.fontVariant=l.fontWeight=l.fontSize=true}else{if(k[g]!="inherit"){e+=k[g]}}}}}}if(e!=""){j.fontFamily=e}return j}});b.ToNumberArray=function(e){var c=b.trim(b.compressSpaces((e||"").replace(/,/g," "))).split(" ");for(var d=0;d<c.length;d++){c[d]=parseFloat(c[d])}return c};b.Point=function(c,d){this.x=c;this.y=d;this.angleTo=function(e){return Math.atan2(e.y-this.y,e.x-this.x)};this.applyTransform=function(e){var f=this.x*e[0]+this.y*e[2]+e[4];var g=this.x*e[1]+this.y*e[3]+e[5];this.x=f;this.y=g}};b.CreatePoint=function(d){var c=b.ToNumberArray(d);return new b.Point(c[0],c[1])};b.CreatePath=function(e){var c=b.ToNumberArray(e);var f=[];for(var d=0;d<c.length;d+=2){f.push(new b.Point(c[d],c[d+1]))}return f};b.BoundingBox=function(d,f,c,e){this.x1=Number.NaN;this.y1=Number.NaN;this.x2=Number.NaN;this.y2=Number.NaN;this.x=function(){return this.x1};this.y=function(){return this.y1};this.width=function(){return this.x2-this.x1};this.height=function(){return this.y2-this.y1};this.addPoint=function(g,h){if(g!=null){if(isNaN(this.x1)||isNaN(this.x2)){this.x1=g;this.x2=g}if(g<this.x1){this.x1=g}if(g>this.x2){this.x2=g}}if(h!=null){if(isNaN(this.y1)||isNaN(this.y2)){this.y1=h;this.y2=h}if(h<this.y1){this.y1=h}if(h>this.y2){this.y2=h}}};this.addX=function(g){this.addPoint(g,null)};this.addY=function(g){this.addPoint(null,g)};this.addBoundingBox=function(g){this.addPoint(g.x1,g.y1);this.addPoint(g.x2,g.y2)};this.addQuadraticCurve=function(m,l,h,g,o,n){var k=m+2/3*(h-m);var j=l+2/3*(g-l);var q=k+1/3*(o-m);var p=j+1/3*(n-l);this.addBezierCurve(m,l,k,q,j,p,o,n)};this.addBezierCurve=function(v,u,l,j,q,o,x,w){var m=[v,u],k=[l,j],h=[q,o],g=[x,w];this.addPoint(m[0],m[1]);this.addPoint(g[0],g[1]);for(i=0;i<=1;i++){var y=function(C){return Math.pow(1-C,3)*m[i]+3*Math.pow(1-C,2)*C*k[i]+3*(1-C)*Math.pow(C,2)*h[i]+Math.pow(C,3)*g[i]};var A=6*m[i]-12*k[i]+6*h[i];var B=-3*m[i]+9*k[i]-9*h[i]+3*g[i];var z=3*k[i]-3*m[i];if(B==0){if(A==0){continue}var s=-z/A;if(0<s&&s<1){if(i==0){this.addX(y(s))}if(i==1){this.addY(y(s))}}continue}var n=Math.pow(A,2)-4*z*B;if(n<0){continue}var r=(-A+Math.sqrt(n))/(2*B);if(0<r&&r<1){if(i==0){this.addX(y(r))}if(i==1){this.addY(y(r))}}var p=(-A-Math.sqrt(n))/(2*B);if(0<p&&p<1){if(i==0){this.addX(y(p))}if(i==1){this.addY(y(p))}}}};this.isPointInBox=function(g,h){return(this.x1<=g&&g<=this.x2&&this.y1<=h&&h<=this.y2)};this.addPoint(d,f);this.addPoint(c,e)};b.Transform=function(c){var h=this;this.Type={};this.Type.translate=function(k){this.p=b.CreatePoint(k);this.apply=function(l){l.translate(this.p.x||0,this.p.y||0)};this.applyToPoint=function(l){l.applyTransform([1,0,0,1,this.p.x||0,this.p.y||0])}};this.Type.rotate=function(l){var k=b.ToNumberArray(l);this.angle=new b.Property("angle",k[0]);this.cx=k[1]||0;this.cy=k[2]||0;this.apply=function(m){m.translate(this.cx,this.cy);m.rotate(this.angle.Angle.toRadians());m.translate(-this.cx,-this.cy)};this.applyToPoint=function(n){var m=this.angle.Angle.toRadians();n.applyTransform([1,0,0,1,this.p.x||0,this.p.y||0]);n.applyTransform([Math.cos(m),Math.sin(m),-Math.sin(m),Math.cos(m),0,0]);n.applyTransform([1,0,0,1,-this.p.x||0,-this.p.y||0])}};this.Type.scale=function(k){this.p=b.CreatePoint(k);this.apply=function(l){l.scale(this.p.x||1,this.p.y||this.p.x||1)};this.applyToPoint=function(l){l.applyTransform([this.p.x||0,0,0,this.p.y||0,0,0])}};this.Type.matrix=function(k){this.m=b.ToNumberArray(k);this.apply=function(l){l.transform(this.m[0],this.m[1],this.m[2],this.m[3],this.m[4],this.m[5])};this.applyToPoint=function(l){l.applyTransform(this.m)}};this.Type.SkewBase=function(k){this.base=h.Type.matrix;this.base(k);this.angle=new b.Property("angle",k)};this.Type.SkewBase.prototype=new this.Type.matrix;this.Type.skewX=function(k){this.base=h.Type.SkewBase;this.base(k);this.m=[1,0,Math.tan(this.angle.Angle.toRadians()),1,0,0]};this.Type.skewX.prototype=new this.Type.SkewBase;this.Type.skewY=function(k){this.base=h.Type.SkewBase;this.base(k);this.m=[1,Math.tan(this.angle.Angle.toRadians()),0,1,0,0]};this.Type.skewY.prototype=new this.Type.SkewBase;this.transforms=[];this.apply=function(k){for(var l=0;l<this.transforms.length;l++){this.transforms[l].apply(k)}};this.applyToPoint=function(l){for(var k=0;k<this.transforms.length;k++){this.transforms[k].applyToPoint(l)}};var j=b.trim(b.compressSpaces(c)).split(/\s(?=[a-z])/);for(var e=0;e<j.length;e++){var g=j[e].split("(")[0];var f=j[e].split("(")[1].replace(")","");var d=new this.Type[g](f);this.transforms.push(d)}};b.AspectRatio=function(s,q,d,k,r,c,g,f,p,o){q=b.compressSpaces(q);q=q.replace(/^defer\s/,"");var j=q.split(" ")[0]||"xMidYMid";var e=q.split(" ")[1]||"meet";var n=d/k;var m=r/c;var h=Math.min(n,m);var l=Math.max(n,m);if(e=="meet"){k*=h;c*=h}if(e=="slice"){k*=l;c*=l}p=new b.Property("refX",p);o=new b.Property("refY",o);if(p.hasValue()&&o.hasValue()){s.translate(-h*p.Length.toPixels("x"),-h*o.Length.toPixels("y"))}else{if(j.match(/^xMid/)&&((e=="meet"&&h==m)||(e=="slice"&&l==m))){s.translate(d/2-k/2,0)}if(j.match(/YMid$/)&&((e=="meet"&&h==n)||(e=="slice"&&l==n))){s.translate(0,r/2-c/2)}if(j.match(/^xMax/)&&((e=="meet"&&h==m)||(e=="slice"&&l==m))){s.translate(d-k,0)}if(j.match(/YMax$/)&&((e=="meet"&&h==n)||(e=="slice"&&l==n))){s.translate(0,r-c)}}if(j=="none"){s.scale(n,m)}else{if(e=="meet"){s.scale(h,h)}else{if(e=="slice"){s.scale(l,l)}}}s.translate(g==null?0:-g,f==null?0:-f)};b.Element={};b.Element.ElementBase=function(g){this.attributes={};this.styles={};this.children=[];this.attribute=function(o,p){var j=this.attributes[o];if(j!=null){return j}j=new b.Property(o,"");if(p==true){this.attributes[o]=j}return j};this.style=function(o,u){var q=this.styles[o];if(q!=null){return q}var j=this.attribute(o);if(j!=null&&j.hasValue()){return j}var r=this.parent;if(r!=null){var t=r.style(o);if(t!=null&&t.hasValue()){return t}}q=new b.Property(o,"");if(u==true){this.styles[o]=q}return q};this.render=function(o){if(this.style("display").value=="none"){return}if(this.attribute("visibility").value=="hidden"){return}o.save();this.setContext(o);if(this.attribute("mask").hasValue()){var j=this.attribute("mask").Definition.getDefinition();if(j!=null){j.apply(o,this)}}else{if(this.style("filter").hasValue()){var p=this.style("filter").Definition.getDefinition();if(p!=null){p.apply(o,this)}}else{this.renderChildren(o)}}this.clearContext(o);o.restore()};this.setContext=function(j){};this.clearContext=function(j){};this.renderChildren=function(j){for(var o=0;o<this.children.length;o++){this.children[o].render(j)}};this.addChild=function(o,j){var p=o;if(j){p=b.CreateElement(o)}p.parent=this;this.children.push(p)};if(g!=null&&g.nodeType==1){for(var l=0;l<g.childNodes.length;l++){var c=g.childNodes[l];if(c.nodeType==1){this.addChild(c,true)}}for(var l=0;l<g.attributes.length;l++){var f=g.attributes[l];this.attributes[f.nodeName]=new b.Property(f.nodeName,f.nodeValue)}var n=b.Styles[g.nodeName];if(n!=null){for(var e in n){this.styles[e]=n[e]}}if(this.attribute("class").hasValue()){var h=b.compressSpaces(this.attribute("class").value).split(" ");for(var k=0;k<h.length;k++){n=b.Styles["."+h[k]];if(n!=null){for(var e in n){this.styles[e]=n[e]}}n=b.Styles[g.nodeName+"."+h[k]];if(n!=null){for(var e in n){this.styles[e]=n[e]}}}}if(this.attribute("style").hasValue()){var n=this.attribute("style").value.split(";");for(var l=0;l<n.length;l++){if(b.trim(n[l])!=""){var d=n[l].split(":");var e=b.trim(d[0]);var m=b.trim(d[1]);this.styles[e]=new b.Property(e,m)}}}if(this.attribute("id").hasValue()){if(b.Definitions[this.attribute("id").value]==null){b.Definitions[this.attribute("id").value]=this}}}};b.Element.RenderedElementBase=function(c){this.base=b.Element.ElementBase;this.base(c);this.setContext=function(e){if(this.style("fill").Definition.isUrl()){var d=this.style("fill").Definition.getFillStyle(this);if(d!=null){e.fillStyle=d}}else{if(this.style("fill").hasValue()){var f=this.style("fill");if(this.style("fill-opacity").hasValue()){f=f.Color.addOpacity(this.style("fill-opacity").value)}e.fillStyle=(f.value=="none"?"rgba(0,0,0,0)":f.value)}}if(this.style("stroke").Definition.isUrl()){var d=this.style("stroke").Definition.getFillStyle(this);if(d!=null){e.strokeStyle=d}}else{if(this.style("stroke").hasValue()){var j=this.style("stroke");if(this.style("stroke-opacity").hasValue()){j=j.Color.addOpacity(this.style("stroke-opacity").value)}e.strokeStyle=(j.value=="none"?"rgba(0,0,0,0)":j.value)}}if(this.style("stroke-width").hasValue()){e.lineWidth=this.style("stroke-width").Length.toPixels()}if(this.style("stroke-linecap").hasValue()){e.lineCap=this.style("stroke-linecap").value}if(this.style("stroke-linejoin").hasValue()){e.lineJoin=this.style("stroke-linejoin").value}if(this.style("stroke-miterlimit").hasValue()){e.miterLimit=this.style("stroke-miterlimit").value}if(typeof(e.font)!="undefined"){e.font=b.Font.CreateFont(this.style("font-style").value,this.style("font-variant").value,this.style("font-weight").value,this.style("font-size").hasValue()?this.style("font-size").Length.toPixels()+"px":"",this.style("font-family").value).toString()}if(this.attribute("transform").hasValue()){var g=new b.Transform(this.attribute("transform").value);g.apply(e)}if(this.attribute("clip-path").hasValue()){var h=this.attribute("clip-path").Definition.getDefinition();if(h!=null){h.apply(e)}}if(this.style("opacity").hasValue()){e.globalAlpha=this.style("opacity").numValue()}}};b.Element.RenderedElementBase.prototype=new b.Element.ElementBase;b.Element.PathElementBase=function(c){this.base=b.Element.RenderedElementBase;this.base(c);this.path=function(d){if(d!=null){d.beginPath()}return new b.BoundingBox()};this.renderChildren=function(e){this.path(e);b.Mouse.checkPath(this,e);if(e.fillStyle!=""){e.fill()}if(e.strokeStyle!=""){e.stroke()}var g=this.getMarkers();if(g!=null){if(this.style("marker-start").Definition.isUrl()){var d=this.style("marker-start").Definition.getDefinition();d.render(e,g[0][0],g[0][1])}if(this.style("marker-mid").Definition.isUrl()){var d=this.style("marker-mid").Definition.getDefinition();for(var f=1;f<g.length-1;f++){d.render(e,g[f][0],g[f][1])}}if(this.style("marker-end").Definition.isUrl()){var d=this.style("marker-end").Definition.getDefinition();d.render(e,g[g.length-1][0],g[g.length-1][1])}}};this.getBoundingBox=function(){return this.path()};this.getMarkers=function(){return null}};b.Element.PathElementBase.prototype=new b.Element.RenderedElementBase;b.Element.svg=function(c){this.base=b.Element.RenderedElementBase;this.base(c);this.baseClearContext=this.clearContext;this.clearContext=function(d){this.baseClearContext(d);b.ViewPort.RemoveCurrent()};this.baseSetContext=this.setContext;this.setContext=function(g){g.strokeStyle="rgba(0,0,0,0)";g.lineCap="butt";g.lineJoin="miter";g.miterLimit=4;this.baseSetContext(g);if(this.attribute("x").hasValue()&&this.attribute("y").hasValue()){g.translate(this.attribute("x").Length.toPixels("x"),this.attribute("y").Length.toPixels("y"))}var h=b.ViewPort.width();var f=b.ViewPort.height();if(typeof(this.root)=="undefined"&&this.attribute("width").hasValue()&&this.attribute("height").hasValue()){h=this.attribute("width").Length.toPixels("x");f=this.attribute("height").Length.toPixels("y");var e=0;var l=0;if(this.attribute("refX").hasValue()&&this.attribute("refY").hasValue()){e=-this.attribute("refX").Length.toPixels("x");l=-this.attribute("refY").Length.toPixels("y")}g.beginPath();g.moveTo(e,l);g.lineTo(h,l);g.lineTo(h,f);g.lineTo(e,f);g.closePath();g.clip()}b.ViewPort.SetCurrent(h,f);if(this.attribute("viewBox").hasValue()){var j=b.ToNumberArray(this.attribute("viewBox").value);var d=j[0];var k=j[1];h=j[2];f=j[3];b.AspectRatio(g,this.attribute("preserveAspectRatio").value,b.ViewPort.width(),h,b.ViewPort.height(),f,d,k,this.attribute("refX").value,this.attribute("refY").value);b.ViewPort.RemoveCurrent();b.ViewPort.SetCurrent(j[2],j[3])}}};b.Element.svg.prototype=new b.Element.RenderedElementBase;b.Element.rect=function(c){this.base=b.Element.PathElementBase;this.base(c);this.path=function(f){var e=this.attribute("x").Length.toPixels("x");var k=this.attribute("y").Length.toPixels("y");var g=this.attribute("width").Length.toPixels("x");var d=this.attribute("height").Length.toPixels("y");var j=this.attribute("rx").Length.toPixels("x");var h=this.attribute("ry").Length.toPixels("y");if(this.attribute("rx").hasValue()&&!this.attribute("ry").hasValue()){h=j}if(this.attribute("ry").hasValue()&&!this.attribute("rx").hasValue()){j=h}if(f!=null){f.beginPath();f.moveTo(e+j,k);f.lineTo(e+g-j,k);f.quadraticCurveTo(e+g,k,e+g,k+h);f.lineTo(e+g,k+d-h);f.quadraticCurveTo(e+g,k+d,e+g-j,k+d);f.lineTo(e+j,k+d);f.quadraticCurveTo(e,k+d,e,k+d-h);f.lineTo(e,k+h);f.quadraticCurveTo(e,k,e+j,k);f.closePath()}return new b.BoundingBox(e,k,e+g,k+d)}};b.Element.rect.prototype=new b.Element.PathElementBase;b.Element.circle=function(c){this.base=b.Element.PathElementBase;this.base(c);this.path=function(e){var d=this.attribute("cx").Length.toPixels("x");var g=this.attribute("cy").Length.toPixels("y");var f=this.attribute("r").Length.toPixels();if(e!=null){e.beginPath();e.arc(d,g,f,0,Math.PI*2,true);e.closePath()}return new b.BoundingBox(d-f,g-f,d+f,g+f)}};b.Element.circle.prototype=new b.Element.PathElementBase;b.Element.ellipse=function(c){this.base=b.Element.PathElementBase;this.base(c);this.path=function(e){var g=4*((Math.sqrt(2)-1)/3);var h=this.attribute("rx").Length.toPixels("x");var f=this.attribute("ry").Length.toPixels("y");var d=this.attribute("cx").Length.toPixels("x");var j=this.attribute("cy").Length.toPixels("y");if(e!=null){e.beginPath();e.moveTo(d,j-f);e.bezierCurveTo(d+(g*h),j-f,d+h,j-(g*f),d+h,j);e.bezierCurveTo(d+h,j+(g*f),d+(g*h),j+f,d,j+f);e.bezierCurveTo(d-(g*h),j+f,d-h,j+(g*f),d-h,j);e.bezierCurveTo(d-h,j-(g*f),d-(g*h),j-f,d,j-f);e.closePath()}return new b.BoundingBox(d-h,j-f,d+h,j+f)}};b.Element.ellipse.prototype=new b.Element.PathElementBase;b.Element.line=function(c){this.base=b.Element.PathElementBase;this.base(c);this.getPoints=function(){return[new b.Point(this.attribute("x1").Length.toPixels("x"),this.attribute("y1").Length.toPixels("y")),new b.Point(this.attribute("x2").Length.toPixels("x"),this.attribute("y2").Length.toPixels("y"))]};this.path=function(d){var e=this.getPoints();if(d!=null){d.beginPath();d.moveTo(e[0].x,e[0].y);d.lineTo(e[1].x,e[1].y)}return new b.BoundingBox(e[0].x,e[0].y,e[1].x,e[1].y)};this.getMarkers=function(){var e=this.getPoints();var d=e[0].angleTo(e[1]);return[[e[0],d],[e[1],d]]}};b.Element.line.prototype=new b.Element.PathElementBase;b.Element.polyline=function(c){this.base=b.Element.PathElementBase;this.base(c);this.points=b.CreatePath(this.attribute("points").value);this.path=function(d){var f=new b.BoundingBox(this.points[0].x,this.points[0].y);if(d!=null){d.beginPath();d.moveTo(this.points[0].x,this.points[0].y)}for(var e=1;e<this.points.length;e++){f.addPoint(this.points[e].x,this.points[e].y);if(d!=null){d.lineTo(this.points[e].x,this.points[e].y)}}return f};this.getMarkers=function(){var e=[];for(var d=0;d<this.points.length-1;d++){e.push([this.points[d],this.points[d].angleTo(this.points[d+1])])}e.push([this.points[this.points.length-1],e[e.length-1][1]]);return e}};b.Element.polyline.prototype=new b.Element.PathElementBase;b.Element.polygon=function(c){this.base=b.Element.polyline;this.base(c);this.basePath=this.path;this.path=function(d){var e=this.basePath(d);if(d!=null){d.lineTo(this.points[0].x,this.points[0].y);d.closePath()}return e}};b.Element.polygon.prototype=new b.Element.polyline;b.Element.path=function(c){this.base=b.Element.PathElementBase;this.base(c);var e=this.attribute("d").value;e=e.replace(/,/gm," ");e=e.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");e=e.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");e=e.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm,"$1 $2");e=e.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm,"$1 $2");e=e.replace(/([0-9])([+\-])/gm,"$1 $2");e=e.replace(/(\.[0-9]*)(\.)/gm,"$1 $2");e=e.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm,"$1 $3 $4 ");e=b.compressSpaces(e);e=b.trim(e);this.PathParser=new (function(f){this.tokens=f.split(" ");this.reset=function(){this.i=-1;this.command="";this.previousCommand="";this.start=new b.Point(0,0);this.control=new b.Point(0,0);this.current=new b.Point(0,0);this.points=[];this.angles=[]};this.isEnd=function(){return this.i>=this.tokens.length-1};this.isCommandOrEnd=function(){if(this.isEnd()){return true}return this.tokens[this.i+1].match(/^[A-Za-z]$/)!=null};this.isRelativeCommand=function(){return this.command==this.command.toLowerCase()};this.getToken=function(){this.i=this.i+1;return this.tokens[this.i]};this.getScalar=function(){return parseFloat(this.getToken())};this.nextCommand=function(){this.previousCommand=this.command;this.command=this.getToken()};this.getPoint=function(){var d=new b.Point(this.getScalar(),this.getScalar());return this.makeAbsolute(d)};this.getAsControlPoint=function(){var d=this.getPoint();this.control=d;return d};this.getAsCurrentPoint=function(){var d=this.getPoint();this.current=d;return d};this.getReflectedControlPoint=function(){if(this.previousCommand.toLowerCase()!="c"&&this.previousCommand.toLowerCase()!="s"){return this.current}var d=new b.Point(2*this.current.x-this.control.x,2*this.current.y-this.control.y);return d};this.makeAbsolute=function(d){if(this.isRelativeCommand()){d.x=this.current.x+d.x;d.y=this.current.y+d.y}return d};this.addMarker=function(g,h,d){if(d!=null&&this.angles.length>0&&this.angles[this.angles.length-1]==null){this.angles[this.angles.length-1]=this.points[this.points.length-1].angleTo(d)}this.addMarkerAngle(g,h==null?null:h.angleTo(g))};this.addMarkerAngle=function(g,d){this.points.push(g);this.angles.push(d)};this.getMarkerPoints=function(){return this.points};this.getMarkerAngles=function(){for(var g=0;g<this.angles.length;g++){if(this.angles[g]==null){for(var d=g+1;d<this.angles.length;d++){if(this.angles[d]!=null){this.angles[g]=this.angles[d];break}}}}return this.angles}})(e);this.path=function(H){var J=this.PathParser;J.reset();var t=new b.BoundingBox();if(H!=null){H.beginPath()}while(!J.isEnd()){J.nextCommand();switch(J.command.toUpperCase()){case"M":var F=J.getAsCurrentPoint();J.addMarker(F);t.addPoint(F.x,F.y);if(H!=null){H.moveTo(F.x,F.y)}J.start=J.current;while(!J.isCommandOrEnd()){var F=J.getAsCurrentPoint();J.addMarker(F,J.start);t.addPoint(F.x,F.y);if(H!=null){H.lineTo(F.x,F.y)}}break;case"L":while(!J.isCommandOrEnd()){var M=J.current;var F=J.getAsCurrentPoint();J.addMarker(F,M);t.addPoint(F.x,F.y);if(H!=null){H.lineTo(F.x,F.y)}}break;case"H":while(!J.isCommandOrEnd()){var g=new b.Point((J.isRelativeCommand()?J.current.x:0)+J.getScalar(),J.current.y);J.addMarker(g,J.current);J.current=g;t.addPoint(J.current.x,J.current.y);if(H!=null){H.lineTo(J.current.x,J.current.y)}}break;case"V":while(!J.isCommandOrEnd()){var g=new b.Point(J.current.x,(J.isRelativeCommand()?J.current.y:0)+J.getScalar());J.addMarker(g,J.current);J.current=g;t.addPoint(J.current.x,J.current.y);if(H!=null){H.lineTo(J.current.x,J.current.y)}}break;case"C":while(!J.isCommandOrEnd()){var K=J.current;var j=J.getPoint();var k=J.getAsControlPoint();var x=J.getAsCurrentPoint();J.addMarker(x,k,j);t.addBezierCurve(K.x,K.y,j.x,j.y,k.x,k.y,x.x,x.y);if(H!=null){H.bezierCurveTo(j.x,j.y,k.x,k.y,x.x,x.y)}}break;case"S":while(!J.isCommandOrEnd()){var K=J.current;var j=J.getReflectedControlPoint();var k=J.getAsControlPoint();var x=J.getAsCurrentPoint();J.addMarker(x,k,j);t.addBezierCurve(K.x,K.y,j.x,j.y,k.x,k.y,x.x,x.y);if(H!=null){H.bezierCurveTo(j.x,j.y,k.x,k.y,x.x,x.y)}}break;case"Q":while(!J.isCommandOrEnd()){var K=J.current;var k=J.getAsControlPoint();var x=J.getAsCurrentPoint();J.addMarker(x,k,k);t.addQuadraticCurve(K.x,K.y,k.x,k.y,x.x,x.y);if(H!=null){H.quadraticCurveTo(k.x,k.y,x.x,x.y)}}break;case"T":while(!J.isCommandOrEnd()){var K=J.current;var k=J.getReflectedControlPoint();J.control=k;var x=J.getAsCurrentPoint();J.addMarker(x,k,k);t.addQuadraticCurve(K.x,K.y,k.x,k.y,x.x,x.y);if(H!=null){H.quadraticCurveTo(k.x,k.y,x.x,x.y)}}break;case"A":while(!J.isCommandOrEnd()){var K=J.current;var q=J.getScalar();var o=J.getScalar();var f=J.getScalar()*(Math.PI/180);var w=J.getScalar();var n=J.getScalar();var x=J.getAsCurrentPoint();var P=new b.Point(Math.cos(f)*(K.x-x.x)/2+Math.sin(f)*(K.y-x.y)/2,-Math.sin(f)*(K.x-x.x)/2+Math.cos(f)*(K.y-x.y)/2);var I=Math.pow(P.x,2)/Math.pow(q,2)+Math.pow(P.y,2)/Math.pow(o,2);if(I>1){q*=Math.sqrt(I);o*=Math.sqrt(I)}var B=(w==n?-1:1)*Math.sqrt(((Math.pow(q,2)*Math.pow(o,2))-(Math.pow(q,2)*Math.pow(P.y,2))-(Math.pow(o,2)*Math.pow(P.x,2)))/(Math.pow(q,2)*Math.pow(P.y,2)+Math.pow(o,2)*Math.pow(P.x,2)));if(isNaN(B)){B=0}var A=new b.Point(B*q*P.y/o,B*-o*P.x/q);var h=new b.Point((K.x+x.x)/2+Math.cos(f)*A.x-Math.sin(f)*A.y,(K.y+x.y)/2+Math.sin(f)*A.x+Math.cos(f)*A.y);var G=function(l){return Math.sqrt(Math.pow(l[0],2)+Math.pow(l[1],2))};var D=function(m,l){return(m[0]*l[0]+m[1]*l[1])/(G(m)*G(l))};var N=function(m,l){return(m[0]*l[1]<m[1]*l[0]?-1:1)*Math.acos(D(m,l))};var O=N([1,0],[(P.x-A.x)/q,(P.y-A.y)/o]);var z=[(P.x-A.x)/q,(P.y-A.y)/o];var y=[(-P.x-A.x)/q,(-P.y-A.y)/o];var L=N(z,y);if(D(z,y)<=-1){L=Math.PI}if(D(z,y)>=1){L=0}if(n==0&&L>0){L=L-2*Math.PI}if(n==1&&L<0){L=L+2*Math.PI}var d=new b.Point(h.x-q*Math.cos((O+L)/2),h.y-o*Math.sin((O+L)/2));J.addMarkerAngle(d,(O+L)/2+(n==0?1:-1)*Math.PI/2);J.addMarkerAngle(x,L+(n==0?1:-1)*Math.PI/2);t.addPoint(x.x,x.y);if(H!=null){var D=q>o?q:o;var E=q>o?1:q/o;var C=q>o?o/q:1;H.translate(h.x,h.y);H.rotate(f);H.scale(E,C);H.arc(0,0,D,O,O+L,1-n);H.scale(1/E,1/C);H.rotate(-f);H.translate(-h.x,-h.y)}}break;case"Z":if(H!=null){H.closePath()}J.current=J.start}}return t};this.getMarkers=function(){var f=this.PathParser.getMarkerPoints();var h=this.PathParser.getMarkerAngles();var g=[];for(var d=0;d<f.length;d++){g.push([f[d],h[d]])}return g}};b.Element.path.prototype=new b.Element.PathElementBase;b.Element.pattern=function(c){this.base=b.Element.ElementBase;this.base(c);this.createPattern=function(d,e){var f=new b.Element.svg();f.attributes.viewBox=new b.Property("viewBox",this.attribute("viewBox").value);f.attributes.x=new b.Property("x",this.attribute("x").value);f.attributes.y=new b.Property("y",this.attribute("y").value);f.attributes.width=new b.Property("width",this.attribute("width").value);f.attributes.height=new b.Property("height",this.attribute("height").value);f.children=this.children;var g=document.createElement("canvas");g.width=this.attribute("width").Length.toPixels("x");g.height=this.attribute("height").Length.toPixels("y");f.render(g.getContext("2d"));return d.createPattern(g,"repeat")}};b.Element.pattern.prototype=new b.Element.ElementBase;b.Element.marker=function(c){this.base=b.Element.ElementBase;this.base(c);this.baseRender=this.render;this.render=function(e,d,g){e.translate(d.x,d.y);if(this.attribute("orient").valueOrDefault("auto")=="auto"){e.rotate(g)}if(this.attribute("markerUnits").valueOrDefault("strokeWidth")=="strokeWidth"){e.scale(e.lineWidth,e.lineWidth)}e.save();var f=new b.Element.svg();f.attributes.viewBox=new b.Property("viewBox",this.attribute("viewBox").value);f.attributes.refX=new b.Property("refX",this.attribute("refX").value);f.attributes.refY=new b.Property("refY",this.attribute("refY").value);f.attributes.width=new b.Property("width",this.attribute("markerWidth").value);f.attributes.height=new b.Property("height",this.attribute("markerHeight").value);f.attributes.fill=new b.Property("fill",this.attribute("fill").valueOrDefault("black"));f.attributes.stroke=new b.Property("stroke",this.attribute("stroke").valueOrDefault("none"));f.children=this.children;f.render(e);e.restore();if(this.attribute("markerUnits").valueOrDefault("strokeWidth")=="strokeWidth"){e.scale(1/e.lineWidth,1/e.lineWidth)}if(this.attribute("orient").valueOrDefault("auto")=="auto"){e.rotate(-g)}e.translate(-d.x,-d.y)}};b.Element.marker.prototype=new b.Element.ElementBase;b.Element.defs=function(c){this.base=b.Element.ElementBase;this.base(c);this.render=function(d){}};b.Element.defs.prototype=new b.Element.ElementBase;b.Element.GradientBase=function(d){this.base=b.Element.ElementBase;this.base(d);this.gradientUnits=this.attribute("gradientUnits").valueOrDefault("objectBoundingBox");this.stops=[];for(var c=0;c<this.children.length;c++){var e=this.children[c];this.stops.push(e)}this.getGradient=function(){};this.createGradient=function(r,h){var q=this;if(this.attribute("xlink:href").hasValue()){q=this.attribute("xlink:href").Definition.getDefinition()}var k=this.getGradient(r,h);for(var j=0;j<q.stops.length;j++){k.addColorStop(q.stops[j].offset,q.stops[j].color)}if(this.attribute("gradientTransform").hasValue()){var m=b.ViewPort.viewPorts[0];var n=new b.Element.rect();n.attributes.x=new b.Property("x",-b.MAX_VIRTUAL_PIXELS/3);n.attributes.y=new b.Property("y",-b.MAX_VIRTUAL_PIXELS/3);n.attributes.width=new b.Property("width",b.MAX_VIRTUAL_PIXELS);n.attributes.height=new b.Property("height",b.MAX_VIRTUAL_PIXELS);var p=new b.Element.g();p.attributes.transform=new b.Property("transform",this.attribute("gradientTransform").value);p.children=[n];var o=new b.Element.svg();o.attributes.x=new b.Property("x",0);o.attributes.y=new b.Property("y",0);o.attributes.width=new b.Property("width",m.width);o.attributes.height=new b.Property("height",m.height);o.children=[p];var l=document.createElement("canvas");l.width=m.width;l.height=m.height;var f=l.getContext("2d");f.fillStyle=k;o.render(f);return f.createPattern(l,"no-repeat")}return k}};b.Element.GradientBase.prototype=new b.Element.ElementBase;b.Element.linearGradient=function(c){this.base=b.Element.GradientBase;this.base(c);this.getGradient=function(d,h){var k=h.getBoundingBox();var f=(this.gradientUnits=="objectBoundingBox"?k.x()+k.width()*this.attribute("x1").numValue():this.attribute("x1").Length.toPixels("x"));var j=(this.gradientUnits=="objectBoundingBox"?k.y()+k.height()*this.attribute("y1").numValue():this.attribute("y1").Length.toPixels("y"));var e=(this.gradientUnits=="objectBoundingBox"?k.x()+k.width()*this.attribute("x2").numValue():this.attribute("x2").Length.toPixels("x"));var g=(this.gradientUnits=="objectBoundingBox"?k.y()+k.height()*this.attribute("y2").numValue():this.attribute("y2").Length.toPixels("y"));return d.createLinearGradient(f,j,e,g)}};b.Element.linearGradient.prototype=new b.Element.GradientBase;b.Element.radialGradient=function(c){this.base=b.Element.GradientBase;this.base(c);this.getGradient=function(e,f){var k=f.getBoundingBox();var d=(this.gradientUnits=="objectBoundingBox"?k.x()+k.width()*this.attribute("cx").numValue():this.attribute("cx").Length.toPixels("x"));var l=(this.gradientUnits=="objectBoundingBox"?k.y()+k.height()*this.attribute("cy").numValue():this.attribute("cy").Length.toPixels("y"));var j=d;var g=l;if(this.attribute("fx").hasValue()){j=(this.gradientUnits=="objectBoundingBox"?k.x()+k.width()*this.attribute("fx").numValue():this.attribute("fx").Length.toPixels("x"))}if(this.attribute("fy").hasValue()){g=(this.gradientUnits=="objectBoundingBox"?k.y()+k.height()*this.attribute("fy").numValue():this.attribute("fy").Length.toPixels("y"))}var h=(this.gradientUnits=="objectBoundingBox"?(k.width()+k.height())/2*this.attribute("r").numValue():this.attribute("r").Length.toPixels());return e.createRadialGradient(j,g,0,d,l,h)}};b.Element.radialGradient.prototype=new b.Element.GradientBase;b.Element.stop=function(d){this.base=b.Element.ElementBase;this.base(d);this.offset=this.attribute("offset").numValue();var c=this.style("stop-color");if(this.style("stop-opacity").hasValue()){c=c.Color.addOpacity(this.style("stop-opacity").value)}this.color=c.value};b.Element.stop.prototype=new b.Element.ElementBase;b.Element.AnimateBase=function(c){this.base=b.Element.ElementBase;this.base(c);b.Animations.push(this);this.duration=0;this.begin=this.attribute("begin").Time.toMilliseconds();this.maxDuration=this.begin+this.attribute("dur").Time.toMilliseconds();this.getProperty=function(){var e=this.attribute("attributeType").value;var d=this.attribute("attributeName").value;if(e=="CSS"){return this.parent.style(d,true)}return this.parent.attribute(d,true)};this.initialValue=null;this.removed=false;this.calcValue=function(){return""};this.update=function(g){if(this.initialValue==null){this.initialValue=this.getProperty().value}if(this.duration>this.maxDuration){if(this.attribute("repeatCount").value=="indefinite"){this.duration=0}else{if(this.attribute("fill").valueOrDefault("remove")=="remove"&&!this.removed){this.removed=true;this.getProperty().value=this.initialValue;return true}else{return false}}}this.duration=this.duration+g;var d=false;if(this.begin<this.duration){var f=this.calcValue();if(this.attribute("type").hasValue()){var e=this.attribute("type").value;f=e+"("+f+")"}this.getProperty().value=f;d=true}return d};this.progress=function(){return((this.duration-this.begin)/(this.maxDuration-this.begin))}};b.Element.AnimateBase.prototype=new b.Element.ElementBase;b.Element.animate=function(c){this.base=b.Element.AnimateBase;this.base(c);this.calcValue=function(){var e=this.attribute("from").numValue();var d=this.attribute("to").numValue();return e+(d-e)*this.progress()}};b.Element.animate.prototype=new b.Element.AnimateBase;b.Element.animateColor=function(c){this.base=b.Element.AnimateBase;this.base(c);this.calcValue=function(){var j=new RGBColor(this.attribute("from").value);var h=new RGBColor(this.attribute("to").value);if(j.ok&&h.ok){var f=j.r+(h.r-j.r)*this.progress();var e=j.g+(h.g-j.g)*this.progress();var d=j.b+(h.b-j.b)*this.progress();return"rgb("+parseInt(f,10)+","+parseInt(e,10)+","+parseInt(d,10)+")"}return this.attribute("from").value}};b.Element.animateColor.prototype=new b.Element.AnimateBase;b.Element.animateTransform=function(c){this.base=b.Element.animate;this.base(c)};b.Element.animateTransform.prototype=new b.Element.animate;b.Element.font=function(d){this.base=b.Element.ElementBase;this.base(d);this.horizAdvX=this.attribute("horiz-adv-x").numValue();this.isRTL=false;this.isArabic=false;this.fontFace=null;this.missingGlyph=null;this.glyphs=[];for(var c=0;c<this.children.length;c++){var e=this.children[c];if(e.type=="font-face"){this.fontFace=e;if(e.style("font-family").hasValue()){b.Definitions[e.style("font-family").value]=this}}else{if(e.type=="missing-glyph"){this.missingGlyph=e}else{if(e.type=="glyph"){if(e.arabicForm!=""){this.isRTL=true;this.isArabic=true;if(typeof(this.glyphs[e.unicode])=="undefined"){this.glyphs[e.unicode]=[]}this.glyphs[e.unicode][e.arabicForm]=e}else{this.glyphs[e.unicode]=e}}}}}};b.Element.font.prototype=new b.Element.ElementBase;b.Element.fontface=function(c){this.base=b.Element.ElementBase;this.base(c);this.ascent=this.attribute("ascent").value;this.descent=this.attribute("descent").value;this.unitsPerEm=this.attribute("units-per-em").numValue()};b.Element.fontface.prototype=new b.Element.ElementBase;b.Element.missingglyph=function(c){this.base=b.Element.path;this.base(c);this.horizAdvX=0};b.Element.missingglyph.prototype=new b.Element.path;b.Element.glyph=function(c){this.base=b.Element.path;this.base(c);this.horizAdvX=this.attribute("horiz-adv-x").numValue();this.unicode=this.attribute("unicode").value;this.arabicForm=this.attribute("arabic-form").value};b.Element.glyph.prototype=new b.Element.path;b.Element.text=function(e){this.base=b.Element.RenderedElementBase;this.base(e);if(e!=null){this.children=[];for(var d=0;d<e.childNodes.length;d++){var c=e.childNodes[d];if(c.nodeType==1){this.addChild(c,true)}else{if(c.nodeType==3){this.addChild(new b.Element.tspan(c),false)}}}}this.baseSetContext=this.setContext;this.setContext=function(f){this.baseSetContext(f);if(this.style("dominant-baseline").hasValue()){f.textBaseline=this.style("dominant-baseline").value}if(this.style("alignment-baseline").hasValue()){f.textBaseline=this.style("alignment-baseline").value}};this.renderChildren=function(q){var h=this.style("text-anchor").valueOrDefault("start");var p=this.attribute("x").Length.toPixels("x");var o=this.attribute("y").Length.toPixels("y");for(var m=0;m<this.children.length;m++){var g=this.children[m];if(g.attribute("x").hasValue()){g.x=g.attribute("x").Length.toPixels("x")}else{if(g.attribute("dx").hasValue()){p+=g.attribute("dx").Length.toPixels("x")}g.x=p}var n=g.measureText(q);if(h!="start"&&(m==0||g.attribute("x").hasValue())){var f=n;for(var l=m+1;l<this.children.length;l++){var k=this.children[l];if(k.attribute("x").hasValue()){break}f+=k.measureText(q)}g.x-=(h=="end"?f:f/2)}p=g.x+n;if(g.attribute("y").hasValue()){g.y=g.attribute("y").Length.toPixels("y")}else{if(g.attribute("dy").hasValue()){o+=g.attribute("dy").Length.toPixels("y")}g.y=o}o=g.y;g.render(q)}}};b.Element.text.prototype=new b.Element.RenderedElementBase;b.Element.TextElementBase=function(c){this.base=b.Element.RenderedElementBase;this.base(c);this.getGlyph=function(d,h,e){var j=h[e];var f=null;if(d.isArabic){var g="isolated";if((e==0||h[e-1]==" ")&&e<h.length-2&&h[e+1]!=" "){g="terminal"}if(e>0&&h[e-1]!=" "&&e<h.length-2&&h[e+1]!=" "){g="medial"}if(e>0&&h[e-1]!=" "&&(e==h.length-1||h[e+1]==" ")){g="initial"}if(typeof(d.glyphs[j])!="undefined"){f=d.glyphs[j][g];if(f==null&&d.glyphs[j].type=="glyph"){f=d.glyphs[j]}}}else{f=d.glyphs[j]}if(f==null){f=d.missingGlyph}return f};this.renderChildren=function(l){var j=this.parent.style("font-family").Definition.getDefinition();if(j!=null){var m=this.parent.style("font-size").numValueOrDefault(b.Font.Parse(b.ctx.font).fontSize);var f=this.parent.style("font-style").valueOrDefault(b.Font.Parse(b.ctx.font).fontStyle);var k=this.getText();if(j.isRTL){k=k.split("").reverse().join("")}var n=b.ToNumberArray(this.parent.attribute("dx").value);for(var g=0;g<k.length;g++){var h=this.getGlyph(j,k,g);var e=m/j.fontFace.unitsPerEm;l.translate(this.x,this.y);l.scale(e,-e);var d=l.lineWidth;l.lineWidth=l.lineWidth*j.fontFace.unitsPerEm/m;if(f=="italic"){l.transform(1,0,0.4,1,0,0)}h.render(l);if(f=="italic"){l.transform(1,0,-0.4,1,0,0)}l.lineWidth=d;l.scale(1/e,-1/e);l.translate(-this.x,-this.y);this.x+=m*(h.horizAdvX||j.horizAdvX)/j.fontFace.unitsPerEm;if(typeof(n[g])!="undefined"&&!isNaN(n[g])){this.x+=n[g]}}return}if(l.strokeStyle!=""){l.strokeText(b.compressSpaces(this.getText()),this.x,this.y)}if(l.fillStyle!=""){l.fillText(b.compressSpaces(this.getText()),this.x,this.y)}};this.getText=function(){};this.measureText=function(l){var j=this.parent.style("font-family").Definition.getDefinition();if(j!=null){var m=this.parent.style("font-size").numValueOrDefault(b.Font.Parse(b.ctx.font).fontSize);var e=0;var k=this.getText();if(j.isRTL){k=k.split("").reverse().join("")}var n=b.ToNumberArray(this.parent.attribute("dx").value);for(var g=0;g<k.length;g++){var h=this.getGlyph(j,k,g);e+=(h.horizAdvX||j.horizAdvX)*m/j.fontFace.unitsPerEm;if(typeof(n[g])!="undefined"&&!isNaN(n[g])){e+=n[g]}}return e}var d=b.compressSpaces(this.getText());if(!l.measureText){return d.length*10}l.save();this.setContext(l);var f=l.measureText(d).width;l.restore();return f}};b.Element.TextElementBase.prototype=new b.Element.RenderedElementBase;b.Element.tspan=function(c){this.base=b.Element.TextElementBase;this.base(c);this.text=c.nodeType==3?c.nodeValue:c.childNodes.length>0?c.childNodes[0].nodeValue:c.text;this.getText=function(){return this.text}};b.Element.tspan.prototype=new b.Element.TextElementBase;b.Element.tref=function(c){this.base=b.Element.TextElementBase;this.base(c);this.getText=function(){var d=this.attribute("xlink:href").Definition.getDefinition();if(d!=null){return d.children[0].getText()}}};b.Element.tref.prototype=new b.Element.TextElementBase;b.Element.a=function(d){this.base=b.Element.TextElementBase;this.base(d);this.hasText=true;for(var c=0;c<d.childNodes.length;c++){if(d.childNodes[c].nodeType!=3){this.hasText=false}}this.text=this.hasText?d.childNodes[0].nodeValue:"";this.getText=function(){return this.text};this.baseRenderChildren=this.renderChildren;this.renderChildren=function(e){if(this.hasText){this.baseRenderChildren(e);var h=new b.Property("fontSize",b.Font.Parse(b.ctx.font).fontSize);b.Mouse.checkBoundingBox(this,new b.BoundingBox(this.x,this.y-h.Length.toPixels("y"),this.x+this.measureText(e),this.y))}else{var f=new b.Element.g();f.children=this.children;f.parent=this;f.render(e)}};this.onclick=function(){window.open(this.attribute("xlink:href").value)};this.onmousemove=function(){b.ctx.canvas.style.cursor="pointer"}};b.Element.a.prototype=new b.Element.TextElementBase;b.Element.image=function(d){this.base=b.Element.RenderedElementBase;this.base(d);b.Images.push(this);this.img=document.createElement("img");this.loaded=false;var c=this;this.img.onload=function(){c.loaded=true};this.img.src=this.attribute("xlink:href").value;this.renderChildren=function(g){var f=this.attribute("x").Length.toPixels("x");var j=this.attribute("y").Length.toPixels("y");var h=this.attribute("width").Length.toPixels("x");var e=this.attribute("height").Length.toPixels("y");if(h==0||e==0){return}g.save();g.translate(f,j);b.AspectRatio(g,this.attribute("preserveAspectRatio").value,h,this.img.width,e,this.img.height,0,0);g.drawImage(this.img,0,0);g.restore()}};b.Element.image.prototype=new b.Element.RenderedElementBase;b.Element.g=function(c){this.base=b.Element.RenderedElementBase;this.base(c);this.getBoundingBox=function(){var e=new b.BoundingBox();for(var d=0;d<this.children.length;d++){e.addBoundingBox(this.children[d].getBoundingBox())}return e}};b.Element.g.prototype=new b.Element.RenderedElementBase;b.Element.symbol=function(c){this.base=b.Element.RenderedElementBase;this.base(c);this.baseSetContext=this.setContext;this.setContext=function(e){this.baseSetContext(e);if(this.attribute("viewBox").hasValue()){var f=b.ToNumberArray(this.attribute("viewBox").value);var d=f[0];var g=f[1];width=f[2];height=f[3];b.AspectRatio(e,this.attribute("preserveAspectRatio").value,this.attribute("width").Length.toPixels("x"),width,this.attribute("height").Length.toPixels("y"),height,d,g);b.ViewPort.SetCurrent(f[2],f[3])}}};b.Element.symbol.prototype=new b.Element.RenderedElementBase;b.Element.style=function(w){this.base=b.Element.ElementBase;this.base(w);var r=w.childNodes[0].nodeValue+(w.childNodes.length>1?w.childNodes[1].nodeValue:"");r=r.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,"");r=b.compressSpaces(r);var q=r.split("}");for(var z=0;z<q.length;z++){if(b.trim(q[z])!=""){var D=q[z].split("{");var g=D[0].split(",");var c=D[1].split(";");for(var y=0;y<g.length;y++){var o=b.trim(g[y]);if(o!=""){var e={};for(var x=0;x<c.length;x++){var d=c[x].indexOf(":");var E=c[x].substr(0,d);var v=c[x].substr(d+1,c[x].length-d);if(E!=null&&v!=null){e[b.trim(E)]=new b.Property(b.trim(E),b.trim(v))}}b.Styles[o]=e;if(o=="@font-face"){var B=e["font-family"].value.replace(/"/g,"");var p=e.src.value.split(",");for(var t=0;t<p.length;t++){if(p[t].indexOf('format("svg")')>0){var m=p[t].indexOf("url");var l=p[t].indexOf(")",m);var h=p[t].substr(m+5,l-m-6);var C=b.parseXml(b.ajax(h));var n=C.getElementsByTagName("font");for(var A=0;A<n.length;A++){var u=b.CreateElement(n[A]);b.Definitions[B]=u}}}}}}}}};b.Element.style.prototype=new b.Element.ElementBase;b.Element.use=function(c){this.base=b.Element.RenderedElementBase;this.base(c);this.baseSetContext=this.setContext;this.setContext=function(d){this.baseSetContext(d);if(this.attribute("x").hasValue()){d.translate(this.attribute("x").Length.toPixels("x"),0)}if(this.attribute("y").hasValue()){d.translate(0,this.attribute("y").Length.toPixels("y"))}};this.getDefinition=function(){var d=this.attribute("xlink:href").Definition.getDefinition();if(this.attribute("width").hasValue()){d.attribute("width",true).value=this.attribute("width").value}if(this.attribute("height").hasValue()){d.attribute("height",true).value=this.attribute("height").value}return d};this.path=function(d){var e=this.getDefinition();if(e!=null){e.path(d)}};this.renderChildren=function(d){var e=this.getDefinition();if(e!=null){e.render(d)}}};b.Element.use.prototype=new b.Element.RenderedElementBase;b.Element.mask=function(c){this.base=b.Element.ElementBase;this.base(c);this.apply=function(m,f){var k=this.attribute("x").Length.toPixels("x");var h=this.attribute("y").Length.toPixels("y");var d=this.attribute("width").Length.toPixels("x");var l=this.attribute("height").Length.toPixels("y");var o=f.attribute("mask").value;f.attribute("mask").value="";var j=document.createElement("canvas");j.width=k+d;j.height=h+l;var n=j.getContext("2d");this.renderChildren(n);var g=document.createElement("canvas");g.width=k+d;g.height=h+l;var e=g.getContext("2d");f.render(e);e.globalCompositeOperation="destination-in";e.fillStyle=n.createPattern(j,"no-repeat");e.fillRect(0,0,k+d,h+l);m.fillStyle=e.createPattern(g,"no-repeat");m.fillRect(0,0,k+d,h+l);f.attribute("mask").value=o};this.render=function(d){}};b.Element.mask.prototype=new b.Element.ElementBase;b.Element.clipPath=function(c){this.base=b.Element.ElementBase;this.base(c);this.apply=function(d){for(var e=0;e<this.children.length;e++){if(this.children[e].path){this.children[e].path(d);d.clip()}}};this.render=function(d){}};b.Element.clipPath.prototype=new b.Element.ElementBase;b.Element.filter=function(c){this.base=b.Element.ElementBase;this.base(c);this.apply=function(r,h){var j=h.getBoundingBox();var n=this.attribute("x").Length.toPixels("x");var l=this.attribute("y").Length.toPixels("y");if(n==0||l==0){n=j.x1;l=j.y1}var d=this.attribute("width").Length.toPixels("x");var q=this.attribute("height").Length.toPixels("y");if(d==0||q==0){d=j.width();q=j.height()}var e=h.style("filter").value;h.style("filter").value="";var p=0.2;var o=p*d;var m=p*q;var k=document.createElement("canvas");k.width=d+2*o;k.height=q+2*m;var f=k.getContext("2d");f.translate(-n+o,-l+m);h.render(f);for(var g=0;g<this.children.length;g++){this.children[g].apply(f,0,0,d+2*o,q+2*m)}r.drawImage(k,0,0,d+2*o,q+2*m,n-o,l-m,d+2*o,q+2*m);h.style("filter",true).value=e};this.render=function(d){}};b.Element.filter.prototype=new b.Element.ElementBase;b.Element.feGaussianBlur=function(g){this.base=b.Element.ElementBase;this.base(g);function j(m){m=Math.max(m,0.01);var k=Math.ceil(m*4)+1;mask=[];for(var l=0;l<k;l++){mask[l]=Math.exp(-0.5*(l/m)*(l/m))}return mask}function d(k){var m=0;for(var l=1;l<k.length;l++){m+=Math.abs(k[l])}m=2*m+Math.abs(k[0]);for(var l=0;l<k.length;l++){k[l]/=m}return k}function f(k,r,w,n,v){for(var s=0;s<v;s++){for(var u=0;u<n;u++){var t=e(k,u,s,n,v,3)/255;for(var o=0;o<4;o++){var q=w[0]*(t==0?255:e(k,u,s,n,v,o))*(t==0||o==3?1:t);for(var p=1;p<w.length;p++){var m=e(k,Math.max(u-p,0),s,n,v,3)/255;var l=e(k,Math.min(u+p,n-1),s,n,v,3)/255;q+=w[p]*((m==0?255:e(k,Math.max(u-p,0),s,n,v,o))*(m==0||o==3?1:m)+(l==0?255:e(k,Math.min(u+p,n-1),s,n,v,o))*(l==0||o==3?1:l))}c(r,s,u,v,n,o,q)}}}}function e(m,l,p,o,k,n){return m[p*o*4+l*4+n]}function c(m,l,q,o,k,n,p){m[q*o*4+l*4+n]=p}function h(m,n,k,o){var p=m.getImageData(0,0,n,k);var l=j(o);l=d(l);tmp=[];f(p.data,tmp,l,n,k);f(tmp,p.data,l,k,n);m.clearRect(0,0,n,k);m.putImageData(p,0,0)}this.apply=function(m,l,o,n,k){h(m,n,k,this.attribute("stdDeviation").numValue())}};b.Element.filter.prototype=new b.Element.feGaussianBlur;b.Element.title=function(c){};b.Element.title.prototype=new b.Element.ElementBase;b.Element.desc=function(c){};b.Element.desc.prototype=new b.Element.ElementBase;b.Element.MISSING=function(c){console.log("ERROR: Element '"+c.nodeName+"' not yet implemented.")};b.Element.MISSING.prototype=new b.Element.ElementBase;b.CreateElement=function(d){var c=d.nodeName.replace(/^[^:]+:/,"");c=c.replace(/\-/g,"");var f=null;if(typeof(b.Element[c])!="undefined"){f=new b.Element[c](d)}else{f=new b.Element.MISSING(d)}f.type=d.nodeName;return f};b.load=function(c,d){b.loadXml(c,b.ajax(d))};b.loadXml=function(c,d){b.loadXmlDoc(c,b.parseXml(d))};b.loadXmlDoc=function(g,k){b.init(g);var f=function(m){var l=g.canvas;while(l){m.x-=l.offsetLeft;m.y-=l.offsetTop;l=l.offsetParent}if(window.scrollX){m.x+=window.scrollX}if(window.scrollY){m.y+=window.scrollY}return m};if(b.opts.ignoreMouse!=true){g.canvas.onclick=function(m){var l=f(new b.Point(m!=null?m.clientX:event.clientX,m!=null?m.clientY:event.clientY));b.Mouse.onclick(l.x,l.y)};g.canvas.onmousemove=function(m){var l=f(new b.Point(m!=null?m.clientX:event.clientX,m!=null?m.clientY:event.clientY));b.Mouse.onmousemove(l.x,l.y)}}var j=b.CreateElement(k.documentElement);j.root=true;var h=true;var d=function(){b.ViewPort.Clear();if(g.canvas.parentNode){b.ViewPort.SetCurrent(g.canvas.parentNode.clientWidth,g.canvas.parentNode.clientHeight)}if(b.opts.ignoreDimensions!=true){if(j.style("width").hasValue()){g.canvas.width=j.style("width").Length.toPixels("x");g.canvas.style.width=g.canvas.width+"px"}if(j.style("height").hasValue()){g.canvas.height=j.style("height").Length.toPixels("y");g.canvas.style.height=g.canvas.height+"px"}}var m=g.canvas.clientWidth||g.canvas.width;var l=g.canvas.clientHeight||g.canvas.height;b.ViewPort.SetCurrent(m,l);if(b.opts!=null&&b.opts.offsetX!=null){j.attribute("x",true).value=b.opts.offsetX}if(b.opts!=null&&b.opts.offsetY!=null){j.attribute("y",true).value=b.opts.offsetY}if(b.opts!=null&&b.opts.scaleWidth!=null&&b.opts.scaleHeight!=null){var n=1,e=1;if(j.attribute("width").hasValue()){n=j.attribute("width").Length.toPixels("x")/b.opts.scaleWidth}if(j.attribute("height").hasValue()){e=j.attribute("height").Length.toPixels("y")/b.opts.scaleHeight}j.attribute("width",true).value=b.opts.scaleWidth;j.attribute("height",true).value=b.opts.scaleHeight;j.attribute("viewBox",true).value="0 0 "+(m*n)+" "+(l*e);j.attribute("preserveAspectRatio",true).value="none"}if(b.opts.ignoreClear!=true){g.clearRect(0,0,m,l)}j.render(g);if(h){h=false;if(b.opts!=null&&typeof(b.opts.renderCallback)=="function"){b.opts.renderCallback()}}};var c=true;if(b.ImagesLoaded()){c=false;d()}b.intervalID=setInterval(function(){var l=false;if(c&&b.ImagesLoaded()){c=false;l=true}if(b.opts.ignoreMouse!=true){l=l|b.Mouse.hasEvents()}if(b.opts.ignoreAnimation!=true){for(var e=0;e<b.Animations.length;e++){l=l|b.Animations[e].update(1000/b.FRAMERATE)}}if(b.opts!=null&&typeof(b.opts.forceRedraw)=="function"){if(b.opts.forceRedraw()==true){l=true}}if(l){d();b.Mouse.runEvents()}},1000/b.FRAMERATE)};b.stop=function(){if(b.intervalID){clearInterval(b.intervalID)}};b.Mouse=new (function(){this.events=[];this.hasEvents=function(){return this.events.length!=0};this.onclick=function(c,d){this.events.push({type:"onclick",x:c,y:d,run:function(f){if(f.onclick){f.onclick()}}})};this.onmousemove=function(c,d){this.events.push({type:"onmousemove",x:c,y:d,run:function(f){if(f.onmousemove){f.onmousemove()}}})};this.eventElements=[];this.checkPath=function(f,c){for(var d=0;d<this.events.length;d++){var g=this.events[d];if(c.isPointInPath&&c.isPointInPath(g.x,g.y)){this.eventElements[d]=f}}};this.checkBoundingBox=function(d,g){for(var c=0;c<this.events.length;c++){var f=this.events[c];if(g.isPointInBox(f.x,f.y)){this.eventElements[c]=d}}};this.runEvents=function(){b.ctx.canvas.style.cursor="";for(var d=0;d<this.events.length;d++){var f=this.events[d];var c=this.eventElements[d];while(c){f.run(c);c=c.parent}}this.events=[];this.eventElements=[]}});return b}})();if(CanvasRenderingContext2D){CanvasRenderingContext2D.prototype.drawSvg=function(d,b,a,c,e){canvg(this.canvas,d,{ignoreMouse:true,ignoreAnimation:true,ignoreDimensions:true,ignoreClear:true,offsetX:b,offsetY:a,scaleWidth:c,scaleHeight:e})}}(function(e){var k,m="div",b="absolute",h="relative",c="hidden",n="visible",f="px",j=e.css,a=e.CanVGRenderer,q=e.SVGRenderer,l=e.extend,p=e.merge,g=e.addEvent,d=e.createElement,o=e.discardElement;l(a.prototype,q.prototype);l(a.prototype,{create:function(u,r,t,s){this.setContainer(r,t,s);this.configure(u)},setContainer:function(s,y,v){var A=s.style,B=s.parentNode,w=A.left,x=A.top,C=s.offsetWidth,r=s.offsetHeight,u,z={visibility:c,position:b};this.init.apply(this,[s,y,v]);u=d("canvas",{width:C,height:r},{position:h,left:w,top:x},s);this.canvas=u;this.ttLine=d(m,null,z,B);this.ttDiv=d(m,null,z,B);this.ttTimer=k;var t=d(m,{width:C,height:r},{visibility:c,left:w,top:x},B);this.hiddenSvg=t;t.appendChild(this.box)},configure:function(u){var x=this,t=u.options.tooltip,s=t.borderWidth,w=x.ttDiv,v=t.style,r=x.ttLine,y=parseInt(v.padding,10);v=p(v,{padding:y+f,"background-color":t.backgroundColor,"border-style":"solid","border-width":s+f,"border-radius":t.borderRadius+f});if(t.shadow){v=p(v,{"box-shadow":"1px 1px 3px gray","-webkit-box-shadow":"1px 1px 3px gray"})}j(w,v);j(r,{"border-left":"1px solid darkgray"});g(u,"tooltipRefresh",function(B){var A=u.container,D=A.offsetLeft,C=A.offsetTop,z;w.innerHTML=B.text;z=u.tooltip.getPosition(w.offsetWidth,w.offsetHeight,{plotX:B.x,plotY:B.y});j(w,{visibility:n,left:z.x+f,top:z.y+f,"border-color":B.borderColor});j(r,{visibility:n,left:D+B.x+f,top:C+u.plotTop+f,height:u.plotHeight+f});if(x.ttTimer!==k){clearTimeout(x.ttTimer)}x.ttTimer=setTimeout(function(){j(w,{visibility:c});j(r,{visibility:c})},3000)})},destroy:function(){var r=this;o(r.canvas);if(r.ttTimer!==k){clearTimeout(r.ttTimer)}o(r.ttLine);o(r.ttDiv);o(r.hiddenSvg);return q.prototype.destroy.apply(r)},color:function(r,s,t){if(r&&r.linearGradient){r=r.stops[r.stops.length-1][1]}return q.prototype.color.call(this,r,s,t)},draw:function(){var r=this;window.canvg(r.canvas,r.hiddenSvg.innerHTML)}})}(Highcharts));