void 0==CanvasRenderingContext2D.prototype.ellipse&&(CanvasRenderingContext2D.prototype.ellipse=function(t,r,n,e,o,a,i,s){this.save(),this.translate(t,r),this.rotate(o),this.scale(n,e),this.arc(0,0,1,a,i,s),this.restore()}),"function"!=typeof Path2D&&!function(){function t(t){if(this.ops_=[],void 0!=t)if("string"==typeof t)try{this.ops_=parser.parse(t)}catch(r){}else{if(!t.hasOwnProperty("ops_"))throw"Error: "+typeof t+"is not a valid argument to Path";this.ops_=t.ops_.slice(0)}}function r(t){return function(){this.ops_.push({type:t,args:Array.prototype.slice.call(arguments,0)})}}parser=function(){function t(t,r){function n(){this.constructor=t}n.prototype=r.prototype,t.prototype=new n}function r(t,r,n,e,o,a){this.message=t,this.expected=r,this.found=n,this.offset=e,this.line=o,this.column=a,this.name="SyntaxError"}function n(t){function n(r){function n(r,n,e){var o,a;for(o=n;e>o;o++)a=t.charAt(o),"\n"===a?(r.seenCR||r.line++,r.column=1,r.seenCR=!1):"\r"===a||"\u2028"===a||"\u2029"===a?(r.line++,r.column=1,r.seenCR=!0):(r.column++,r.seenCR=!1)}return xn!==r&&(xn>r&&(xn=0,mn={line:1,column:1,seenCR:!1}),n(mn,xn,r),xn=r),mn}function e(t){Pn>_n||(_n>Pn&&(Pn=_n,Rn=[]),Rn.push(t))}function o(e,o,a){function i(t){var r=1;for(t.sort(function(t,r){return t.descriptionr.description?1:0});r1?i.slice(0,-1).join(", ")+" or "+i[t.length-1]:i[0],o=r?'"'+n(r)+'"':"end of input","Expected "+e+" but "+o+" found."}var u=n(a),c=a1)for(var e=r[1],o=0;o1&&(r*=l,n*=l,c=Math.pow(r,2),p=Math.pow(n,2));var f=Math.sqrt((c*p-c*u[1]-p*u[0])/(c*u[1]+p*u[0]));o==a&&(f*=-1);var h=ir(f,[r*s[1]/n,-n*s[0]/r]),v=sr(nr(h,e),or(t,i)),g=[(s[0]-h[0])/r,(s[1]-h[1])/n],y=[(-1*s[0]-h[0])/r,(-1*s[1]-h[1])/n],d=tr([1,0],g),C=tr(g,y),_=d,A=d+C;Tn.push({type:"save",args:[]},{type:"translate",args:[v[0],v[1]]},{type:"rotate",args:[e]},{type:"scale",args:[r,n]},{type:"arc",args:[0,0,1,_,A,1-a]},{type:"restore",args:[]})}var cr,pr=arguments.length>1?arguments[1]:{},lr={},fr={svg_path:a},hr=a,vr=lr,gr=null,yr=function(){return Tn},dr=/^[Mm]/,Cr={type:"class",value:"[Mm]",description:"[Mm]"},_r=function(t,r){var n=t;bn&&(n="M",bn=!1),Tn.push({type:"moveTo",args:U(n,r[0])});for(var e=1;en;n++){var o=r.ops_[n];CanvasRenderingContext2D.prototype[o.type].apply(this,o.args)}original_fill.apply(this,Array.prototype.slice.call(arguments,1))}else original_fill.apply(this,arguments)},CanvasRenderingContext2D.prototype.stroke=function(r){if(r instanceof t){this.beginPath();for(var n=0,e=r.ops_.length;e>n;n++){var o=r.ops_[n];CanvasRenderingContext2D.prototype[o.type].apply(this,o.args)}original_stroke.call(this)}else original_stroke.call(this)},CanvasRenderingContext2D.prototype.clip=function(r){if(r instanceof t){this.beginPath();for(var n=0,e=r.ops_.length;e>n;n++){var o=r.ops_[n];CanvasRenderingContext2D.prototype[o.type].apply(this,o.args)}original_clip.apply(this,Array.prototype.slice.call(arguments,1))}else original_clip.apply(this,arguments)},CanvasRenderingContext2D.prototype.isPointInPath=function(r){if(r instanceof t){this.beginPath();for(var n=0,e=r.ops_.length;e>n;n++){var o=r.ops_[n];CanvasRenderingContext2D.prototype[o.type].apply(this,o.args)}return original_is_point_in_path.apply(this,Array.prototype.slice.call(arguments,1))}return original_is_point_in_path.apply(this,arguments)},CanvasRenderingContext2D.prototype.isPointInStroke=function(r){if(r instanceof t){this.beginPath();for(var n=0,e=r.ops_.length;e>n;n++){var o=r.ops_[n];CanvasRenderingContext2D.prototype[o.type].apply(this,o.args)}return original_is_point_in_stroke.apply(this,Array.prototype.slice.call(arguments,1))}return original_is_point_in_stroke.apply(this,arguments)},Path2D=t}();