From a8d0f3fa261b5dbd47dd6cc6c3391d5d90e5068f Mon Sep 17 00:00:00 2001 From: Dmitry Baranovskiy Date: Thu, 7 Jan 2010 10:03:43 +1100 Subject: [PATCH] =?utf8?q?1.3=20=E2=80=A2=20AnimateAlong=20method=20?= =?utf8?q?=E2=80=A2=20getPointAtLength=20=E2=80=A2=20getSubpath=20?= =?utf8?q?=E2=80=A2=20getTotalLength=20=E2=80=A2=20bug=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- raphael-min.js | 4 +- raphael.js | 12 +- reference.html | 438 +++++++++++++++++++++++++++++++------------------ 3 files changed, 283 insertions(+), 171 deletions(-) diff --git a/raphael-min.js b/raphael-min.js index cdfdfbb..3e95317 100644 --- a/raphael-min.js +++ b/raphael-min.js @@ -1,7 +1,7 @@ /* - * Raphael 1.3.0dev - JavaScript Vector Library + * Raphael 1.3.0 - JavaScript Vector Library * * Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com) * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. */ -eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('jK(aS(p,a,c,k,e,r){e=aS(c){b0(c35?b3.jy(c+29):c.b6(36))};if(!\'\'.b2(/^/,b3)){b1(c--)r[e(c)]=k[c]||e(c);k=[aS(e){b0 r[e]}];e=aS(){b0\'\\\\w+\'};c=1};b1(c--)if(k[c])p=p.b2(b5 b4(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);b0 p}(\'6Z.32=(14(){11 a=/[, ]+/,6X=/^(2p|1M|1s|2u|1D|2i)$/,K=4k,ar=6Z,l={6J:"32"1y ar,1u:ar.32},am=14(){12(am.1u(1f[0],"2g")){11 d=1f[0],e=x[1R](am,d.2Y(0,3+am.1u(d[0],ak))),S=e.4U();1i(11 R=0,15=d[m];R<15;R++){11 E=d[R]||{};6X.58(E.1p)&&S[f](e[E.1p]().1V(E))}13 S}13 x[1R](am,1f)},1I=14(){},1q="9r",1R="9q",21="9o",aq="",al=" ",A="5Y",F="9i 9h 9g 9f 5M 5L 9c"[A](al),P="9a",aw="5G",m="3v",1c="94",2M=5U[1c].91,aa=8Y,g=aa.4j,aF=aa.4x,ak="5c",ax="5a",au=8P[1c][ax],8O={},1K=aa.8M,f="63",3q=/^(?=[\\\\8J-f]$)/,c=/^3a\\\\([\\\'"]?([^\\\\)]+)[\\\'"]?\\\\)$/i,y=/^\\\\s*((#[a-f\\\\d]{6})|(#[a-f\\\\d]{3})|4X\\\\(\\\\s*([\\\\d\\\\.]+\\\\s*,\\\\s*[\\\\d\\\\.]+\\\\s*,\\\\s*[\\\\d\\\\.]+)\\\\s*\\\\)|4X\\\\(\\\\s*([\\\\d\\\\.]+%\\\\s*,\\\\s*[\\\\d\\\\.]+%\\\\s*,\\\\s*[\\\\d\\\\.]+%)\\\\s*\\\\)|4W[2k]\\\\(\\\\s*([\\\\d\\\\.]+\\\\s*,\\\\s*[\\\\d\\\\.]+\\\\s*,\\\\s*[\\\\d\\\\.]+)\\\\s*\\\\)|4W[2k]\\\\(\\\\s*([\\\\d\\\\.]+%\\\\s*,\\\\s*[\\\\d\\\\.]+%\\\\s*,\\\\s*[\\\\d\\\\.]+%)\\\\s*\\\\))\\\\s*$/i,N=aa.4V,w="8y",V=8w,G=8u,3V=5U[1c].8s,j={"1P-1M":"0 0 65 65",3B:"2O",1Q:0,1Y:0,1m:"#6n","1m-1z":1,1v:\\\'8f "6G"\\\',"1v-3L":\\\'"6G"\\\',"1v-2W":"10","1v-1k":"4v","1v-30":5o,1S:0,1d:0,3e:"3Y://82.5h/",1z:1,1s:"80,0",r:0,2f:0,2z:0,2t:0,1J:"1 1",2K:"",1g:"#2n","1g-2S":"","1g-34":"4r","1g-46":"4r","1g-4b":0,"1g-1z":1,"1g-18":1,4i:"7K","1D-4l":"4o",3D:"32",2C:"0 0",18:0,x:0,y:0},Y={3d:"3d","1P-1M":"3C",1Q:ak,1Y:ak,1m:"4L","1m-1z":ak,"1v-2W":ak,1d:ak,1z:ak,1s:"1s",r:ak,2f:"3C",2z:ak,2t:ak,1J:"3C",1g:"4L","1g-1z":ak,"1g-18":ak,2C:"3C",18:ak,x:ak,y:ak},1L="7A";am.4B="1.3.7y";am.1p=(ar.7x||K.7w.7v("3Y://4m.4I.4J/7s/7r/7q#7p","1.1")?"4C":"3w");12(am.1p=="3w"){11 5r=4k.2X("4S");5r.5b="";12(5r.7f[m]!=2){13 1h}}am.3j=!(am.3E=am.1p=="3w");1I[1c]=am[1c];am.4n=0;am.5v=0;am.5w={};am.1u=14(e,d){d=2M.1F(d);13((d=="2R"||d=="4f")&&6U e==d)||(e==1h&&d=="1h")||2M.1F(au.1F(e).40(8,-1))==d};am.71=14(d){ar=d;K=ar.4k};11 3Z=14(e){12(am.3E){11 d=/^\\\\s+|\\\\s+$/g;3Z=ai(14(R){11 S;R=(R+aq)[1L](d,aq);41{11 a=1U 72("73");a.74("<35>");a.76();S=a.35}4h(19){S=77().4k.35}11 i=S.78();41{S.1k.28=R;11 b=i.79("7a");b=((b&2s)<<16)|(b&7b)|((b&7c)>>>16);13"#"+("7d"+b[ax](16)).40(-6)}4h(19){13"1C"}})}1n{11 E=K.2X("i");E.3D="3K\\\\3J 7e 7h";E.1k.3g="1C";K.35[1q](E);3Z=ai(14(i){E.1k.28=i;13 K.6y.6x(E,aq).6w("28")})}13 3Z(e)};am.4p=ai(14(a,b,c){12(am.1u(a,"2R")&&"h"1y a&&"s"1y a&&"b"1y a){c=a.b;b=a.s;a=a.h}11 R,S,a5;12(c==0){13{r:0,g:0,b:0,2F:"#2n"}}12(a>1||b>1||c>1){a/=2s;b/=2s;c/=2s}11 f=~~(a*6),a1=(a*6)-f,E=c*(1-b),e=c*(1-(b*a1)),a6=c*(1-(b*(1-a1)));R=[c,e,E,E,a6,c,c][f];S=[a6,c,c,e,E,E,a6][f];a5=[E,E,a6,c,c,e,E][f];R*=2s;S*=2s;a5*=2s;11 g={r:R,g:S,b:a5},d=(~~R)[ax](16),19=(~~S)[ax](16),a3=(~~a5)[ax](16);d=d[1L](3q,"0");19=19[1L](3q,"0");a3=a3[1L](3q,"0");g.2F="#"+d+19+a3;13 g},am);am.7i=ai(14(d,e,a){12(am.1u(d,"2R")&&"r"1y d&&"g"1y d&&"b"1y d){a=d.b;e=d.g;d=d.r}12(am.1u(d,"2l")){11 b=am.2P(d);d=b.r;e=b.g;a=b.b}12(d>1||e>1||a>1){d/=2s;e/=2s;a/=2s}11 c=g(d,e,a),i=aF(d,e,a),R,E,S=c;12(i==c){13{h:0,s:0,b:c}}1n{11 f=(c-i);E=f/c;12(d==c){R=(e-a)/f}1n{12(e==c){R=2+((a-d)/f)}1n{R=4+((d-e)/f)}}R/=6;R<0&&R++;R>1&&R--}13{h:R,s:E,b:S}},am);11 6k=/,?([7j]),?/6i;am.3S=14(){13 9.5G(",")[1L](6k,"$1")};14 ai(E,e,d){14 i(){11 R=6f[1c].40.1F(1f,0),15=R[aw]("\\\\7k"),S=i.6d=i.6d||{},1b=i.6b=i.6b||[];12(S[P](15)){13 d?d(S[15]):S[15]}1b[m]>=3P&&22 S[1b.4P()];1b[f](15);S[15]=E[1R](e,R);13 d?d(S[15]):S[15]}13 i}am.2P=ai(14(d){12(!d||!!((d=d+aq).67("-")+1)){13{r:-1,g:-1,b:-1,2F:"1C",3Q:1}}12(d=="1C"){13{r:-1,g:-1,b:-1,2F:"1C"}}!(({4W:1,7l:1})[P](d.3W(0,2))||d.31()=="#")&&(d=3Z(d));11 S,i,E,19,a0,15=d.3z(y);12(15){12(15[2]){19=G(15[2].3W(5),16);E=G(15[2].3W(3,5),16);i=G(15[2].3W(1,3),16)}12(15[3]){19=G((a0=15[3].31(3))+a0,16);E=G((a0=15[3].31(2))+a0,16);i=G((a0=15[3].31(1))+a0,16)}12(15[4]){15=15[4][A](/\\\\s*,\\\\s*/);i=V(15[0]);E=V(15[1]);19=V(15[2])}12(15[5]){15=15[5][A](/\\\\s*,\\\\s*/);i=V(15[0])*2.55;E=V(15[1])*2.55;19=V(15[2])*2.55}12(15[6]){15=15[6][A](/\\\\s*,\\\\s*/);i=V(15[0]);E=V(15[1]);19=V(15[2]);13 am.4p(i,E,19)}12(15[7]){15=15[7][A](/\\\\s*,\\\\s*/);i=V(15[0])*2.55;E=V(15[1])*2.55;19=V(15[2])*2.55;13 am.4p(i,E,19)}15={r:i,g:E,b:19};11 e=(~~i)[ax](16),R=(~~E)[ax](16),1b=(~~19)[ax](16);e=e[1L](3q,"0");R=R[1L](3q,"0");1b=1b[1L](3q,"0");15.2F="#"+e+R+1b;13 15}13{r:-1,g:-1,b:-1,2F:"1C",3Q:1}},am);am.4a=14(e){11 i=9.4a.2a=9.4a.2a||{h:0,s:1,b:e||0.75},d=9.4p(i.h,i.s,i.b);i.h+=0.7m;12(i.h>1){i.h=0;i.s-=0.2;i.s<=0&&(9.4a.2a={h:0,s:1,b:i.b})}13 d.2F};am.4a.7n=14(){22 9.2a};am.4z=ai(14(d){12(!d){13 1h}11 i={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},e=[];12(am.1u(d,"2g")&&am.1u(d[0],"2g")){e=at(d)}12(!e[m]){(d+aq)[1L](/([7o])[\\\\s,]*((-?\\\\d*\\\\.?\\\\d*(?:e[-+]?\\\\d+)?\\\\s*,?\\\\s*)+)/5C,14(R,E,c){11 d=[],S=2M.1F(E);c[1L](/(-?\\\\d*\\\\.?\\\\d*(?:e[-+]?\\\\d+)?)\\\\s*,?\\\\s*/5C,14(a,b){b&&d[f](+b)});2N(d[m]>=i[S]){e[f]([E][21](d.2Y(0,i[S])));12(!i[S]){1a}}})}e[ax]=am.3S;13 e});am.4F=14(e,d,a,b,c,R,f,g,h){11 j=1-h,a2=1K(j,3)*e+1K(j,2)*3*h*a+j*3*h*h*c+1K(h,3)*f,a0=1K(j,3)*d+1K(j,2)*3*h*b+j*3*h*h*R+1K(h,3)*g,a7=e+2*h*(a-e)+h*h*(c-2*a+e),a6=d+2*h*(b-d)+h*h*(R-2*b+d),1A=a+2*h*(c-a)+h*h*(f-2*c+a),a8=b+2*h*(R-b)+h*h*(g-2*R+b),a4=(1-h)*e+h*a,a1=(1-h)*d+h*b,E=(1-h)*c+h*f,i=(1-h)*R+h*g,S=(90-aa.7t((a7-1A)/(a6-a8))*37/aa.3T);(a7>1A||a619){a0=a0-R*2}12(!S&&19>a0){19=19-R*2}}1n{a0=q[0];19=q[1];1A=q[2];a9=q[3]}11 r=19-a0;12(aa.2A(r)>1W){11 s=19,3k=o,a2=p;19=a0+1W*(S&&19>a0?1:-1);o=1A+j*aa.3t(19);p=a9+k*aa.3f(19);1H=J(o,p,j,k,l,0,S,3k,a2,[19,s,1A,a9])}r=19-a0;11 t=aa.3t(a0),39=aa.3f(a0),15=aa.3t(19),33=aa.3f(19),57=aa.7z(r/4),54=4/3*j*57,53=4/3*k*57,52=[f,h],3p=[f+54*39,h-53*t],50=[o+54*33,p-53*15],3F=[o,p];3p[0]=2*52[0]-3p[0];3p[1]=2*52[1]-3p[1];12(q){13[3p,50,3F][21](1H)}1n{1H=[3p,50,3F][21](1H)[aw]()[A](",");11 u=[];1i(11 v=0,2D=1H[m];v<2D;v++){u[v]=v%2?4c(1H[v-1],1H[v],d).y:4c(1H[v],1H[v+1],d).x}13 u}},L=14(e,d,E,i,a,b,c,S,f){11 R=1-f;13{x:1K(R,3)*e+1K(R,2)*3*f*E+R*3*f*f*a+1K(f,3)*c,y:1K(R,3)*d+1K(R,2)*3*f*i+R*3*f*f*b+1K(f,3)*S}},az=ai(14(i,d,R,E,a,b,c,h){11 j=(a-2*R+i)-(c-2*a+R),a1=2*(R-i)-2*(a-R),1b=i-R,15=(-a1+aa.3b(a1*a1-4*j*1b))/2/j,S=(-a1-aa.3b(a1*a1-4*j*1b))/2/j,a0=[d,h],a3=[i,c],e;aa.2A(15)>4D&&(15=0.5);aa.2A(S)>4D&&(S=0.5);12(15>0&&15<1){e=L(i,d,R,E,a,b,c,h,15);a3[f](e.x);a0[f](e.y)}12(S>0&&S<1){e=L(i,d,R,E,a,b,c,h,S);a3[f](e.x);a0[f](e.y)}j=(b-2*E+d)-(h-2*b+E);a1=2*(E-d)-2*(b-E);1b=d-E;15=(-a1+aa.3b(a1*a1-4*j*1b))/2/j;S=(-a1-aa.3b(a1*a1-4*j*1b))/2/j;aa.2A(15)>4D&&(15=0.5);aa.2A(S)>4D&&(S=0.5);12(15>0&&15<1){e=L(i,d,R,E,a,b,c,h,15);a3[f](e.x);a0[f](e.y)}12(S>0&&S<1){e=L(i,d,R,E,a,b,c,h,S);a3[f](e.x);a0[f](e.y)}13{4x:{x:aF[1R](0,a3),y:aF[1R](0,a0)},4j:{x:g[1R](0,a3),y:g[1R](0,a0)}}}),H=ai(14(f,h){11 R=s(f),a2=h&&s(h),a3={x:0,y:0,33:0,39:0,X:0,Y:0,3m:1h,3l:1h},d={x:0,y:0,33:0,39:0,X:0,Y:0,3m:1h,3l:1h},15=14(a,b){11 i,a9;12(!a){13["C",b.x,b.y,b.x,b.y,b.x,b.y]}!(a[0]1y{T:1,Q:1})&&(b.3m=b.3l=1h);2b(a[0]){17"M":b.X=a[1];b.Y=a[2];1a;17"A":a=["C"][21](J[1R](0,[b.x,b.y][21](a.40(1))));1a;17"S":i=b.x+(b.x-(b.33||b.x));a9=b.y+(b.y-(b.39||b.y));a=["C",i,a9][21](a.40(1));1a;17"T":b.3m=b.x+(b.x-(b.3m||b.x));b.3l=b.y+(b.y-(b.3l||b.y));a=["C"][21](5s(b.x,b.y,b.3m,b.3l,a[1],a[2]));1a;17"Q":b.3m=a[1];b.3l=a[2];a=["C"][21](5s(b.x,b.y,a[1],a[2],a[3],a[4]));1a;17"L":a=["C"][21](49(b.x,b.y,a[1],a[2]));1a;17"H":a=["C"][21](49(b.x,b.y,a[1],b.y));1a;17"V":a=["C"][21](49(b.x,b.y,b.x,a[1]));1a;17"Z":a=["C"][21](49(b.x,b.y,b.X,b.Y));1a}13 a},e=14(a,b){12(a[b][m]>7){a[b].4P();11 c=a[b];2N(c[m]){a.2Y(b++,0,["C"][21](c.2Y(0,6)))}a.2Y(b,1);a4=g(R[m],a2&&a2[m]||0)}},E=14(a,b,c,d,e){12(a&&b&&a[e][0]=="M"&&b[e][0]!="M"){b.2Y(e,0,["M",d.x,d.y]);c.33=0;c.39=0;c.x=a[e][1];c.y=a[e][2];a4=g(R[m],a2&&a2[m]||0)}};1i(11 j=0,a4=g(R[m],a2&&a2[m]||0);j3){13{3n:1,x:1f[0],y:1f[1],18:1f[2],1d:1f[3]}}}},aD=14(d,i){11 e=9;1i(11 E 1y i){12(i[P](E)&&!(E 1y d)){2b(6U i[E]){17"14":(14(R){d[E]=d===e?R:14(){13 R[1R](e,1f)}})(i[E]);1a;17"2R":d[E]=d[E]||{};aD.1F(9,d[E],i[E]);1a;2O:d[E]=i[E];1a}}}},aj=14(d,e){d==e.1w&&(e.1w=d.20);d==e.2e&&(e.2e=d.1Z);d.1Z&&(d.1Z.20=d.20);d.20&&(d.20.1Z=d.1Z)},X=14(d,e){12(e.1w===d){13}aj(d,e);d.1Z=1h;d.20=e.1w;e.1w.1Z=d;e.1w=d},k=14(d,e){12(e.2e===d){13}aj(d,e);d.1Z=e.2e;d.20=1h;e.2e.20=d;e.2e=d},B=14(e,d,i){aj(e,i);d==i.1w&&(i.1w=e);d.1Z&&(d.1Z.20=e);e.1Z=d.1Z;e.20=d;d.1Z=e},ao=14(e,d,i){aj(e,i);d==i.2e&&(i.2e=e);d.20&&(d.20.1Z=e);e.20=d.20;d.20=e;e.1Z=d},t=14(d){13 14(){51 1U 56("3K\\\\3J: 7D 59 7E 4y 6l \\\\7F"+d+"\\\\7G 7H 1O 2R");}},ap=/^r(?:\\\\(([^,]+?)\\\\s*,\\\\s*([^\\\\)]+?)\\\\))?/;12(am.3j){1I[1c].6o="3Y://4m.4I.4J/6u/3j";1I[1c].3u="3Y://4m.4I.4J/7I/3u";11 N=14(d){13+d+(~~d===d)*0.5},U=14(S){1i(11 e=0,E=S[m];e0.5)*2-1);1K(1b-0.5,2)+1K(S-0.5,2)>0.25&&(S=aa.3b(0.25-1K(1b-0.5,2))*c+0.5)&&S!=0.5&&(S=S.2T(5)-0.7M*c)}13 aq});f=f[A](/\\\\s*\\\\-\\\\s*/);12(h=="4e"){11 j=f.4P();j=-V(j);12(6H(j)){13 1h}11 R=[0,0,aa.3t(j*aa.3T/37),aa.3f(j*aa.3T/37)],a3=1/(g(aa.2A(R[2]),aa.2A(R[3]))||1);R[2]*=a3;R[3]*=a3;12(R[2]<0){R[0]=-R[2];R[2]=0}12(R[3]<0){R[1]=-R[3];R[3]=0}}11 k=p(f);12(!k){13 1h}11 e=1r(h+"7N");e.2h="r"+(am.4n++)[ax](36);1r(e,h=="4d"?{48:1b,47:S}:{7O:R[0],7P:R[1],7Q:R[2],7R:R[3]});d.42[1q](e);1i(11 l=0,a5=k[m];la.1d)&&(a.1d=b.y+b.1d-a.y);(b.x+b.18-a.x>a.18)&&(a.18=b.x+b.18-a.x)}}E&&9.5k();13 a};1j[1c].1V=14(){12(9.1O){13 9}12(1f[m]==0){11 R={};1i(11 E 1y 9.1e){12(9.1e[P](E)){R[E]=9.1e[E]}}9.1t.1B.24&&(R.2f=9.23());(9.1t.2y!=1||9.1t.2o!=1)&&(R.1J=9.1J());R.1S&&R.1m=="1C"&&(R.1m=R.1S)&&22 R.1S;13 R}12(1f[m]==1&&am.1u(1f[0],"2l")){12(1f[0]=="2C"){13 u.1F(9)}12(1f[0]=="2f"){13 9.23()}12(1f[0]=="1J"){13 9.1J()}12(1f[0]=="1m"&&9.1e.1m=="1C"&&9.1e.1S){13 9.1e.1S}13 9.1e[1f[0]]}12(1f[m]==1&&am.1u(1f[0],"2g")){11 d={};1i(11 e 1y 1f[0]){12(1f[0][P](e)){d[1f[0][e]]=9.1e[1f[0][e]]}}13 d}12(1f[m]==2){11 S={};S[1f[0]]=1f[1];Z(9,S)}1n{12(1f[m]==1&&am.1u(1f[0],"2R")){Z(9,1f[0])}}13 9};1j[1c].6R=14(){12(9.1O){13 9}9.1o.1G[1q](9.1o);11 d=9.1x;d.1w!=9&&X(9,d);13 9};1j[1c].6Q=14(){12(9.1O){13 9}12(9.1o.1G.2j!=9.1o){9.1o.1G.2B(9.1o,9.1o.1G.2j);k(9,9.1x);11 d=9.1x}13 9};1j[1c].4q=14(d){12(9.1O){13 9}11 e=d.1o;12(e.4A){e.1G.2B(9.1o,e.4A)}1n{e.1G[1q](9.1o)}B(9,d,9.1x);13 9};1j[1c].2B=14(d){12(9.1O){13 9}11 e=d.1o;e.1G.2B(9.1o,e);ao(9,d,9.1x);13 9};1j[1c].3O=14(){12(9.1p!="1s"){13-1}13 9.1o.3O()};11 O=14(e,d,S,R){d=N(d);S=N(S);11 E=1r("2p");e.1E&&e.1E[1q](E);11 i=1U 1j(E,e);i.1e={1Q:d,1Y:S,r:R,1m:"1C",1g:"#2n"};i.1p="2p";1r(E,i.1e);13 i};11 5F=14(i,d,a,e,S,b){d=N(d);a=N(a);11 R=1r("1M");i.1E&&i.1E[1q](R);11 E=1U 1j(R,i);E.1e={x:d,y:a,18:e,1d:S,r:b||0,2z:b||0,2t:b||0,1m:"1C",1g:"#2n"};E.1p="1M";1r(R,E.1e);13 E};11 5D=14(e,d,a,S,R){d=N(d);a=N(a);11 E=1r("2u");e.1E&&e.1E[1q](E);11 i=1U 1j(E,e);i.1e={1Q:d,1Y:a,2z:S,2t:R,1m:"1C",1g:"#2n"};i.1p="2u";1r(E,i.1e);13 i};11 o=14(i,a,d,b,e,S){11 R=1r("2i");1r(R,{x:d,y:b,18:e,1d:S,88:"1C"});R.4u(i.3u,"3e",a);i.1E&&i.1E[1q](R);11 E=1U 1j(R,i);E.1e={x:d,y:b,18:e,1d:S,2K:a};E.1p="2i";13 E};11 W=14(e,d,S,R){11 E=1r("1D");1r(E,{x:d,y:S,"1D-4l":"4o"});e.1E&&e.1E[1q](E);11 i=1U 1j(E,e);i.1e={x:d,y:S,"1D-4l":"4o",1D:R,1v:j.1v,1g:"1C",1m:"#2n"};i.1p="1D";Z(i,i.1e);13 i};11 5B=14(e,d){9.18=e||9.18;9.1d=d||9.1d;9.1E[w]("18",9.18);9.1E[w]("1d",9.1d);13 9};11 x=14(){11 E=an[1R](1h,1f),i=E&&E.3n,e=E.x,15=E.y,R=E.18,d=E.1d;12(!i){51 1U 56("4C 3n 6P 6O.");}11 S=1r("3j");R=R||6N;d=d||6L;1r(S,{6K:"3Y://4m.4I.4J/6u/3j",4B:1.1,18:R,1d:d});12(i==1){S.1k.2G="2v:2q;1X:"+e+"1l;1w:"+15+"1l";K.35[1q](S)}1n{12(i.2j){i.2B(S,i.2j)}1n{i[1q](S)}}i=1U 1I;i.18=R;i.1d=d;i.1E=S;aD.1F(i,i,am.5w);i.5u();13 i};1I[1c].5u=14(){11 d=9.1E;2N(d.2j){d.2w(d.2j)}9.2e=9.1w=1h;(9.5t=1r("5t"))[1q](K.6W("89 8a 3K\\\\3J"));d[1q](9.5t);d[1q](9.42=1r("42"))};1I[1c].3H=14(){9.1E.1G&&9.1E.1G.2w(9.1E);1i(11 d 1y 9){9[d]=t(d)}}}12(am.3E){11 6I=14(g){11 h=/[8b]/5C,15=s;(g+aq).3z(h)&&(15=H);h=/[5q]/g;12(15==s&&!(g+aq).3z(h)){11 e={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},R=/([5q]),?([^5q]*)/6i,S=/-?[^,\\\\s-]+/g;11 j=(g+aq)[1L](R,14(b,c,i){11 d=[];i[1L](S,14(a){d[f](N(a))});13 e[c]+d});13 j}11 k=15(g),E,j=[],d;1i(11 l=0,a4=k[m];l1&&(e=1);l.1z=e}g.1m&&(l.2r=27);12(l.2r==1h||g.1m=="1C"){l.2r=3o}12(l.2r&&g.1m){11 i=g.1m.3z(c);12(i){l.2K=i[1];l.1p="8l"}1n{l.28=am.2P(g.1m).2F;l.2K=aq;l.1p="8m";12(am.2P(g.1m).3Q&&(1A.1p 1y{2p:1,2u:1}||(g.1m+aq).31()!="r")&&b(1A,g.1m)){a6.1m="1C";a6.1S=g.1m}}}a7&&h[1q](l);11 R=(h.3r("1g")&&h.3r("1g")[0]),a8=3o;!R&&(a8=R=ag("1g"));12((g.1g&&g.1g!="1C")||g["1g-18"]||g["1g-1z"]!=1h||g["1g-2S"]||g["1g-4b"]||g["1g-46"]||g["1g-34"]){R.2r=27}(g.1g=="1C"||R.2r==1h||g.1g==0||g["1g-18"]==0)&&(R.2r=3o);R.2r&&g.1g&&(R.28=am.2P(g.1g).2F);11 e=((+a6["1g-1z"]+1||2)-1)*((+a6.1z+1||2)-1),a1=(V(g["1g-18"])||1)*0.75;e<0&&(e=0);e>1&&(e=1);g["1g-18"]==1h&&(a1=a6["1g-18"]);g["1g-18"]&&(R.30=a1);a1&&a1<1&&(e*=a1)&&(R.30=1);R.1z=e;g["1g-46"]&&(R.8n=g["1g-46"]||"8o");R.4b=g["1g-4b"]||8;g["1g-34"]&&(R.8p=g["1g-34"]=="4r"?"8q":g["1g-34"]=="5E"?"5E":"4V");12(g["1g-2S"]){11 n={"-":"8r",".":"8t","-.":"8v","-..":"8x",". ":"8z","- ":"8A","--":"8B","- .":"8C","--.":"8D","--..":"8E"};R.8F=n[P](g["1g-2S"])?n[g["1g-2S"]]:aq}a8&&h[1q](R)}12(1A.1p=="1D"){11 o=1A.1x.2x.1k;a6.1v&&(o.1v=a6.1v);a6["1v-3L"]&&(o.6e=a6["1v-3L"]);a6["1v-2W"]&&(o.6a=a6["1v-2W"]);a6["1v-30"]&&(o.69=a6["1v-30"]);a6["1v-1k"]&&(o.66=a6["1v-1k"]);1A.1o.2l&&(1A.1x.2x.5b=(1A.1o.2l+aq)[1L](/"));1A.W=a6.w=1A.1x.2x.4M;1A.H=a6.h=1A.1x.2x.4K;1A.X=a6.x;1A.Y=a6.y+N(1A.H/2);2b(a6["1D-4l"]){17"2a":1A.1o.1k["v-1D-4Y"]="1X";1A.4Z=N(1A.W/2);1a;17"3U":1A.1o.1k["v-1D-4Y"]="8G";1A.4Z=-N(1A.W/2);1a;2O:1A.1o.1k["v-1D-4Y"]="8H";1a}}};11 b=14(d,c){d.1e=d.1e||{};11 g=d.1e,a1=d.1o.3r("1m"),S="4e",15=".5 .5";d.1e.1S=c;c=(c+aq)[1L](ap,14(a,b,i){S="4d";12(b&&i){b=V(b);i=V(i);1K(b-0.5,2)+1K(i-0.5,2)>0.25&&(i=aa.3b(0.25-1K(b-0.5,2))*((i>0.5)*2-1)+0.5);15=b+al+i}13 aq});c=c[A](/\\\\s*\\\\-\\\\s*/);12(S=="4e"){11 e=c.4P();e=-V(e);12(6H(e)){13 1h}}11 R=p(c);12(!R){13 1h}d=d.2H||d.1o;a1=a1[0]||ag("1m");12(R[m]){a1.2r=27;a1.6l="1C";a1.1p=(S=="4d")?"8I":"1S";a1.28=R[0].28;a1.8K=R[R[m]-1].28;11 h=[];1i(11 E=0,a0=R[m];E\\\')}}4h(ae){ag=14(d){13 K.2X("<"+d+\\\' 6K="5S:5R-5Q.5h:3E" 5O="3x">\\\')}}11 x=14(){11 i=an[1R](1h,1f),d=i.3n,19=i.1d,a0,e=i.18,1b=i.x,15=i.y;12(!d){51 1U 56("3w 3n 6P 6O.");}11 R=1U 1I,S=R.1E=K.2X("4S"),E=S.1k;e=e||6N;19=19||6L;e==+e&&(e+="1l");19==+19&&(19+="1l");R.18=3P;R.1d=3P;R.2c="3P 3P";R.2d="0 0";R.2x=K.2X("2x");R.2x.1k.2G="2v:2q;1X:-4E;1w:-4E;5N:0;5K:0;5I-1d:1;3g:61;";S[1q](R.2x);E.2G=am.2Z("18:{0};1d:{1};2v:2q;1P:1M(0 {0} {1} 0);95:96",e,19);12(d==1){K.35[1q](S);E.1X=1b+"1l";E.1w=15+"1l"}1n{d.1k.18=e;d.1k.1d=19;12(d.2j){d.2B(S,d.2j)}1n{d[1q](S)}}aD.1F(R,R,am.5w);13 R};1I[1c].5u=14(){9.1E.5b=aq;9.2x=K.2X("2x");9.2x.1k.2G="2v:2q;1X:-4E;1w:-4E;5N:0;5K:0;5I-1d:1;3g:61;";9.1E[1q](9.2x);9.2e=9.1w=1h};1I[1c].3H=14(){9.1E.1G.2w(9.1E);1i(11 d 1y 9){9[d]=t(d)}}}12((/^97|^98/).58(5J.9b)&&!(5J.9d.67("9e/4.0")+1)){1I[1c].4s=14(){11 d=9.1M(-99,-99,9.18+99,9.1d+99);5P(14(){d.3H()})}}1n{1I[1c].4s=14(){}}11 5l=(14(){12(K.70){13 14(R,i,e,d){11 E=14(S){13 e.1F(d,S)};R.70(i,E,3o);13 14(){R.9j(i,E,3o);13 27}}}1n{12(K.5W){13 14(S,E,i,e){11 R=14(a){13 i.1F(e,a||ar.9k)};S.5W("2r"+E,R);11 d=14(){S.9l("2r"+E,R);13 27};13 d}}}})();1i(11 5f=F[m];5f--;){(14(d){1j[1c][d]=14(e){12(am.1u(e,"14")){9.2L=9.2L||[];9.2L.63({5m:d,f:e,5j:5l(9.2H||9.1o,d,e,9)})}13 9};1j[1c]["9m"+d]=14(E){11 i=9.2L,e=i[m];2N(e--){12(i[e].5m==d&&i[e].f==E){i[e].5j();i.2Y(e,1);!i.3v&&22 9.2L;13 9}}13 9}})(F[5f])}1j[1c].9n=14(e,d){13 9.5L(e).5M(d)};1j[1c].9p=14(e,d){13 9.9s(e).9t(d)};1I[1c].2p=14(d,i,e){13 O(9,d||0,i||0,e||0)};1I[1c].1M=14(d,R,e,i,E){13 5F(9,d||0,R||0,e||0,i||0,E||0)};1I[1c].2u=14(d,E,i,e){13 5D(9,d||0,E||0,i||0,e||0)};1I[1c].1s=14(d){d&&!am.1u(d,"2l")&&!am.1u(d[0],"2g")&&(d+=aq);13 q(am.2Z[1R](am,1f),9)};1I[1c].2i=14(E,d,R,e,i){13 o(9,E||"9u:9v",d||0,R||0,e||0,i||0)};1I[1c].1D=14(d,i,e){13 W(9,d||0,i||0,e||aq)};1I[1c].4U=14(d){1f[m]>1&&(d=6f[1c].2Y.1F(1f,0,1f[m]));13 1U Q(d)};1I[1c].9w=5B;1I[1c].1w=1I[1c].2e=1h;1I[1c].4H=am;14 v(){13 9.x+al+9.y}1j[1c].1J=14(a,b,E,e){12(a==1h&&b==1h){13{x:9.1t.2y,y:9.1t.2o,5a:v}}b=b||a;!+b&&(b=a);11 c,a5,a6,a4,1H=9.1e;12(a!=0){11 f=9.2J(),1b=f.x+f.18/2,R=f.y+f.1d/2,2D=a/9.1t.2y,2m=b/9.1t.2o;E=(+E||E==0)?E:1b;e=(+e||e==0)?e:R;11 g=~~(a/aa.2A(a)),15=~~(b/aa.2A(b)),1A=9.1o.1k,2k=E+(1b-E)*2D,2E=e+(R-e)*2m;2b(9.1p){17"1M":17"2i":11 h=1H.18*g*2D,a9=1H.1d*15*2m;9.1V({1d:a9,r:1H.r*aF(g*2D,15*2m),18:h,x:2k-h/2,y:2E-a9/2});1a;17"2p":17"2u":9.1V({2z:1H.2z*g*2D,2t:1H.2t*15*2m,r:1H.r*aF(g*2D,15*2m),1Q:2k,1Y:2E});1a;17"1s":11 i=ac(1H.1s),3k=27;1i(11 j=0,a8=i[m];jS){12(e&&!a5.2a){11 c=am.4F(a1,a0,E[1],E[2],E[3],E[4],E[5],E[6],(S-19)/15);R+=["C",c.2a.x,c.2a.y,c.m.x,c.m.y,c.x,c.y];a5.2a=R;R=["M",c.x,c.y,"C",c.n.x,c.n.y,c.3U.x,c.3U.y,E[5],E[6]][aw]();19+=15;a1=+E[5];a0=+E[6];4N}12(!d&&!e){13 am.4F(a1,a0,E[1],E[2],E[3],E[4],E[5],E[6],(S-19)/15)}}19+=15;a1=+E[5];a0=+E[6]}R+=E}a5.3U=R;13 d?19:e?a5:am.4F(a1,a0,E[1],E[2],E[3],E[4],E[5],E[6],1)}},n=ai(14(E,d,a,S,b,c,f,g){11 R={x:0,y:0},19=0;1i(11 h=0;h<1.6c;h+=0.6c){11 e=L(E,d,a,S,b,c,f,g,h);h&&(19+=aa.3b(1K(R.x-e.x,2)+1K(R.y-e.y,2)));R=e}13 19});1j[1c].3O=4O(1);1j[1c].4G=4O();1j[1c].9K=4O(0,1);am.5d={4e:14(d){13 d},"<":14(d){13 1K(d,3)},">":14(d){13 1K(d-1,3)+1},"<>":14(d){d=d*2;12(d<1){13 1K(d,3)/2}d-=2;13(1K(d,3)+2)/2},9L:14(e){11 d=1.6m;13 e*e*((d+1)*e-d)},9M:14(e){e=e-1;11 d=1.6m;13 e*e*((d+1)*e+d)+1},9N:14(i){12(i==0||i==1){13 i}11 e=0.3,d=e/4;13 1K(2,-10*i)*aa.3f((i-d)*(2*aa.3T)/e)+1},9O:14(E){11 e=7.9P,i=2.75,d;12(E<(1/i)){d=e*E*E}1n{12(E<(2/i)){E-=(1.5/i);d=e*E*E+0.75}1n{12(E<(2.5/i)){E-=(2.25/i);d=e*E*E+0.9Q}1n{E-=(2.9R/i);d=e*E*E+0.9S}}}13 d}};11 I={3v:0},5g=14(){11 a=+1U 6p;1i(11 b 1y I){12(b!="3v"&&I[P](b)){11 c=I[b];12(c.3s){22 I[b];I[m]--;4N}11 e=a-c.2a,a8=c.6q,a7=c.6r,1W=c.6s,a4=c.6t,E=c.4y,a3=c.t,a6=c.20||0,1b=c.5i,R=c.6z,a5={},d;12(e2s?2s:(d<0?0:d)},u=14(d,i){12(d==1h){13{x:9.1t.3X,y:9.1t.44,5a:v}}9.1t.3X+=+d;9.1t.44+=+i;2b(9.1p){17"2p":17"2u":9.1V({1Q:+d+9.1e.1Q,1Y:+i+9.1e.1Y});1a;17"1M":17"2i":17"1D":9.1V({x:+d+9.1e.x,y:+i+9.1e.y});1a;17"1s":11 e=ac(9.1e.1s);e[0][1]+=+d;e[0][2]+=+i;9.1V({1s:e});1a}13 9};1j[1c].6F=14(e,i,d,R,E){I[e.2h]&&(i.2a=I[e.2h].2a);13 9.4g(i,d,R,E)};1j[1c].9T=14(E,e,d,S){11 R={};am.1u(d,"14")?(S=d):(R.3I=d);12(am.1u(E,"2l")&&E.3N!=1j){E=r.1s(E).1V({1g:"1C"});11 i=14(){E.3H()};S=am.1u(S,"14")?14(){i();S.1F(9)}:i}E.3N==1j&&(R.3d=E);13 9.4g(R,e,S)};1j[1c].9U=14(d){9.5p=d||0;13 9};1j[1c].4g=14(b,c,f,E){12(am.1u(f,"14")||!f){E=f||1h}11 g={},e={},1b={};1i(11 h 1y b){12(b[P](h)){12(Y[P](h)){g[h]=9.1V(h);(g[h]==1h)&&(g[h]=j[h]);e[h]=b[h];2b(Y[h]){17"3d":11 i=b[h].4G(0);1b[h]=b[h].3O()/c;1b.3X=9.2J().x;1b.44=9.2J().y;1b.2y=i.x;1b.2o=i.y;e.3I=b.3I;b.3I&&(1b.r=V(9.23()));1a;17"5c":1b[h]=(e[h]-g[h])/c;1a;17"4L":g[h]=am.2P(g[h]);11 k=am.2P(e[h]);1b[h]={r:(k.r-g[h].r)/c,g:(k.g-g[h].g)/c,b:(k.b-g[h].b)/c};1a;17"1s":11 R=H(g[h],e[h]);g[h]=R[0];11 l=R[1];1b[h]=[];1i(11 n=0,15=g[h][m];n<15;n++){1b[h][n]=[0];1i(11 o=1,a8=g[h][n][m];o

";if(ag.childNodes[m]!=2){return null;}}an.svg=!(an.vml=an.type=="VML");aT[aY]=an[aY];an._id=0;an._oid=0;an.fn={};an.is=function(e,d){d=aZ.call(d);return((d=="object"||d=="undefined")&&typeof e==d)||(e==null&&d=="null")||aZ.call(aw.call(e).slice(8,-1))==d;};an.setWindow=function(d){au=d;L=au.document;};var aD=function(e){if(an.vml){var d=/^\s+|\s+$/g;aD=aj(function(R){var S;R=(R+at)[aP](d,at);try{var a0=new ActiveXObject("htmlfile");a0.write("");a0.close();S=a0.body;}catch(a2){S=createPopup().document.body;}var i=S.createTextRange();try{S.style.color=R;var a1=i.queryCommandValue("ForeColor");a1=((a1&255)<<16)|(a1&65280)|((a1&16711680)>>>16);return"#"+("000000"+a1[aA](16)).slice(-6);}catch(a2){return"none";}});}else{var E=L.createElement("i");E.title="Rapha\xebl Colour Picker";E.style.display="none";L.body[aL](E);aD=aj(function(i){E.style.color=i;return L.defaultView.getComputedStyle(E,at).getPropertyValue("color");});}return aD(e);};an.hsb2rgb=aj(function(a3,a1,a7){if(an.is(a3,"object")&&"h" in a3&&"s" in a3&&"b" in a3){a7=a3.b;a1=a3.s;a3=a3.h;}var R,S,a8;if(a7==0){return{r:0,g:0,b:0,hex:"#000"};}if(a3>1||a1>1||a7>1){a3/=255;a1/=255;a7/=255;}var a0=~~(a3*6),a4=(a3*6)-a0,E=a7*(1-a1),e=a7*(1-(a1*a4)),a9=a7*(1-(a1*(1-a4)));R=[a7,e,E,E,a9,a7,a7][a0];S=[a9,a7,a7,e,E,E,a9][a0];a8=[E,E,a9,a7,a7,e,E][a0];R*=255;S*=255;a8*=255;var a5={r:R,g:S,b:a8},d=(~~R)[aA](16),a2=(~~S)[aA](16),a6=(~~a8)[aA](16);d=d[aP](aU,"0");a2=a2[aP](aU,"0");a6=a6[aP](aU,"0");a5.hex="#"+d+a2+a6;return a5;},an);an.rgb2hsb=aj(function(d,e,a1){if(an.is(d,"object")&&"r" in d&&"g" in d&&"b" in d){a1=d.b;e=d.g;d=d.r;}if(an.is(d,"string")){var a3=an.getRGB(d);d=a3.r;e=a3.g;a1=a3.b;}if(d>1||e>1||a1>1){d/=255;e/=255;a1/=255;}var a0=g(d,e,a1),i=aI(d,e,a1),R,E,S=a0;if(i==a0){return{h:0,s:0,b:a0};}else{var a2=(a0-i);E=a2/a0;if(d==a0){R=(e-a1)/a2;}else{if(e==a0){R=2+((a1-d)/a2);}else{R=4+((d-e)/a2);}}R/=6;R<0&&R++;R>1&&R--;}return{h:R,s:E,b:S};},an);var aE=/,?([achlmqrstvxz]),?/gi;an._path2string=function(){return this.join(",")[aP](aE,"$1");};function aj(E,e,d){function i(){var R=Array[aY].slice.call(arguments,0),a0=R[az]("\u25ba"),S=i.cache=i.cache||{},a1=i.count=i.count||[];if(S[Q](a0)){return d?d(S[a0]):S[a0];}a1[m]>=1000&&delete S[a1.shift()];a1[f](a0);S[a0]=E[aW](e,R);return d?d(S[a0]):S[a0];}return i;}an.getRGB=aj(function(d){if(!d||!!((d=d+at).indexOf("-")+1)){return{r:-1,g:-1,b:-1,hex:"none",error:1};}if(d=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}!(({hs:1,rg:1})[Q](d.substring(0,2))||d.charAt()=="#")&&(d=aD(d));var S,i,E,a2,a3,a0=d.match(x);if(a0){if(a0[2]){a2=G(a0[2].substring(5),16);E=G(a0[2].substring(3,5),16);i=G(a0[2].substring(1,3),16);}if(a0[3]){a2=G((a3=a0[3].charAt(3))+a3,16);E=G((a3=a0[3].charAt(2))+a3,16);i=G((a3=a0[3].charAt(1))+a3,16);}if(a0[4]){a0=a0[4][z](/\s*,\s*/);i=W(a0[0]);E=W(a0[1]);a2=W(a0[2]);}if(a0[5]){a0=a0[5][z](/\s*,\s*/);i=W(a0[0])*2.55;E=W(a0[1])*2.55;a2=W(a0[2])*2.55;}if(a0[6]){a0=a0[6][z](/\s*,\s*/);i=W(a0[0]);E=W(a0[1]);a2=W(a0[2]);return an.hsb2rgb(i,E,a2);}if(a0[7]){a0=a0[7][z](/\s*,\s*/);i=W(a0[0])*2.55;E=W(a0[1])*2.55;a2=W(a0[2])*2.55;return an.hsb2rgb(i,E,a2);}a0={r:i,g:E,b:a2};var e=(~~i)[aA](16),R=(~~E)[aA](16),a1=(~~a2)[aA](16);e=e[aP](aU,"0");R=R[aP](aU,"0");a1=a1[aP](aU,"0");a0.hex="#"+e+R+a1;return a0;}return{r:-1,g:-1,b:-1,hex:"none",error:1};},an);an.getColor=function(e){var i=this.getColor.start=this.getColor.start||{h:0,s:1,b:e||0.75},d=this.hsb2rgb(i.h,i.s,i.b);i.h+=0.075;if(i.h>1){i.h=0;i.s-=0.2;i.s<=0&&(this.getColor.start={h:0,s:1,b:i.b});}return d.hex;};an.getColor.reset=function(){delete this.start;};an.parsePathString=aj(function(d){if(!d){return null;}var i={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},e=[];if(an.is(d,"array")&&an.is(d[0],"array")){e=av(d);}if(!e[m]){(d+at)[aP](/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(R,E,a1){var a0=[],S=aZ.call(E);a1[aP](/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(a3,a2){a2&&a0[f](+a2);});while(a0[m]>=i[S]){e[f]([E][aS](a0.splice(0,i[S])));if(!i[S]){break;}}});}e[aA]=an._path2string;return e;});an.findDotsAtSegment=function(e,d,be,bc,a0,R,a2,a1,a8){var a6=1-a8,a5=aM(a6,3)*e+aM(a6,2)*3*a8*be+a6*3*a8*a8*a0+aM(a8,3)*a2,a3=aM(a6,3)*d+aM(a6,2)*3*a8*bc+a6*3*a8*a8*R+aM(a8,3)*a1,ba=e+2*a8*(be-e)+a8*a8*(a0-2*be+e),a9=d+2*a8*(bc-d)+a8*a8*(R-2*bc+d),bd=be+2*a8*(a0-be)+a8*a8*(a2-2*a0+be),bb=bc+2*a8*(R-bc)+a8*a8*(a1-2*R+bc),a7=(1-a8)*e+a8*be,a4=(1-a8)*d+a8*bc,E=(1-a8)*a0+a8*a2,i=(1-a8)*R+a8*a1,S=(90-ab.atan((ba-bd)/(a9-bb))*180/ab.PI);(ba>bd||a9a2){a3=a3-R*2;}if(!S&&a2>a3){a2=a2-R*2;}}else{a3=bb[0];a2=bb[1];bd=bb[2];bc=bb[3];}var a7=a2-a3;if(ab.abs(a7)>bf){var be=a2,bh=a8,a5=bC;a2=a3+bf*(S&&a2>a3?1:-1);a8=bd+bi*ab.cos(a2);bC=bc+bg*ab.sin(a2);bm=K(a8,bC,bi,bg,ba,0,S,bh,a5,[a2,be,bd,bc]);}a7=a2-a3;var a1=ab.cos(a3),bB=ab.sin(a3),a0=ab.cos(a2),bA=ab.sin(a2),bp=ab.tan(a7/4),bs=4/3*bi*bp,bq=4/3*bg*bp,by=[a9,bD],bx=[a9+bs*bB,bD-bq*a1],bw=[a8+bs*bA,bC-bq*a0],bu=[a8,bC];bx[0]=2*by[0]-bx[0];bx[1]=2*by[1]-bx[1];if(bb){return[bx,bw,bu][aS](bm);}else{bm=[bx,bw,bu][aS](bm)[az]()[z](",");var bk=[];for(var bv=0,bl=bm[m];bv1000000000000&&(a0=0.5);ab.abs(S)>1000000000000&&(S=0.5);if(a0>0&&a0<1){e=M(i,d,R,E,a9,a8,a5,a2,a0);a6[f](e.x);a3[f](e.y);}if(S>0&&S<1){e=M(i,d,R,E,a9,a8,a5,a2,S);a6[f](e.x);a3[f](e.y);}a7=(a8-2*E+d)-(a2-2*a8+E);a4=2*(E-d)-2*(a8-E);a1=d-E;a0=(-a4+ab.sqrt(a4*a4-4*a7*a1))/2/a7;S=(-a4-ab.sqrt(a4*a4-4*a7*a1))/2/a7;ab.abs(a0)>1000000000000&&(a0=0.5);ab.abs(S)>1000000000000&&(S=0.5);if(a0>0&&a0<1){e=M(i,d,R,E,a9,a8,a5,a2,a0);a6[f](e.x);a3[f](e.y);}if(S>0&&S<1){e=M(i,d,R,E,a9,a8,a5,a2,S);a6[f](e.x);a3[f](e.y);}return{min:{x:aI[aW](0,a6),y:aI[aW](0,a3)},max:{x:g[aW](0,a6),y:g[aW](0,a3)}};}),H=aj(function(a9,a4){var R=r(a9),a5=a4&&r(a4),a6={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},d={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a0=function(ba,bb){var i,bc;if(!ba){return["C",bb.x,bb.y,bb.x,bb.y,bb.x,bb.y];}!(ba[0] in {T:1,Q:1})&&(bb.qx=bb.qy=null);switch(ba[0]){case"M":bb.X=ba[1];bb.Y=ba[2];break;case"A":ba=["C"][aS](K[aW](0,[bb.x,bb.y][aS](ba.slice(1))));break;case"S":i=bb.x+(bb.x-(bb.bx||bb.x));bc=bb.y+(bb.y-(bb.by||bb.y));ba=["C",i,bc][aS](ba.slice(1));break;case"T":bb.qx=bb.x+(bb.x-(bb.qx||bb.x));bb.qy=bb.y+(bb.y-(bb.qy||bb.y));ba=["C"][aS](aK(bb.x,bb.y,bb.qx,bb.qy,ba[1],ba[2]));break;case"Q":bb.qx=ba[1];bb.qy=ba[2];ba=["C"][aS](aK(bb.x,bb.y,ba[1],ba[2],ba[3],ba[4]));break;case"L":ba=["C"][aS](aX(bb.x,bb.y,ba[1],ba[2]));break;case"H":ba=["C"][aS](aX(bb.x,bb.y,ba[1],bb.y));break;case"V":ba=["C"][aS](aX(bb.x,bb.y,bb.x,ba[1]));break;case"Z":ba=["C"][aS](aX(bb.x,bb.y,bb.X,bb.Y));break;}return ba;},e=function(ba,bb){if(ba[bb][m]>7){ba[bb].shift();var bc=ba[bb];while(bc[m]){ba.splice(bb++,0,["C"][aS](bc.splice(0,6)));}ba.splice(bb,1);a7=g(R[m],a5&&a5[m]||0);}},E=function(be,bd,bb,ba,bc){if(be&&bd&&be[bc][0]=="M"&&bd[bc][0]!="M"){bd.splice(bc,0,["M",ba.x,ba.y]);bb.bx=0;bb.by=0;bb.x=be[bc][1];bb.y=be[bc][2];a7=g(R[m],a5&&a5[m]||0);}};for(var a2=0,a7=g(R[m],a5&&a5[m]||0);a23){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},aG=function(d,i){var e=this;for(var E in i){if(i[Q](E)&&!(E in d)){switch(typeof i[E]){case"function":(function(R){d[E]=d===e?R:function(){return R[aW](e,arguments);};})(i[E]);break;case"object":d[E]=d[E]||{};aG.call(this,d[E],i[E]);break;default:d[E]=i[E];break;}}}},ak=function(d,e){d==e.top&&(e.top=d.prev);d==e.bottom&&(e.bottom=d.next);d.next&&(d.next.prev=d.prev);d.prev&&(d.prev.next=d.next);},Y=function(d,e){if(e.top===d){return;}ak(d,e);d.next=null;d.prev=e.top;e.top.next=d;e.top=d;},k=function(d,e){if(e.bottom===d){return;}ak(d,e);d.next=e.bottom;d.prev=null;e.bottom.prev=d;e.bottom=d;},A=function(e,d,i){ak(e,i);d==i.top&&(i.top=e);d.next&&(d.next.prev=e);e.next=d.next;e.prev=d;d.next=e;},aq=function(e,d,i){ak(e,i);d==i.bottom&&(i.bottom=e);d.prev&&(d.prev.next=e);e.prev=d.prev;d.prev=e;e.next=d;},s=function(d){return function(){throw new Error("Rapha\xebl: you are calling to method \u201c"+d+"\u201d of removed object");};},ar=/^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/;if(an.svg){aT[aY].svgns="http://www.w3.org/2000/svg";aT[aY].xlink="http://www.w3.org/1999/xlink";var O=function(d){return +d+(~~d===d)*0.5;},V=function(S){for(var e=0,E=S[m];e0.5)*2-1);aM(a1-0.5,2)+aM(S-0.5,2)>0.25&&(S=ab.sqrt(0.25-aM(a1-0.5,2))*ba+0.5)&&S!=0.5&&(S=S.toFixed(5)-0.00001*ba);}return at;});a7=a7[z](/\s*\-\s*/);if(a4=="linear"){var a0=a7.shift();a0=-W(a0);if(isNaN(a0)){return null;}var R=[0,0,ab.cos(a0*ab.PI/180),ab.sin(a0*ab.PI/180)],a6=1/(g(ab.abs(R[2]),ab.abs(R[3]))||1);R[2]*=a6;R[3]*=a6;if(R[2]<0){R[0]=-R[2];R[2]=0;}if(R[3]<0){R[1]=-R[3];R[3]=0;}}var a3=p(a7);if(!a3){return null;}var e=aJ(a4+"Gradient");e.id="r"+(an._id++)[aA](36);aJ(e,a4=="radial"?{fx:a1,fy:S}:{x1:R[0],y1:R[1],x2:R[2],y2:R[3]});d.defs[aL](e);for(var a2=0,a8=a3[m];a2a1.height)&&(a1.height=a0.y+a0.height-a1.y);(a0.x+a0.width-a1.x>a1.width)&&(a1.width=a0.x+a0.width-a1.x);}}E&&this.hide();return a1;};ax[aY].attr=function(){if(this.removed){return this;}if(arguments[m]==0){var R={};for(var E in this.attrs){if(this.attrs[Q](E)){R[E]=this.attrs[E];}}this._.rt.deg&&(R.rotation=this.rotate());(this._.sx!=1||this._.sy!=1)&&(R.scale=this.scale());R.gradient&&R.fill=="none"&&(R.fill=R.gradient)&&delete R.gradient;return R;}if(arguments[m]==1&&an.is(arguments[0],"string")){if(arguments[0]=="translation"){return t.call(this);}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}if(arguments[0]=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient){return this.attrs.gradient;}return this.attrs[arguments[0]];}if(arguments[m]==1&&an.is(arguments[0],"array")){var d={};for(var e in arguments[0]){if(arguments[0][Q](e)){d[arguments[0][e]]=this.attrs[arguments[0][e]];}}return d;}if(arguments[m]==2){var S={};S[arguments[0]]=arguments[1];aa(this,S);}else{if(arguments[m]==1&&an.is(arguments[0],"object")){aa(this,arguments[0]);}}return this;};ax[aY].toFront=function(){if(this.removed){return this;}this.node.parentNode[aL](this.node);var d=this.paper;d.top!=this&&Y(this,d);return this;};ax[aY].toBack=function(){if(this.removed){return this;}if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);k(this,this.paper);var d=this.paper;}return this;};ax[aY].insertAfter=function(d){if(this.removed){return this;}var e=d.node;if(e.nextSibling){e.parentNode.insertBefore(this.node,e.nextSibling);}else{e.parentNode[aL](this.node);}A(this,d,this.paper);return this;};ax[aY].insertBefore=function(d){if(this.removed){return this;}var e=d.node;e.parentNode.insertBefore(this.node,e);aq(this,d,this.paper);return this;};var P=function(e,d,S,R){d=O(d);S=O(S);var E=aJ("circle");e.canvas&&e.canvas[aL](E);var i=new ax(E,e);i.attrs={cx:d,cy:S,r:R,fill:"none",stroke:"#000"};i.type="circle";aJ(E,i.attrs);return i;};var aF=function(i,d,a1,e,S,a0){d=O(d);a1=O(a1);var R=aJ("rect");i.canvas&&i.canvas[aL](R);var E=new ax(R,i);E.attrs={x:d,y:a1,width:e,height:S,r:a0||0,rx:a0||0,ry:a0||0,fill:"none",stroke:"#000"};E.type="rect";aJ(R,E.attrs);return E;};var ai=function(e,d,a0,S,R){d=O(d);a0=O(a0);var E=aJ("ellipse");e.canvas&&e.canvas[aL](E);var i=new ax(E,e);i.attrs={cx:d,cy:a0,rx:S,ry:R,fill:"none",stroke:"#000"};i.type="ellipse";aJ(E,i.attrs);return i;};var o=function(i,a0,d,a1,e,S){var R=aJ("image");aJ(R,{x:d,y:a1,width:e,height:S,preserveAspectRatio:"none"});R.setAttributeNS(i.xlink,"href",a0);i.canvas&&i.canvas[aL](R);var E=new ax(R,i);E.attrs={x:d,y:a1,width:e,height:S,src:a0};E.type="image";return E;};var X=function(e,d,S,R){var E=aJ("text");aJ(E,{x:d,y:S,"text-anchor":"middle"});e.canvas&&e.canvas[aL](E);var i=new ax(E,e);i.attrs={x:d,y:S,"text-anchor":"middle",text:R,font:j.font,stroke:"none",fill:"#000"};i.type="text";aa(i,i.attrs);return i;};var aV=function(e,d){this.width=e||this.width;this.height=d||this.height;this.canvas[v]("width",this.width);this.canvas[v]("height",this.height);return this;};var w=function(){var E=ao[aW](null,arguments),i=E&&E.container,e=E.x,a0=E.y,R=E.width,d=E.height;if(!i){throw new Error("SVG container not found.");}var S=aJ("svg");R=R||512;d=d||342;aJ(S,{xmlns:"http://www.w3.org/2000/svg",version:1.1,width:R,height:d});if(i==1){S.style.cssText="position:absolute;left:"+e+"px;top:"+a0+"px";L.body[aL](S);}else{if(i.firstChild){i.insertBefore(S,i.firstChild);}else{i[aL](S);}}i=new aT;i.width=R;i.height=d;i.canvas=S;aG.call(i,i,an.fn);i.clear();return i;};aT[aY].clear=function(){var d=this.canvas;while(d.firstChild){d.removeChild(d.firstChild);}this.bottom=this.top=null;(this.desc=aJ("desc"))[aL](L.createTextNode("Created with Rapha\xebl"));d[aL](this.desc);d[aL](this.defs=aJ("defs"));};aT[aY].remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var d in this){this[d]=s(d);}};}if(an.vml){var aH=function(a8){var a5=/[ahqstv]/ig,a0=r;(a8+at).match(a5)&&(a0=H);a5=/[clmz]/g;if(a0==r&&!(a8+at).match(a5)){var e={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},R=/([clmz]),?([^clmz]*)/gi,S=/-?[^,\s-]+/g;var a4=(a8+at)[aP](R,function(a9,bb,i){var ba=[];i[aP](S,function(bc){ba[f](O(bc));});return e[bb]+ba;});return a4;}var a6=a0(a8),E,a4=[],d;for(var a2=0,a7=a6[m];a21&&(e=1);a7.opacity=e;}a8.fill&&(a7.on=true);if(a7.on==null||a8.fill=="none"){a7.on=false;}if(a7.on&&a8.fill){var i=a8.fill.match(c);if(i){a7.src=i[1];a7.type="tile";}else{a7.color=an.getRGB(a8.fill).hex;a7.src=at;a7.type="solid";if(an.getRGB(a8.fill).error&&(bd.type in {circle:1,ellipse:1}||(a8.fill+at).charAt()!="r")&&b(bd,a8.fill)){a9.fill="none";a9.gradient=a8.fill;}}}ba&&a6[aL](a7);var R=(a6.getElementsByTagName("stroke")&&a6.getElementsByTagName("stroke")[0]),bb=false;!R&&(bb=R=ah("stroke"));if((a8.stroke&&a8.stroke!="none")||a8["stroke-width"]||a8["stroke-opacity"]!=null||a8["stroke-dasharray"]||a8["stroke-miterlimit"]||a8["stroke-linejoin"]||a8["stroke-linecap"]){R.on=true;}(a8.stroke=="none"||R.on==null||a8.stroke==0||a8["stroke-width"]==0)&&(R.on=false);R.on&&a8.stroke&&(R.color=an.getRGB(a8.stroke).hex);var e=((+a9["stroke-opacity"]+1||2)-1)*((+a9.opacity+1||2)-1),a4=(W(a8["stroke-width"])||1)*0.75;e<0&&(e=0);e>1&&(e=1);a8["stroke-width"]==null&&(a4=a9["stroke-width"]);a8["stroke-width"]&&(R.weight=a4);a4&&a4<1&&(e*=a4)&&(R.weight=1);R.opacity=e;a8["stroke-linejoin"]&&(R.joinstyle=a8["stroke-linejoin"]||"miter");R.miterlimit=a8["stroke-miterlimit"]||8;a8["stroke-linecap"]&&(R.endcap=a8["stroke-linecap"]=="butt"?"flat":a8["stroke-linecap"]=="square"?"square":"round");if(a8["stroke-dasharray"]){var a5={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};R.dashstyle=a5[Q](a8["stroke-dasharray"])?a5[a8["stroke-dasharray"]]:at;}bb&&a6[aL](R);}if(bd.type=="text"){var a0=bd.paper.span.style;a9.font&&(a0.font=a9.font);a9["font-family"]&&(a0.fontFamily=a9["font-family"]);a9["font-size"]&&(a0.fontSize=a9["font-size"]);a9["font-weight"]&&(a0.fontWeight=a9["font-weight"]);a9["font-style"]&&(a0.fontStyle=a9["font-style"]);bd.node.string&&(bd.paper.span.innerHTML=(bd.node.string+at)[aP](/"));bd.W=a9.w=bd.paper.span.offsetWidth;bd.H=a9.h=bd.paper.span.offsetHeight;bd.X=a9.x;bd.Y=a9.y+O(bd.H/2);switch(a9["text-anchor"]){case"start":bd.node.style["v-text-align"]="left";bd.bbx=O(bd.W/2);break;case"end":bd.node.style["v-text-align"]="right";bd.bbx=-O(bd.W/2);break;default:bd.node.style["v-text-align"]="center";break;}}};var b=function(d,a1){d.attrs=d.attrs||{};var a2=d.attrs,a4=d.node.getElementsByTagName("fill"),S="linear",a0=".5 .5";d.attrs.gradient=a1;a1=(a1+at)[aP](ar,function(a6,a7,i){S="radial";if(a7&&i){a7=W(a7);i=W(i);aM(a7-0.5,2)+aM(i-0.5,2)>0.25&&(i=ab.sqrt(0.25-aM(a7-0.5,2))*((i>0.5)*2-1)+0.5);a0=a7+am+i;}return at;});a1=a1[z](/\s*\-\s*/);if(S=="linear"){var e=a1.shift();e=-W(e);if(isNaN(e)){return null;}}var R=p(a1);if(!R){return null;}d=d.shape||d.node;a4=a4[0]||ah("fill");if(R[m]){a4.on=true;a4.method="none";a4.type=(S=="radial")?"gradientradial":"gradient";a4.color=R[0].color;a4.color2=R[R[m]-1].color;var a5=[];for(var E=0,a3=R[m];E');};}catch(af){ah=function(d){return L.createElement("<"+d+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var w=function(){var i=ao[aW](null,arguments),d=i.container,a2=i.height,a3,e=i.width,a1=i.x,a0=i.y;if(!d){throw new Error("VML container not found.");}var R=new aT,S=R.canvas=L.createElement("div"),E=S.style;e=e||512;a2=a2||342;e==+e&&(e+="px");a2==+a2&&(a2+="px");R.width=1000;R.height=1000;R.coordsize="1000 1000";R.coordorigin="0 0";R.span=L.createElement("span");R.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";S[aL](R.span);E.cssText=an.format("width:{0};height:{1};position:absolute;clip:rect(0 {0} {1} 0);overflow:hidden",e,a2);if(d==1){L.body[aL](S);E.left=a1+"px";E.top=a0+"px";}else{d.style.width=e;d.style.height=a2;if(d.firstChild){d.insertBefore(S,d.firstChild);}else{d[aL](S);}}aG.call(R,R,an.fn);return R;};aT[aY].clear=function(){this.canvas.innerHTML=at;this.span=L.createElement("span");this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";this.canvas[aL](this.span);this.bottom=this.top=null;};aT[aY].remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var d in this){this[d]=s(d);}};}if((/^Apple|^Google/).test(navigator.vendor)&&!(navigator.userAgent.indexOf("Version/4.0")+1)){aT[aY].safari=function(){var d=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){d.remove();});};}else{aT[aY].safari=function(){};}var ae=(function(){if(L.addEventListener){return function(R,i,e,d){var E=function(S){return e.call(d,S);};R.addEventListener(i,E,false);return function(){R.removeEventListener(i,E,false);return true;};};}else{if(L.attachEvent){return function(S,E,i,e){var R=function(a0){return i.call(e,a0||au.event);};S.attachEvent("on"+E,R);var d=function(){S.detachEvent("on"+E,R);return true;};return d;};}}})();for(var ac=F[m];ac--;){(function(d){ax[aY][d]=function(e){if(an.is(e,"function")){this.events=this.events||[];this.events.push({name:d,f:e,unbind:ae(this.shape||this.node,d,e,this)});}return this;};ax[aY]["un"+d]=function(E){var i=this.events,e=i[m];while(e--){if(i[e].name==d&&i[e].f==E){i[e].unbind();i.splice(e,1);!i.length&&delete this.events;return this;}}return this;};})(F[ac]);}ax[aY].hover=function(e,d){return this.mouseover(e).mouseout(d);};ax[aY].unhover=function(e,d){return this.unmouseover(e).unmouseout(d);};aT[aY].circle=function(d,i,e){return P(this,d||0,i||0,e||0);};aT[aY].rect=function(d,R,e,i,E){return aF(this,d||0,R||0,e||0,i||0,E||0);};aT[aY].ellipse=function(d,E,i,e){return ai(this,d||0,E||0,i||0,e||0);};aT[aY].path=function(d){d&&!an.is(d,"string")&&!an.is(d[0],"array")&&(d+=at);return q(an.format[aW](an,arguments),this);};aT[aY].image=function(E,d,R,e,i){return o(this,E||"about:blank",d||0,R||0,e||0,i||0);};aT[aY].text=function(d,i,e){return X(this,d||0,i||0,e||at);};aT[aY].set=function(d){arguments[m]>1&&(d=Array[aY].splice.call(arguments,0,arguments[m]));return new T(d);};aT[aY].setSize=aV;aT[aY].top=aT[aY].bottom=null;aT[aY].raphael=an;function u(){return this.x+am+this.y;}ax[aY].scale=function(a6,a5,E,e){if(a6==null&&a5==null){return{x:this._.sx,y:this._.sy,toString:u};}a5=a5||a6;!+a5&&(a5=a6);var ba,a8,a9,a7,bm=this.attrs;if(a6!=0){var a4=this.getBBox(),a1=a4.x+a4.width/2,R=a4.y+a4.height/2,bl=a6/this._.sx,bk=a5/this._.sy;E=(+E||E==0)?E:a1;e=(+e||e==0)?e:R;var a3=~~(a6/ab.abs(a6)),a0=~~(a5/ab.abs(a5)),be=this.node.style,bo=E+(a1-E)*bl,bn=e+(R-e)*bk;switch(this.type){case"rect":case"image":var a2=bm.width*a3*bl,bd=bm.height*a0*bk;this.attr({height:bd,r:bm.r*aI(a3*bl,a0*bk),width:a2,x:bo-a2/2,y:bn-bd/2});break;case"circle":case"ellipse":this.attr({rx:bm.rx*a3*bl,ry:bm.ry*a0*bk,r:bm.r*aI(a3*bl,a0*bk),cx:bo,cy:bn});break;case"path":var bg=ad(bm.path),bh=true;for(var bj=0,bc=bg[m];bjS){if(e&&!a8.start){a6=an.findDotsAtSegment(a5,a4,E[1],E[2],E[3],E[4],E[5],E[6],(S-a3)/a1);R+=["C",a6.start.x,a6.start.y,a6.m.x,a6.m.y,a6.x,a6.y];if(a0){return R;}a8.start=R;R=["M",a6.x,a6.y,"C",a6.n.x,a6.n.y,a6.end.x,a6.end.y,E[5],E[6]][az]();a3+=a1;a5=+E[5];a4=+E[6];continue;}if(!d&&!e){a6=an.findDotsAtSegment(a5,a4,E[1],E[2],E[3],E[4],E[5],E[6],(S-a3)/a1);return{x:a6.x,y:a6.y,alpha:a6.alpha};}}a3+=a1;a5=+E[5];a4=+E[6];}R+=E;}a8.end=R;a6=d?a3:e?a8:an.findDotsAtSegment(a5,a4,E[1],E[2],E[3],E[4],E[5],E[6],1);a6.alpha&&(a6={x:a6.x,y:a6.y,alpha:a6.alpha});return a6;};},n=aj(function(E,d,a0,S,a6,a5,a4,a3){var R={x:0,y:0},a2=0;for(var a1=0;a1<1.01;a1+=0.01){var e=M(E,d,a0,S,a6,a5,a4,a3,a1);a1&&(a2+=ab.sqrt(aM(R.x-e.x,2)+aM(R.y-e.y,2)));R=e;}return a2;});var ap=aB(1),C=aB(),J=aB(0,1);ax[aY].getTotalLength=function(){if(this.type!="path"){return;}return ap(this.attrs.path);};ax[aY].getPointAtLength=function(d){if(this.type!="path"){return;}return C(this.attrs.path,d);};ax[aY].getSubpath=function(i,e){if(this.type!="path"){return;}var d=J(this.attrs.path,e,1);return i?J(d,i).end:d;};an.easing_formulas={linear:function(d){return d;},"<":function(d){return aM(d,3);},">":function(d){return aM(d-1,3)+1;},"<>":function(d){d=d*2;if(d<1){return aM(d,3)/2;}d-=2;return(aM(d,3)+2)/2;},backIn:function(e){var d=1.70158;return e*e*((d+1)*e-d);},backOut:function(e){e=e-1;var d=1.70158;return e*e*((d+1)*e+d)+1;},elastic:function(i){if(i==0||i==1){return i;}var e=0.3,d=e/4;return aM(2,-10*i)*ab.sin((i-d)*(2*ab.PI)/e)+1;},bounce:function(E){var e=7.5625,i=2.75,d;if(E<(1/i)){d=e*E*E;}else{if(E<(2/i)){E-=(1.5/i);d=e*E*E+0.75;}else{if(E<(2.5/i)){E-=(2.25/i);d=e*E*E+0.9375;}else{E-=(2.625/i);d=e*E*E+0.984375;}}}return d;}};var I={length:0},aR=function(){var a2=+new Date;for(var be in I){if(be!="length"&&I[Q](be)){var bj=I[be];if(bj.stop){delete I[be];I[m]--;continue;}var a0=a2-bj.start,bb=bj.ms,ba=bj.easing,bf=bj.from,a7=bj.diff,E=bj.to,a6=bj.t,a9=bj.prev||0,a1=bj.el,R=bj.callback,a8={},d;if(a0255?255:(d<0?0:d);},t=function(d,i){if(d==null){return{x:this._.tx,y:this._.ty,toString:u};}this._.tx+=+d;this._.ty+=+i;switch(this.type){case"circle":case"ellipse":this.attr({cx:+d+this.attrs.cx,cy:+i+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+d+this.attrs.x,y:+i+this.attrs.y});break;case"path":var e=ad(this.attrs.path);e[0][1]+=+d;e[0][2]+=+i;this.attr({path:e});break;}return this;};ax[aY].animateWith=function(e,i,d,R,E){I[e.id]&&(i.start=I[e.id].start);return this.animate(i,d,R,E);};ax[aY].animateAlong=ay();ax[aY].animateAlongBack=ay(1);function ay(d){return function(E,i,e,S){var R={back:d};an.is(e,"function")?(S=e):(R.rot=e);E&&E.constructor==ax&&(E=E.attrs.path);E&&(R.along=E);return this.animate(R,i,S);};}ax[aY].onAnimation=function(d){this._run=d||0;return this;};ax[aY].animate=function(be,a5,a4,E){if(an.is(a4,"function")||!a4){E=a4||null;}var a9={},e={},a2={};for(var a6 in be){if(be[Q](a6)){if(Z[Q](a6)){a9[a6]=this.attr(a6);(a9[a6]==null)&&(a9[a6]=j[a6]);e[a6]=be[a6];switch(Z[a6]){case"along":var bc=ap(be[a6]),a7=C(be[a6],bc*!!be.back),R=this.getBBox();a2[a6]=bc/a5;a2.tx=R.x;a2.ty=R.y;a2.sx=a7.x;a2.sy=a7.y;e.rot=be.rot;e.back=be.back;e.len=bc;be.rot&&(a2.r=W(this.rotate())||0);break;case"number":a2[a6]=(e[a6]-a9[a6])/a5;break;case"colour":a9[a6]=an.getRGB(a9[a6]);var a8=an.getRGB(e[a6]);a2[a6]={r:(a8.r-a9[a6].r)/a5,g:(a8.g-a9[a6].g)/a5,b:(a8.b-a9[a6].b)/a5};break;case"path":var S=H(a9[a6],e[a6]);a9[a6]=S[0];var a3=S[1];a2[a6]=[];for(var bb=0,a1=a9[a6][m];bb

Usage

// Each of the following examples create a canvas that is 320px wide by 200px high
-// Canvas is created at the viewport's 10,50 coordinate
+// Canvas is created at the viewport’s 10,50 coordinate
 var paper = Raphael(10, 50, 320, 200);
-// Canvas is created at the top left corner of the #notepad element (or its top right corner in dir="rtl" elements)
+// Canvas is created at the top left corner of the #notepad element
+// (or its top right corner in dir="rtl" elements)
 var paper = Raphael(document.getElementById("notepad"), 320, 200);
 // Same as above
 var paper = Raphael("notepad", 320, 200);
 // Image dump
-var set = Raphael(["notepad", 320, 200, {type: "rect", x: 10, y: 10, width: 25, height: 25, stroke: "#f00"}, {type: "text", x: 30, y: 40, text: "Dump"}]);
+var set = Raphael(["notepad", 320, 200, { + type: "rect", + x: 10, + y: 10, + width: 25, + height: 25, + stroke: "#f00" +}, { + type: "text", + x: 30, + y: 40, + text: "Dump" +}]); +

+ circle +

+
+

+ Draws a circle. +

+

Parameters

+
    +
  1. x number X coordinate of the centre
  2. +
  3. y number Y coordinate of the centre
  4. +
  5. r number radius
  6. +
+

Usage

+
var c = paper.circle(50, 50, 40);
+

+ rect +

+
+

+ Draws a rectangle. +

+

Parameters

+
    +
  1. x number X coordinate of top left corner
  2. +
  3. y number Y coordinate of top left corner
  4. +
  5. width number
  6. +
  7. height number
  8. +
  9. r number [optional] radius for rounded corners, default is 0
  10. +
+

Usage

+
// regular rectangle
+var c = paper.rect(10, 10, 50, 50);
+// rectangle with rounded corners
+var c = paper.rect(40, 40, 50, 50, 10);
+

+ ellipse +

+
+

+ Draws an ellipse. +

+

Parameters

+
    +
  1. x number X coordinate of the centre
  2. +
  3. y number X coordinate of the centre
  4. +
  5. rx number Horisontal radius
  6. +
  7. ry number Vertical radius
  8. +
+

Usage

+
var c = paper.ellipse(50, 50, 40, 20);
+

+ image +

+
+

+ Embeds an image into the SVG/VML canvas. +

+

Parameters

+
    +
  1. src string URI of the source image
  2. +
  3. x number X coordinate position
  4. +
  5. y number Y coordinate position
  6. +
  7. width number Width of the image
  8. +
  9. height number Height of the image
  10. +
+

Usage

+
var c = paper.image("apple.png", 10, 10, 80, 80);
+

+ set +

+
+

+ Creates array-like object to keep and operate couple of elements at once. Warning: it doesn’t create any elements for itself in the page. +

+

Usage

+
var st = paper.set();
+st.push(
+    paper.circle(10, 10, 5),
+    paper.circle(30, 10, 5)
+);
+st.attr({fill: "red"});
+

+ text +

+
+

+ Draws a text string. If you need line breaks, put “\n” in the string. +

+

Parameters

+
    +
  1. x number X coordinate position.
  2. +
  3. y number Y coordinate position.
  4. +
  5. text string The text string to draw.
  6. +
+

Usage

+
var t = paper.text(50, 50, "Raphaël\nkicks\nbutt!");
+

+ path +

+
+

+ Creates a path element by given path data string. +

+

Parameters

+
    +
  1. pathString string [optional] Path data in SVG path string format.
  2. +
+

Usage

+
var c = paper.path("M10 10L90 90");
+// draw a diagonal line:
+// move to 10,10, line to 90,90

Element’s generic methods

@@ -77,8 +202,11 @@ var set = Raphael(["notepad", 320, 200, {type: "rect", x: 10, y: 10, width: 25, Gives you a reference to the DOM object, so you can assign event handlers or just mess around.

Usage

-
var c = paper.circle(10, 10, 10); // draw a circle at coordinate 10,10 with radius of 10
-c.node.onclick = function () { c.attr("fill", "red"); };
+
// draw a circle at coordinate 10,10 with radius of 10
+var c = paper.circle(10, 10, 10);
+c.node.onclick = function () {
+    c.attr("fill", "red");
+};

paper

@@ -88,7 +216,8 @@ c.node.onclick = function () { c.attr("fill", "red"); };

Usage

Raphael.el.cross = function () {
     this.attr({fill: "red"});
-    this.paper.path("M10,10L50,50M50,10L10,50").attr({stroke: "red"});
+    this.paper.path("M10,10L50,50M50,10L10,50")
+        .attr({stroke: "red"});
 }

remove @@ -151,7 +280,8 @@ c.rotate(45, true); // rotation is absolute

Usage

var c = paper.circle(10, 10, 10);
-c.translate(10, 10); // moves the circle down the canvas, in a diagonal line
+// moves the circle 10 px to the right and down +c.translate(10, 10);

scale

@@ -167,8 +297,10 @@ c.translate(10, 10); // moves the circle down the canvas, in a diagonal line

Usage

var c = paper.circle(10, 10, 10);
-c.scale(1.5, 1.5); // makes the circle 1.5 times larger
-c.scale(.5, .75);  // makes the circle half as wide, and 75% as high
+// makes the circle 1.5 times larger +c.scale(1.5, 1.5); +// makes the circle half as wide, and 75% as high +c.scale(.5, .75);

attr

@@ -203,8 +335,8 @@ c.scale(.5, .75); // makes the circle half as wide, and 75% as high fill colour or gradient
    -
  • linear gradient: “‹angle›-‹colour›[-‹colour›[:‹offset›]]*-‹colour›”, example: "90-#fff-#000" – 90° gradient from white to black or "0-#fff-#f00:20-#000" – 0° gradient from white via red (at 20%) to black
  • -
  • radial gradient: “r[(‹fx›, ‹fy›)]‹colour›[-‹colour›[:‹offset›]]*-‹colour›”, example: “r#fff-#000” – gradient from white to black or “r(0.25, 0.75)#fff-#000” – gradient from white to black with focus point at 0.25, 0.75
  • +
  • linear gradient: “‹angle›-‹colour›[-‹colour›[:‹offset›]]*-‹colour›”, example: “90-#fff-#000” – 90° gradient from white to black or “0-#fff-#f00:20-#000” – 0° gradient from white via red (at 20%) to black
  • +
  • radial gradient: “r[(‹fx›, ‹fy›)]‹colour›[-‹colour›[:‹offset›]]*-‹colour›”, example: “r#fff-#000” – gradient from white to black or “r(0.25, 0.75)#fff-#000” – gradient from white to black with focus point at 0.25, 0.75
  • Focus point coordinates are in 0..1 range
  • Radial gradients can only be applied to circles and ellipses
@@ -224,9 +356,9 @@ c.scale(.5, .75); // makes the circle half as wide, and 75% as highscale string comma or space separated values: xtimes, ytimes, cx, cy. See: scale
  • src string (URL)
  • stroke colour
  • -
  • stroke-dasharray string [“”, “-”, “.”, “-.”, “-..”, “. ”, “- ”, “--”, “- .”, “--.”, “--..”]
  • -
  • stroke-linecap string [“butt”, “square”, “round”]
  • -
  • stroke-linejoin string [“butt”, “square”, “round”, “miter”]
  • +
  • stroke-dasharray string [“”, “-”, “.”, “-.”, “-..”, “. ”, “- ”, “--”, “- .”, “--.”, “--..”]
  • +
  • stroke-linecap string [“butt”, “square”, “round”]
  • +
  • stroke-linejoin string [“bevel”, “round”, “miter”]
  • stroke-miterlimit number
  • stroke-opacity number
  • stroke-width number
  • @@ -237,9 +369,15 @@ c.scale(.5, .75); // makes the circle half as wide, and 75% as high

    Usage

    var c = paper.circle(10, 10, 10);
    -c.attr("fill", "black");                              // using strings
    -c.attr({fill: "#000", stroke: "#f00", opacity: 0.5}); // using params object
    -c.attr({fill: "90-#fff-#000", "stroke-dasharray": "-..", "clip-rect": "10, 10, 100, 100"});
    +// using strings +c.attr("fill", "black"); +// using params object +c.attr({fill: "#000", stroke: "#f00", opacity: 0.5}); +c.attr({ + fill: "90-#fff-#000", + "stroke-dasharray": "-..", + "clip-rect": "10, 10, 100, 100" +});

    animate

    @@ -256,7 +394,7 @@ c.attr({fill: "90-#fff-#000", "stroke-dasharray": "-..", "clip-rect": "10, 10, 1
    1. newAttrs object A parameters object of the animation results. (Not all attributes can be animated.)
    2. ms number The duration of the animation, given in milliseconds.
    3. -
    4. easing string [“>”, “<”, “<>”, “backIn”, “backOut”, “bounce”, “elastic”] or function [optional]
    5. +
    6. easing string [“>”, “<”, “<>”, “backIn”, “backOut”, “bounce”, “elastic”] or function [optional]
    7. callback function [optional]

    Attributes that can be animated

    @@ -308,6 +446,7 @@ r.animateWith(c, {x: 20}, 2000);

    animateAlong

    +

    Animates element along the given path. As an option it could rotate element along the path.

    @@ -326,15 +465,34 @@ r.animateWith(c, {x: 20}, 2000); e.attr({rx: 4, ry: 4}); }); }); -

    - toFront +

    + animateAlongBack

    - Moves the element so it is the closest to the viewer’s eyes, on top of other elements. + Similar to animateAlong. Animates element along the given path, starting from the end of it. +

    +

    + onAnimation +

    +
    +

    + Sets or resets the function that will be called on each stage of the animation.

    +

    Parameters

    +
      +
    1. f function function that will be called on each stage of animation
    2. +

    Usage

    -
    var c = paper.circle(10, 10, 10);
    -c.toFront();
    +
    var p = r.path("M10,50c0,50,80-50,80,0c0,50-80-50-80,0z"),
    +    p2 = r.path(),
    +    e = r.ellipse(10, 50, 4, 4).attr({stroke: "none", fill: "#f00"}).onAnimation(function () {
    +        p2.attr({path: "M50,10L" + e.attr("cx") + "," + e.attr("cy")});
    +    }),
    +    b = r.rect(0, 0, 620, 400).attr({stroke: "none", fill: "#000", opacity: 0}).click(function () {
    +        e.attr({rx: 5, ry: 3}).animateAlong(p, 4000, true, function () {
    +            e.attr({rx: 4, ry: 4});
    +        });
    +    });

    getBBox

    @@ -419,6 +577,7 @@ var c = r.clone();

    getPointAtLength

    +

    Path specific method. Returns point description at given length.

    @@ -427,7 +586,7 @@ var c = r.clone();
  • length number length in pixels from the beginining of the path to the point
  • Usage

    -
    var p = r.path("M100,100c0,50 100-50 100,0c0,50 -100-50 -100,0z");
    +                        
    var p = r.path("M10,50c0,50,80-50,80,0c0,50-80-50-80,0z");
         var point = p.getPointAtLength(30);
         r.circle(point.x, point.y, 3);

    Returned object format:

    @@ -436,6 +595,22 @@ var c = r.clone();
  • y – y coordinate of the point
  • alpha – angle of the path at the point
  • +

    + getSubpath +

    +
    +

    + Path specific method. Returns the subpath string of a given path. +

    +

    Parameters

    +
      +
    1. from number length in pixels from the beginining of the path to the beginining of the subpath
    2. +
    3. to number length in pixels from the beginining of the path to the end of the subpath
    4. +
    +

    Usage

    +
    var p = r.path("M10,50c0,50,80-50,80,0c0,50-80-50-80,0z");
    +    var path = p.getSubpath(10, 60);
    +    r.path(path).attr({stroke: "#f00"});

    setSize

    @@ -533,114 +708,6 @@ var c = r.clone();
    var txt = r.print(10, 50, "print", r.getFont("Museo"), 30).attr({fill: "#fff"});
     // following line will paint first letter in red
     txt[0].attr({fill: "#f00"});
    -

    - circle -

    -
    -

    - Draws a circle. -

    -

    Parameters

    -
      -
    1. x number X coordinate of the centre
    2. -
    3. y number Y coordinate of the centre
    4. -
    5. r number radius
    6. -
    -

    Usage

    -
    var c = paper.circle(50, 50, 40);
    -

    - rect -

    -
    -

    - Draws a rectangle. -

    -

    Parameters

    -
      -
    1. x number X coordinate of top left corner
    2. -
    3. y number Y coordinate of top left corner
    4. -
    5. width number
    6. -
    7. height number
    8. -
    9. r number [optional] radius for rounded corners, default is 0
    10. -
    -

    Usage

    -
    // regular rectangle
    -var c = paper.rect(10, 10, 50, 50);
    -// rectangle with rounded corners
    -var c = paper.rect(40, 40, 50, 50, 10);
    -

    - ellipse -

    -
    -

    - Draws an ellipse. -

    -

    Parameters

    -
      -
    1. x number X coordinate of the centre
    2. -
    3. y number X coordinate of the centre
    4. -
    5. rx number Horisontal radius
    6. -
    7. ry number Vertical radius
    8. -
    -

    Usage

    -
    var c = paper.ellipse(50, 50, 40, 20);
    -

    - image -

    -
    -

    - Embeds an image into the SVG/VML canvas. -

    -

    Parameters

    -
      -
    1. src string URI of the source image
    2. -
    3. x number X coordinate position
    4. -
    5. y number Y coordinate position
    6. -
    7. width number Width of the image
    8. -
    9. height number Height of the image
    10. -
    -

    Usage

    -
    var c = paper.image("apple.png", 10, 10, 80, 80);
    -

    - set -

    -
    -

    - Creates array-like object to keep and operate couple of elements at once. Warning: it doesn’t create any elements for itself in the page. -

    -

    Usage

    -
    var st = paper.set();
    -st.push(paper.circle(10, 10, 5), paper.circle(30, 10, 5));
    -st.attr({fill: "red"});
    -

    - text -

    -
    -

    - Draws a text string. If you need line breaks, put “\n” in the string. -

    -

    Parameters

    -
      -
    1. x number X coordinate position.
    2. -
    3. y number Y coordinate position.
    4. -
    5. text string The text string to draw.
    6. -
    -

    Usage

    -
    var t = paper.text(50, 50, "Raphaël\nkicks\nbutt!");
    -

    - path -

    -
    -

    - Initialises path drawing. You can specify a path by supplying the path data as a second argument. -

    -

    Parameters

    -
      -
    1. pathString string [optional] Path data in SVG path string format.
    2. -
    -

    Usage

    -
    var c = paper.path("M10 10L90 90");
    -// draw a diagonal line: move to 10,10, line to 90,90

    Adding your own methods to canvas

    @@ -649,7 +716,7 @@ txt[0].attr({fill: "#f00"});

    Usage

    Raphael.fn.arrow = function (x1, y1, x2, y2, size) {
    -    return this.path(// some code here);
    +    return this.path( ... );
     };
     // or create namespace
     Raphael.fn.mystuff = {
    @@ -683,18 +750,21 @@ paper.circle(100, 100, 20).red();
                                 You could specify colour in this formats:
                             

      -
    • Colour name (“red”, “green”, “cornflowerblue”, etc)
    • -
    • #••• — shortened HTML colour: (“#000”, “#fc0”, etc)
    • -
    • #•••••• — full length HTML colour: (“#000000”, “#bd2300”)
    • -
    • rgb(•••, •••, •••) — red, green and blue channels’ values: (“rgb(200, 100, 0)”)
    • -
    • rgb(•••%, •••%, •••%) — same as above, but in %: (“rgb(100%, 175%, 0%)”)
    • -
    • hsb(•••, •••, •••) — hue, saturation and brightness values: (“hsb(0.5, 0.25, 1)”)
    • +
    • Colour name (“red”, “green”, “cornflowerblue”, etc)
    • +
    • #••• — shortened HTML colour: (“#000”, “#fc0”, etc)
    • +
    • #•••••• — full length HTML colour: (“#000000”, “#bd2300”)
    • +
    • rgb(•••, •••, •••) — red, green and blue channels’ values: (“rgb(200, 100, 0)”)
    • +
    • rgb(•••%, •••%, •••%) — same as above, but in %: (“rgb(100%, 175%, 0%)”)
    • +
    • hsb(•••, •••, •••) — hue, saturation and brightness values: (“hsb(0.5, 0.25, 1)”)
    • hsb(•••%, •••%, •••%) — same as above, but in %
    • hsl(•••, •••, •••) — same as hsb
    • hsl(•••%, •••%, •••%) — same as hsb

    Usage

    -
    paper.circle(100, 100, 20).attr({fill: "hsb(1, 255, 200)", stroke: "red"});
    +
    paper.circle(100, 100, 20).attr({
    +    fill: "hsb(1, 255, 200)",
    +    stroke: "red"
    +});

    safari

    @@ -715,6 +785,42 @@ paper.circle(100, 100, 20).red(); … })(Raphael.ninja());
    +

    + Events +

    +

    + You can attach events to elements by using element.node and your favourite library ($(circle.node).click(…)) or you can use built-in methods: +

    +

    Usage

    +
    element.click(function (event) {
    +    this.attr({fill: "red"});
    +});
    +element.dblclick(function (event) {
    +    this.attr({fill: "red"});
    +});
    +element.mousedown(function (event) {
    +    this.attr({fill: "red"});
    +});
    +element.mousemove(function (event) {
    +    this.attr({fill: "red"});
    +});
    +element.mouseout(function (event) {
    +    this.attr({fill: "red"});
    +});
    +element.mouseover(function (event) {
    +    this.attr({fill: "red"});
    +});
    +element.mouseup(function (event) {
    +    this.attr({fill: "red"});
    +});
    +element.hover(function (event) {
    +    this.attr({fill: "red"});
    +}, function (event) {
    +    this.attr({fill: "black"});
    +});
    +

    + To unbind events use the same method names with “un” prefix, i.e. element.unclick(f); +

    @@ -727,6 +833,27 @@ paper.circle(100, 100, 20).red();
  • Raphael
  • +
  • + circle +
  • +
  • + rect +
  • +
  • + ellipse +
  • +
  • + image +
  • +
  • + set +
  • +
  • + text +
  • +
  • + path +
  • node
  • @@ -763,6 +890,9 @@ paper.circle(100, 100, 20).red();
  • animateAlong
  • +
  • + animateAlongBack +
  • getBBox
  • @@ -791,7 +921,7 @@ paper.circle(100, 100, 20).red(); getPointAtLength
  • - getSubpathsAtLength + getSubpath
  • setSize @@ -817,27 +947,6 @@ paper.circle(100, 100, 20).red();
  • print
  • -
  • - circle -
  • -
  • - rect -
  • -
  • - ellipse -
  • -
  • - image -
  • -
  • - set -
  • -
  • - text -
  • -
  • - path -
  • Adding your own methods to canvas
  • @@ -853,6 +962,9 @@ paper.circle(100, 100, 20).red();
  • “Ninja Mode”
  • +
  • + Events +