//
// Copyright 2011-2012 Collecting Smiles
// Build date: 2012-01-20
//
var ColorsDraw=new Object();ColorsDraw.versions=new Object();ColorsDraw.versions.General=1120;var base64IndexToCharMap=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/","="];
var base64CharToIndexMap="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function myBase64Decode(g){var d;
var a=0;var h=g.length;if(h>3&&h%4==0){a=parseInt(h/4);a*=3;if(g.charAt(h-1)=="="){a-=1}if(g.charAt(h-2)=="="){a-=1}}d=new Array(a);
var c=[0,0,0,0];var b=0;for(var e=0;e<a-2;e+=3){c=[base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++))];
d[e+0]=(c[0]<<2)|(c[1]>>4);d[e+1]=((c[1]&15)<<4)|(c[2]>>2);d[e+2]=((c[2]&3)<<6)|c[3]}var f=a%3;if(f!=0){c=[base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++))];
if(f==1){d[a-1]=(c[0]<<2)|(c[1]>>4)}else{if(f==2){d[a-2]=(c[0]<<2)|(c[1]>>4);d[a-1]=((c[1]&15)<<4)|(c[2]>>2)}}}return d}function bytesIntoIntsArray(e,f,c,b,g){var h=f;
for(var d=0;d<g;d++){var a=e[h+0]|(e[h+1]<<8)|(e[h+2]<<16)|(e[h+3]<<24);c[b+d]=a;h+=4}}function ColorsUtilities(){}ColorsUtilities.supportsCanvas=function(){return !!document.createElement("canvas").getContext
};ColorsUtilities.supportsHtml5Storage=function(){try{return"localStorage" in window&&window.localStorage!==null}catch(a){return false
}};ColorsUtilities.squidgeBase64String=function(f){var e=new String();var b=f.length;var g=((b+1)/2)|0;for(var d=0;d<b-1;
d+=2){var a=f.charCodeAt(d);var h=f.charCodeAt(d+1);var c=(h<<8)|a;e+=String.fromCharCode(c)}if((b&1)!=0){var a=f.charCodeAt(b-1);
var h=0;var c=(h<<8)|a;e+=String.fromCharCode(c)}return e};ColorsUtilities.unsquidgeBase64String=function(f){var c=new String();
var b=f.length;for(var e=0;e<b;e++){var d=f.charCodeAt(e);var a=d&255;var g=(d>>8)&255;c+=String.fromCharCode(a);if(g!=0){c+=String.fromCharCode(g)
}}return c};ColorsUtilities.decodeBase64Data=function(g){var d;var a=0;var h=g.length;if(h>3&&h%4==0){a=parseInt(h/4);a*=3;
if(g.charAt(h-1)=="="){a-=1}if(g.charAt(h-2)=="="){a-=1}}d=new Array(a);var c=[0,0,0,0];var b=0;for(var e=0;e<a-2;e+=3){c=[base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++))];
d[e+0]=(c[0]<<2)|(c[1]>>4);d[e+1]=((c[1]&15)<<4)|(c[2]>>2);d[e+2]=((c[2]&3)<<6)|c[3]}var f=a%3;if(f!=0){c=[base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++)),base64CharToIndexMap.indexOf(g.charAt(b++))];
if(f==1){d[a-1]=(c[0]<<2)|(c[1]>>4)}else{if(f==2){d[a-2]=(c[0]<<2)|(c[1]>>4);d[a-1]=((c[1]&15)<<4)|(c[2]>>2)}}}return d};
ColorsUtilities.base64EncodeIntArray=function(g,f,j){var e="";var l=0;var k=j;var c=0;for(var b=0;b<k;b++){var d=g[b+f];var a=0;
for(var h=0;h<4;h++){l<<=8;l|=(d>>a)&255;c+=1;if((c%3)==0){e+=base64IndexToCharMap[(l>>18)&63]+base64IndexToCharMap[(l>>12)&63]+base64IndexToCharMap[(l>>6)&63]+base64IndexToCharMap[(l>>0)&63];
l=0}a+=8}}if((c%3)!=0){if((c%3)==1){l<<=16;e+=base64IndexToCharMap[(l>>18)&63]+base64IndexToCharMap[(l>>12)&63]+"=="}else{l<<=8;
e+=base64IndexToCharMap[(l>>18)&63]+base64IndexToCharMap[(l>>12)&63]+base64IndexToCharMap[(l>>6)&63]+"="}}return e};ColorsUtilities.bytesIntoIntsArray=bytesIntoIntsArray;
ColorsUtilities.Spinner=function(b,g,f,a,h,d){this.context=b;this.center_x=g;this.center_y=f;this.width=a;this.height=h;this.offset=d;
this.tick_count=0;this.timer_id=-1;this.steps=12;this.colours=new Array(this.steps);var c=255;var j=8;for(var e=0;e<this.steps;
e++){this.colours[e]="rgb("+c+","+c+","+c+")";c-=j}this.tick=function(){var k=-2*Math.PI/this.steps;var n=0;var m=this.context;
m.strokeStyle="rgb(100,100,100)";for(var l=0;l<this.steps;l++){m.setTransform(1,0,0,1,0,0);m.translate(this.center_x,this.center_y);
m.rotate(n);m.translate(-a/2,this.offset);m.fillStyle="rgb(100,100,100)";m.fillRect(-0.5,-0.5,this.width+1,this.height+1);
var o=(this.tick_count+l)%this.steps;m.fillStyle=this.colours[o];m.fillRect(0,0,this.width,this.height);n+=k}this.tick_count+=1
};this.start=function(){var k=this;var m=this.tick;var l=(function(){var n={},o=k,p=m;n.doCall=function(){p.call(o)};return n
})();this.timer_id=window.setInterval(l.doCall,0|(1000/10))};this.stop=function(){if(this.timer_id!=-1){window.clearInterval(this.timer_id);
this.timer_id=-1}}};ColorsUtilities.ImageSpinner=function(b,d,f){var l=this;var n=b;var e=new Array(8);var h=-1;var c;var a=d;
if(f==null){f="spinner-"}for(var j=0;j<e.length;j++){var g=new Image();g.src=n+f+j+".png";e[j]=g}var m=function(o){var p=document.getElementById(a);
if(p==null){return}var q=e[o];if(q.complete){p.innerHTML='<img class="image-spinner-image" src="'+q.src+'" alt="" style="border-style:none;" />'
}};var k=function(){var o=c%e.length;m(o);c+=1};this.start=function(){c=0;m(0);h=window.setInterval(k,0|(1000/10))};this.stop=function(){if(h!=-1){window.clearInterval(h);
h=-1}};this.isSpinning=function(){if(h==-1){return false}return true};m(0)};ColorsUtilities.ImageSpinner2=function(o,r,g,h,f){var m=this;
var n=r;var b=new Image();var p=-1;var k=0;var q=o;var d=h;var s=f;var j=g;var e=null;var c=document.getElementById(q);b.src=r;
var a=function(t){if(c==null){return}var v=b;if(v.complete){if(e==null){e=document.createElement("a");e.setAttribute("class","image-spinner-image");
var u="text-decoration: none;display: inline-block;width: "+d+"px;height: "+s+"px;background-position: "+(-d*t)+"px 0px;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-o-user-select: none;user-select: none;background-image: url('"+n+"');";
e.setAttribute("style",u);c.appendChild(e)}else{e.style.backgroundPosition=""+(-d*t)+"px 0px"}}};var l=function(){var t=k%j;
a(t);k+=1};this.start=function(){k=0;a(0);p=window.setInterval(l,0|(1000/10))};this.stop=function(){if(p!=-1){window.clearInterval(p);
p=-1}};this.tick=function(){l()};this.isSpinning=function(){if(p==-1){return false}return true};this.getContainerId=function(){return q
};a(0)};ColorsUtilities.Seeker=function(m,h,b,j,e){var l=-1;var k=m;var a=h;var f=b;var c=j;var g=e;var d=function(){k.setPosition(a,f);
if(c!=null){if(this.callbackContext!=null){c.call(g,k)}else{c(k)}}};this.getSeekTo=function(){return a};this.setSeekTo=function(n){a=n
};this.startSeeking=function(){l=window.setInterval(d,0|(1000/30))};this.tidyUp=function(){if(l!=-1){window.clearInterval(l);
l=-1}}};ColorsUtilities.disableCachingOfDrw=function(){var e=false;var d=navigator.userAgent;var c=d.indexOf(" Version/");
var b=d.indexOf(" Safari/");var a=d.indexOf(" Mobile Safari/");if(c>0&&b>0&&a==-1){e=true}return e};ColorsUtilities.getCanvas=function(a){var c=$("#"+a);
if(!c){return null}var b=c.get(0);if(b){if(b.getContext){return b}}return null};ColorsUtilities.zeroImageData=function(c){var d=c.width*c.height;
d*=4;var b=c.data;for(var a=0;a<d;a++){b[a]=0}};ColorsUtilities.clearImageData=function(c){var d=c.width*c.height;d*=4;var b=c.data;
for(var a=0;a<d;a++){b[a]=255}};ColorsUtilities.fillImageData=function(f,h,e,a,g){var c=f.width*f.height;pixel_index=0;var d=f.data;
for(var b=0;b<c;b++){d[pixel_index+0]=h;d[pixel_index+1]=e;d[pixel_index+2]=a;d[pixel_index+3]=g;pixel_index+=4}};ColorsUtilities.fillPackedImageData=function(j,b,d,g,c){var a=(b<<24)|(d<<16)|(g<<8)|(c<<0);
var h=j.width*j.height;var f=j.data;for(var e=0;e<h;e++){f[e]=a}};ColorsUtilities.copyToAndFromPackedIntImage=function(e,k,m){var b=e.width;
var q=e.height;var d=e.data;var j=k.data;if(m==null){var h=0;for(var l=0;l<q;l++){for(var o=0;o<b;o++){d[h+o]=j[h+o]}h+=b
}}else{var f=m.getMinPoint();var g=m.getMaxPoint();var c=Math.max(Math.min(f.x,b-1),0);var a=Math.max(Math.min(g.x,b-1),0);
var p=Math.max(Math.min(f.y,q-1),0);var n=Math.max(Math.min(g.y,q-1),0);var h=p*b;for(var l=p;l<=n;l++){for(var o=c;o<=a;
o++){d[h+o]=j[h+o]}h+=b}}};ColorsUtilities.copyFromPackedIntImage=function(f,h,c){var o=f.width;var l=f.height;var u=f.data;
var d=h.data;var n=0;if(c==null){var k=0;var m=0;var q=0;for(var g=0;g<l;g++){m=0;for(var j=0;j<o;j++){n=d[q+j];u[k+m+0]=(n>>24)&255;
u[k+m+1]=(n>>16)&255;u[k+m+2]=(n>>8)&255;u[k+m+3]=(n>>0)&255;m+=4}k+=o*4;q+=o}}else{var p=c.getMinPoint();var e=c.getMaxPoint();
var s=Math.max(Math.min(p.x,o-1),0);var r=Math.max(Math.min(e.x,o-1),0);var b=Math.max(Math.min(p.y,l-1),0);var a=Math.max(Math.min(e.y,l-1),0);
var k=b*o*4;var m=0;var q=b*o;var t=0;for(var g=b;g<=a;g++){m=s*4;for(var j=s;j<=r;j++){n=d[q+j];u[k+m+0]=(n>>24)&255;u[k+m+1]=(n>>16)&255;
u[k+m+2]=(n>>8)&255;u[k+m+3]=(n>>0)&255;m+=4}k+=o*4;q+=o}}};ColorsUtilities.copyToPackedIntImage=function(f,h,c){var o=f.width;
var k=f.height;var u=f.data;var d=h.data;var n=0;if(c==null){var j=0;var l=0;var r=0;var t=0;for(var g=0;g<k;g++){t=0;for(var m=0;
m<o;m++){n=(d[r+t+0]<<24)|(d[r+t+1]<<16)|(d[r+t+2]<<8)|(d[r+t+3]<<0);u[j+m]=n;t+=4}j+=o;r+=o*4}}else{var p=c.getMinPoint();
var e=c.getMaxPoint();var s=Math.max(Math.min(p.x,o-1),0);var q=Math.max(Math.min(e.x,o-1),0);var b=Math.max(Math.min(p.y,k-1),0);
var a=Math.max(Math.min(e.y,k-1),0);var j=b*o;var l=0;var r=b*o*4;var t=0;for(var g=b;g<=a;g++){t=s*4;for(var m=s;m<=q;m++){n=(d[r+t+0]<<24)|(d[r+t+1]<<16)|(d[r+t+2]<<8)|(d[r+t+3]<<0);
u[j+m]=n;t+=4}j+=o;r+=o*4}}};ColorsUtilities.copyImageData=function(e,l,n){var b=e.width;var r=e.height;var d=e.data;var j=l.data;
if(n==null){var h=0;var k;for(var m=0;m<r;m++){k=0;for(var p=0;p<b;p++){d[h+k+0]=j[h+k+0];d[h+k+1]=j[h+k+1];d[h+k+2]=j[h+k+2];
d[h+k+3]=j[h+k+3];k+=4}h+=b*4}}else{var f=n.getMinPoint();var g=n.getMaxPoint();var c=Math.max(Math.min(f.x,b-1),0);var a=Math.max(Math.min(g.x,b-1),0);
var q=Math.max(Math.min(f.y,r-1),0);var o=Math.max(Math.min(g.y,r-1),0);var h=q*b*4;var k;for(var m=q;m<=o;m++){k=c*4;for(var p=c;
p<=a;p++){d[h+k+0]=j[h+k+0];d[h+k+1]=j[h+k+1];d[h+k+2]=j[h+k+2];d[h+k+3]=j[h+k+3];k+=4}h+=b*4}}};ColorsUtilities.flipCanvasHorizontally=function(f){var l=f.data;
var b=f.width;var k=f.height;var d=b*4;var h;var j=(b/2)|0;var g=0;var e=0;var c=0;for(var m=0;m<k;m++){e=g+0;c=g+d-4;for(var a=0;
a<j;a++){h=l[e+0];l[e+0]=l[c+0];l[c+0]=h;h=l[e+1];l[e+1]=l[c+1];l[c+1]=h;h=l[e+2];l[e+2]=l[c+2];l[c+2]=h;h=l[e+3];l[e+3]=l[c+3];
l[c+3]=h;e+=4;c-=4}g+=d}};ColorsUtilities.flipCanvasVertically=function(d){var k=d.data;var b=d.width;var j=d.height;var c=b*4;
var h=new Array(c);var f=(j/2)|0;var g=0;var a=(j-1)*c;for(var l=0;l<f;l++){for(var e=0;e<c;e++){h[e]=k[g+e];k[g+e]=k[a+e];
k[a+e]=h[e]}g+=c;a-=c}};ColorsUtilities.flipPackedHorizontally=function(f){var l=f.data;var b=f.width;var k=f.height;var d=b;
var j;var h=(b/2)|0;var g=0;var e=0;var c=0;for(var m=0;m<k;m++){e=g+0;c=g+d-1;for(var a=0;a<h;a++){j=l[e];l[e]=l[c];l[c]=j;
e+=1;c-=1}g+=d}};ColorsUtilities.flipPackedVertically=function(d){var k=d.data;var b=d.width;var j=d.height;var c=b;var h=new Array(c);
var f=(j/2)|0;var g=0;var a=(j-1)*c;for(var l=0;l<f;l++){for(var e=0;e<c;e++){h[e]=k[g+e];k[g+e]=k[a+e];k[a+e]=h[e]}g+=c;
a-=c}};ColorsUtilities.Region=function(){var b=this;var c=new Object();var a=new Object();b.reset=function(){c.x=100000000;
c.y=100000000;a.x=-100000000;a.y=-100000000};b.isValid=function(){if(c.x>a.x||c.y>a.y){return false}return true};b.getWidth=function(){return a.x-c.x+1
};b.getHeight=function(){return a.y-c.y+1};b.getMinPoint=function(){return c};b.getMaxPoint=function(){return a};b.getMinX=function(){return c.x
};b.getMinY=function(){return c.y};b.getMaxX=function(){return a.x};b.getMaxY=function(){return a.y};b.adjustForPoint=function(e,d){if(e<c.x){c.x=e
}if(e>a.x){a.x=e}if(d<c.y){c.y=d}if(d>a.y){a.y=d}};b.mergeRegion=function(f){if(f.isValid()){var e=f.getMinPoint();var d=f.getMaxPoint();
b.adjustForPoint(e.x,e.y);b.adjustForPoint(d.x,d.y)}};b.boundRegion=function(e,d,g,f){if(this.isValid()){if(c.x<e){if(a.x<e){this.reset();
return}c.x=e}if(a.x>g){if(c.x>g){this.reset();return}a.x=g}if(c.y<d){if(a.y<d){this.reset();return}c.y=d}if(a.y>f){if(c.y>f){this.reset();
return}a.y=f}}};b.copyFrom=function(e){var f=e.getMinPoint();var d=e.getMaxPoint();c.x=f.x;c.y=f.y;a.x=d.x;a.y=d.y};b.reset()
};ColorsUtilities.writeIntToBuffer=function(b,a,c){a[c+0]=(b>>0)&255;a[c+1]=(b>>8)&255;a[c+2]=(b>>16)&255;a[c+3]=(b>>24)&255
};ColorsUtilities.encodeDrwAsBase64=function(j,d,k){var f="";var l=0;var c;var g=j.length;var m=g%3;for(c=0;c<g-m;c+=3){l=j[c+0]&255;
l<<=8;l|=j[c+1]&255;l<<=8;l|=j[c+2]&255;f+=base64IndexToCharMap[(l>>18)&63]+base64IndexToCharMap[(l>>12)&63]+base64IndexToCharMap[(l>>6)&63]+base64IndexToCharMap[(l>>0)&63]
}if(m>0){c-=3;l=0;for(var h=0;h<m;h++){l<<=8;l|=j[c]&255;c+=1}}for(var b=0;b<k;b++){var e=d[b];var a=0;for(var h=0;h<4;h++){l<<=8;
l|=(e>>a)&255;c+=1;if((c%3)==0){f+=base64IndexToCharMap[(l>>18)&63]+base64IndexToCharMap[(l>>12)&63]+base64IndexToCharMap[(l>>6)&63]+base64IndexToCharMap[(l>>0)&63];
l=0}a+=8}}if((c%3)!=0){if((c%3)==1){l<<=16;f+=base64IndexToCharMap[(l>>18)&63]+base64IndexToCharMap[(l>>12)&63]+"=="}else{l<<=8;
f+=base64IndexToCharMap[(l>>18)&63]+base64IndexToCharMap[(l>>12)&63]+base64IndexToCharMap[(l>>6)&63]+"="}}return f};ColorsUtilities.getWacomPlugin=function(){return window.Wacom||document.embeds["wacom-plugin"]
};ColorsUtilities.wacomPenDown=function(){var b=ColorsUtilities.getWacomPlugin();if(b){var a=b.pointerType;if(a==1){return true
}}return false};ColorsUtilities.wacomPenUp=function(){var b=ColorsUtilities.getWacomPlugin();if(b){var a=b.pointerType;if(a==1){return true
}}return false};ColorsUtilities.wacomPluginInstalled=function(){var a=false;if(navigator.mimeTypes){if(navigator.mimeTypes.length>0){for(var c=0;
;c++){var g=c.toString();if(g in navigator.mimeTypes){var b=navigator.mimeTypes[g];if(b.type=="application/x-wacom-tablet"){a=true;
break}}else{break}}}else{if(window.ActiveXObject){var f=null;try{f=new ActiveXObject("WacomIE.WacomTablet")}catch(d){}if(f!=null){a=true
}}}}return a};ColorsDraw.DrwCommand=function(){};ColorsDraw.Orientation={Normal:0,CounterClockwise:1,Clockwise:2,UpsideDown:3};
ColorsDraw.EventType={None:0,Stroke:1,PartStroke:2,Flip:3,LayerChange:4,UserChange:5};ColorsDraw.DrwCommand.Types={DRAW_CMD_TYPE:0,DRAW_END_CMD_TYPE:1,COLOUR_CHANGE_CMD_TYPE:2,SIZE_CHANGE_CMD_TYPE:3};
ColorsDraw.DrwCommand.BrushType={BRUSHTYPE_HARD:0,BRUSHTYPE_SOFT:1,BRUSHTYPE_BRISTLE:2};ColorsDraw.DrwCommand.BrushControl={BRUSHCONTROL_FULL:0,BRUSHCONTROL_VARIABLEOPACITY:1,BRUSHCONTROL_VARIABLESIZE:2,BRUSHCONTROL_VARIABLESIZEOPACITY:3,BRUSHCONTROL_DISTANCEOPACITY:4,BRUSHCONTROL_ERASER:5};
ColorsDraw.DrwCommand.LayerCmdType={SETLAYERCMD_SET:0,SETLAYERCMD_NEWPOS:1,SETLAYERCMD_ERASE:2,SETLAYERCMD_COPY:3};ColorsDraw.DrwCommand.kCurrentVersion=1200;
ColorsDraw.DrwCommand.updateNeededVersion=1200;ColorsDraw.DrwCommand.convertX=function(b,a){var c=(b-512)/1024;c*=a.orthToImageScale_X;
c+=a.orthToImageTranslate_X;return c};ColorsDraw.DrwCommand.convertY=function(b,a){var c=(b-512)/1024;c*=a.orthToImageScale_Y;
c+=a.orthToImageTranslate_Y;return c};ColorsDraw.DrwCommand.convertOpacity=function(b){var a;if(b>0){a=b/255}else{a=1}return a
};ColorsDraw.DrwCommand.getType=function(a){return a&3};ColorsDraw.DrwCommand.getEventType=function(d){var g=ColorsDraw.EventType.None;
var f=ColorsDraw.DrwCommand.getType(d);switch(f){case ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE:var b=ColorsDraw.DrwCommand.getLayer(d);
if(b>=0){g=ColorsDraw.EventType.LayerChange}else{g=ColorsDraw.EventType.Stroke}break;case ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE:var e=ColorsDraw.DrwCommand.getFlipX(d);
var c=ColorsDraw.DrwCommand.getFlipY(d);if(e||c){g=ColorsDraw.EventType.Flip}else{var a=ColorsDraw.DrwCommand.getUser(d);
if(a>0){g=ColorsDraw.EventType.UserChange}}break}return g};ColorsDraw.DrwCommand.getX=function(a){return(a>>10)&2047};ColorsDraw.DrwCommand.getY=function(a){return(a>>21)&2047
};ColorsDraw.DrwCommand.getPressure=function(a){return(a>>2)&255};ColorsDraw.DrwCommand.getSize=function(a){return(a>>2)&65535
};ColorsDraw.DrwCommand.getFlipX=function(a){return((a>>26)&1)};ColorsDraw.DrwCommand.getFlipY=function(a){return((a>>27)&1)
};ColorsDraw.DrwCommand.getLayer=function(b){var a=(b>>3)&255;a-=1;return a};ColorsDraw.DrwCommand.getLayerCmd=function(b){var a=(b>>(3+8))&3;
return a};ColorsDraw.DrwCommand.getUser=function(b){var a=(b>>28)&7;a-=1;return a};ColorsDraw.DrwCommand.twiddleXCanvasPoint=function(b,d){var c=b-d.orthToImageTranslate_X;
c/=d.orthToImageScale_X;c*=1024;c+=512;var a=c|0;var e=ColorsDraw.DrwCommand.convertX(a,d);return e};ColorsDraw.DrwCommand.twiddleYCanvasPoint=function(e,b){var a=e-b.orthToImageTranslate_Y;
a/=b.orthToImageScale_Y;a*=1024;a+=512;var d=a|0;var c=ColorsDraw.DrwCommand.convertY(d,b);return c};ColorsDraw.DrwCommand.buildDrawCommand=function(a,d,c){var b=ColorsDraw.DrwCommand.Types.DRAW_CMD_TYPE|((a&2047)<<10)|((d&2047)<<21)|((c&255)<<2);
return b};ColorsDraw.DrwCommand.buildDrawCommandWithCanvasValues=function(f,e,b,d){var g=f-d.orthToImageTranslate_X;g/=d.orthToImageScale_X;
g*=1024;g+=512;var j=g|0;var k=e-d.orthToImageTranslate_Y;k/=d.orthToImageScale_Y;k*=1024;k+=512;var h=k|0;var a=(b*255)|0;
var c=ColorsDraw.DrwCommand.buildDrawCommand(j,h,a);return c};ColorsDraw.DrwCommand.buildDrawEndCommand=function(){var a=ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE;
return a};ColorsDraw.DrwCommand.buildSizeChangeCommand=function(d,g,f,b,c){var a=(d*(1<<15)/c.brushMultiplier)|0;var e=ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE|((a&65535)<<2)|((g&7)<<18)|((f&7)<<21)|((b&255)<<24);
return e};ColorsDraw.DrwCommand.buildColourCommand=function(d,c,a){var b=ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE|((d&255)<<18)|((c&255)<<10)|((a&255)<<2);
return b};ColorsDraw.DrwCommand.buildFlipCommand=function(b,c){var a=(b?1:0);var e=(c?1:0);var d=ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE|(a<<26)|(e<<27);
return d};ColorsDraw.DrwCommand.updateCommand=function(c,k){var j=c;var n=ColorsDraw.DrwCommand.getType(c);if(k<1001){if(n==ColorsDraw.DrwCommand.Types.DRAW_CMD_TYPE){var o=ColorsDraw.DrwCommand.getX(j);
o=0|Math.round(o*1024/2047+512);var l=ColorsDraw.DrwCommand.getY(j);l=0|Math.round(l*1024/2047+512);var a=ColorsDraw.DrwCommand.getPressure(c);
j=ColorsDraw.DrwCommand.buildDrawCommand(o,l,a)}}if(k<1002){if(n==ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE){var q;
var r;if(((j>>19)&1)==0){r=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD}else{r=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_SOFT
}if(((j>>20)&1)==0){q=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY}else{q=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_FULL
}var d=ColorsDraw.DrwCommand.getSize(j)-(1<<6);j=ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE|d<<2|q<<18|r<<20}}if(k<1070){if(n==ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE){var s=(j>>2)&65535;
var h=(j>>22)&255;var b=(j>>20)&3;var e=(j>>18)&3;j=ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE|s<<2|e<<18|b<<21|h<<24
}}if(k==1070){var g=1.375;if(n==ColorsDraw.DrwCommand.Types.DRAW_CMD_TYPE){var o=ColorsDraw.DrwCommand.getY(j);o=0|Math.min(Math.max(Math.round(1024+g*(1024-o)),0),2047);
var l=ColorsDraw.DrwCommand.getX(j);var a=ColorsDraw.DrwCommand.getPressure(c);j=ColorsDraw.DrwCommand.buildDrawCommand(o,l,a)
}else{if(n==ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE){var d=0|Math.round(((j>>2)&65535)*g);j=j&~(65535<<2);j|=d<<2
}else{if(n==ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE){var p=((j>>27)&1)<<26;var m=((j>>26)&1)<<27;j=j&~(3<<26);
j|=p|m}}}}if(k<1200){if(k!=1111&&k!=1112){if(n==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){j=j&3}}}return j};ColorsDraw.DrwCommand.isMajorEvent=function(c){var e=false;
var a=ColorsDraw.DrwCommand.getType(c);if(a==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){e=true}else{if(a==ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE){var d=ColorsDraw.DrwCommand.getFlipX(c);
var b=ColorsDraw.DrwCommand.getFlipY(c);if(d||b){e=true}}}return e};ColorsDraw.DrwCommand.updateToolsStateForColorChangeCmd=function(b,e){var g=ColorsDraw.DrwCommand.getFlipX(b);
var f=ColorsDraw.DrwCommand.getFlipY(b);var j=ColorsDraw.DrwCommand.getUser(b);if(!(g||f||j>=0)){var a=(b>>2)&16777215;var c=(a>>16)&255;
var d=(a>>8)&255;var h=(a>>0)&255;e.red=c;e.green=d;e.blue=h}};ColorsDraw.DrwCommand.updateToolsStateForSizeChangeCmd=function(c,f,h,d){var j=(c>>2)&65535;
var g=(c>>24)&255;var a=(c>>21)&7;var e=(c>>18)&7;var b;b=j/(1<<15)*h;if(b<d){b=d}f.opacity=ColorsDraw.DrwCommand.convertOpacity(g);
f.brushSize=b;f.brushType=a;f.brushControl=e};ColorsDraw.convertX=function(b,a){var c=(b-512)/1024;c*=a.orthToImageScale_X;
c+=a.orthToImageTranslate_X;return c};ColorsDraw.convertY=function(b,a){var c=(b-512)/1024;c*=a.orthToImageScale_Y;c+=a.orthToImageTranslate_Y;
return c};ColorsDraw.convertOpacity=function(b){var a;if(b>0){a=b/255}else{a=1}return a};ColorsDraw.DrwHeader=function(){this.valid=false;
this.firstCommandOffset=ColorsDraw.DrwHeader.kBaseHeaderNumInts*4;this.version=0;this.initialVersion=0;this.SavedVersion=0;
this.orientation=0;this.time=0;this.timesSaved=0;this.platform=0;var a=1/4;this.aspect=a;this.flags=0;this.dummy0=0;this.dummy1=0;
this.dummy2=0;this.dummy3=0;this.dummy4=0;this.numCommands=0;this.isLayered=function(){var b=false;if(this.valid){if(this.flags&ColorsDraw.DrwHeader.Flags.FLAGS_LAYERS){b=true
}}return b};this.setLayered=function(b){if(b){this.flags|=ColorsDraw.DrwHeader.Flags.FLAGS_LAYERS}else{this.flags&=~ColorsDraw.DrwHeader.Flags.FLAGS_LAYERS
}};this.asByteBuffer=function(){var d;if(typeof Uint8Array!="undefined"){d=new Uint8Array(this.firstCommandOffset*4)}else{d=new Array(this.firstCommandOffset*4)
}for(var c=0;c<this.firstCommandOffset*4;c++){d[c]=0}d[0]=33;d[1]=108;d[2]=111;d[3]=67;ColorsUtilities.writeIntToBuffer(this.version,d,1*4);
ColorsUtilities.writeIntToBuffer(this.initialVersion,d,2*4);ColorsUtilities.writeIntToBuffer(this.SavedVersion,d,3*4);var b=ColorsDraw.DrwHeader.floatToBits(this.aspect);
ColorsUtilities.writeIntToBuffer(b,d,8*4);ColorsUtilities.writeIntToBuffer(this.flags,d,9*4);ColorsUtilities.writeIntToBuffer(this.numCommands,d,15*4);
return d};this.fillFromBuffer=function(e,d){this.valid=false;if(e.length<4){return}if(e[0]!=33||e[1]!=108||e[2]!=111||e[3]!=67){this.valid=true;
this.version=0;this.numCommands=0|(d/4);this.firstCommandOffset=0;this.aspect=4/3;return}var g=new Array(ColorsDraw.DrwHeader.kBaseHeaderNumInts);
ColorsUtilities.bytesIntoIntsArray(e,0,g,0,ColorsDraw.DrwHeader.kBaseHeaderNumInts);this.firstCommandOffset=ColorsDraw.DrwHeader.kBaseHeaderNumInts*4;
this.version=g[1];this.initialVersion=g[2];this.SavedVersion=g[3];this.orientation=g[4];this.time=g[5];this.timesSaved=g[6];
this.platform=g[7];var f=ColorsDraw.DrwHeader.bitsToFloat(g[8]);this.aspect=f;this.flags=g[9];this.dummy0=g[10];this.dummy1=g[11];
this.dummy2=g[12];this.dummy3=g[13];this.dummy4=g[14];this.numCommands=g[15];if(this.version==1131375649){this.version=1002
}if(this.version>=1100){this.firstCommandOffset=ColorsDraw.DrwHeader.kMaxHeaderNumInts*4}if(this.version==1070){this.aspect=320/440
}else{if(this.version==1071&&this.aspect==0){this.aspect=320/440}else{if(this.aspect==0){this.aspect=4/3}}}var c=this.firstCommandOffset+this.numCommands*4;
if(d){if(d<c){var b=0|((d-this.firstCommandOffset)/4);this.numCommands=b}}this.valid=true}};ColorsDraw.DrwHeader.kAuthorNumBytes=64;
ColorsDraw.DrwHeader.kNameNumBytes=128;ColorsDraw.DrwHeader.kBaseHeaderNumInts=16;ColorsDraw.DrwHeader.kMaxHeaderNumInts=ColorsDraw.DrwHeader.kBaseHeaderNumInts+2*(ColorsDraw.DrwHeader.kAuthorNumBytes/4)+(ColorsDraw.DrwHeader.kNameNumBytes/4);
ColorsDraw.DrwHeader.makeHeader=function(d,c){var b=new Array(ColorsDraw.DrwHeader.kMaxHeaderNumInts*4);b[0]=33;b[1]=108;
b[2]=111;b[3]=67;ColorsUtilities.writeIntToBuffer(1105,b,4);ColorsUtilities.writeIntToBuffer(1105,b,8);ColorsUtilities.writeIntToBuffer(1105,b,12);
ColorsUtilities.writeIntToBuffer(0,b,16);ColorsUtilities.writeIntToBuffer(0,b,20);ColorsUtilities.writeIntToBuffer(1,b,24);
ColorsUtilities.writeIntToBuffer(1,b,28);var a=c.aspectratio;ColorsUtilities.writeIntToBuffer(ColorsDraw.DrwHeader.floatToBits(a),b,32);
ColorsUtilities.writeIntToBuffer(0,b,36);ColorsUtilities.writeIntToBuffer(0,b,40);ColorsUtilities.writeIntToBuffer(0,b,44);
ColorsUtilities.writeIntToBuffer(0,b,48);ColorsUtilities.writeIntToBuffer(0,b,52);ColorsUtilities.writeIntToBuffer(0,b,56);
ColorsUtilities.writeIntToBuffer(d,b,56);return b};ColorsDraw.DrwHeader.bitsToFloat=function(d){var c=((d>>31)==0)?1:-1;var f=((d>>23)&255);
var b=(f==0)?(d&8388607)<<1:(d&8388607)|8388608;var a=c*b*Math.pow(2,f-150);return a};ColorsDraw.DrwHeader.floatToBits=function(f){var c=0;
if(f<0){c=1}f=Math.abs(f);var g=0;var a=0;if(f!=0){g=127;if(f!=1){if(f<1){while(f<1){g-=1;f*=2}}else{while(f>2){g+=1;f/=2
}}for(var b=0;b<23;b++){f*=2}a=f|0}}var d=(c<<31)|(g<<23);if(g==0){d|=(a>>1)&8388607}else{d|=a&8388607}return d};ColorsDraw.DrwHeader.Flags={FLAGS_WASMOVED:1<<0,FLAGS_LAYERS:1<<1};
ColorsDraw.DrwDownloader=function(c,f){this.cacheDrwFile=true;this.drwURL=c;this.outputPlace=f;this.state=ColorsDraw.DrwDownloader.ReadyState.NotStarted;
this.errorMessage="No error";if(this.outputPlace){this.outputPlace.innerHTML="<p>Downloader created</p>"}var g=(1024*10);
var e=(512*1024);var l=64;var h=128;var d=16;var m=d+2*(l/4)+(h/4);var k=g;var j;var b=null;this.inGoodReadState=function(){var n=false;
switch(this.state){case ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize:case ColorsDraw.DrwDownloader.ReadyState.WaitingHeader:case ColorsDraw.DrwDownloader.ReadyState.ReadingBody:n=true;
break}return n};this.byteSizeToBase64Size=function(n){return 0|Math.ceil(n/3*4)};this.getBase64OffsetForByteOffset=function(n){return 0|Math.floor(n/3*4)
};this.setNewState=function(o){var n=this.state;this.state=o;switch(o){case ColorsDraw.DrwDownloader.ReadyState.ReadingBody:a.mCommands=this.commands;
a.mNumCmds=this.header.numCommands;a.mDownloadedCmds=0;break}if(n!=o){if(this.stateChangeCallback!=null){if(this.callbackContext!=null){this.stateChangeCallback.call(this.callbackContext,this,n)
}else{this.stateChangeCallback(this,n)}}}};this.headError=function(o,q,p){var n=this.contextObject;if(n.outputPlace){n.outputPlace.innerHTML="<p>Got error "+q+"</p>"+n.outputPlace.innerHTML
}};this.handleDecodedCommandsBlock=function(q,s){var t=0|((q.length-s)/4);var w=this.downloadCommandIndex+t;if(w>this.header.numCommands){t=this.header.numCommands-this.downloadCommandIndex;
w=this.header.numCommands}ColorsUtilities.bytesIntoIntsArray(q,s,this.commands,this.downloadCommandIndex,t);var u=this.header.version;
if(u<=ColorsDraw.DrwCommand.updateNeededVersion){var v=this.downloadCommandIndex;var n=this.commands;var o;var r;for(var p=0;
p<t;p++){o=n[v+p];r=ColorsDraw.DrwCommand.updateCommand(o,u);n[v+p]=r}}this.downloadCommandIndex=w;a.mDownloadedCmds=w;if(this.downloadCommandIndex>=this.header.numCommands){this.setNewState(ColorsDraw.DrwDownloader.ReadyState.DownloadComplete);
return false}return true};this.handleCommandsBlock=function(o){this.base64Offset+=o.length;var n=myBase64Decode(o);return this.handleDecodedCommandsBlock(n,0)
};this.handleHeaderBlock=function(o){this.base64Offset+=o.length;var n=myBase64Decode(o);if(n.length==0){this.errorMessage="Failed to decode base64";
this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Errored);return false}var p=new ColorsDraw.DrwHeader();p.fillFromBuffer(n,this.fileSize);
if(!p.valid){this.errorMessage="drw header is not valid";this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Errored);return false
}this.header=p;this.commands=new Array(p.numCommands);this.setNewState(ColorsDraw.DrwDownloader.ReadyState.ReadingBody);return this.handleDecodedCommandsBlock(n,p.firstCommandOffset)
};this.handleDrwBlock=function(q,p,u){var o=u.getResponseHeader("Content-Range");if(this.outputPlace){this.outputPlace.innerHTML="<p>Got block "+q.length+" range "+o+"</p>"+this.outputPlace.innerHTML
}if(o!=null){var r=ColorsDraw.DrwDownloader.decodeContentRangeHeader(o,this.outputPlace);if(r==null){this.errorMessage="Unsupported Content-Range header format: "+o;
this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Errored);return}var s=this.base64Offset;var n=s+j;if(n>this.base64FileSize){n=this.base64FileSize
}n-=1;if(r.start!=s||r.end!=n){if(this.outputPlace){this.outputPlace.innerHTML="<p>Unexpected range "+r.start+" to "+r.end+" expected "+s+" to "+n+"</p>"+this.outputPlace.innerHTML
}if(this.state==ColorsDraw.DrwDownloader.ReadyState.WaitingHeader){this.errorMessage="Strange range whilst downloading .drw: got "+r.start+" to "+r.end+" expected "+s+" to "+n;
this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Errored);return}else{this.errorMessage="Strange range whilst downloading .drw: got "+r.start+" to "+r.end+" expected "+s+" to "+n;
this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Errored);return}}}var t=false;switch(this.state){case ColorsDraw.DrwDownloader.ReadyState.WaitingHeader:t=this.handleHeaderBlock(q);
break;case ColorsDraw.DrwDownloader.ReadyState.ReadingBody:t=this.handleCommandsBlock(q);break}if(b!=null){if(this.callbackContext!=null){b.call(this.callbackContext,this)
}else{b(this)}}if(t){this.readNextBlock()}};this.handleDrwBlockError=function(n,p,o){if(this.outputPlace){this.outputPlace.innerHTML="<p>drw block download error "+p+", "+o+"</p>"+this.outputPlace.innerHTML
}};this.readNextBlock=function(){if(!this.inGoodReadState()){return}var o=this.base64Offset;var n=o+k;j=k;k*=4;if(k>e){k=e
}if(n>this.base64FileSize){n=this.base64FileSize}n-=1;if(this.outputPlace){this.outputPlace.innerHTML="<p>Requesting byte "+o+" to byte "+n+"</p>"+this.outputPlace.innerHTML
}$.ajax({url:this.drwURL,dataType:"text",type:"GET",success:function(q,p,r){this.handleDrwBlock(q,p,r)},beforeSend:function(p){p.setRequestHeader("Range","bytes="+o+"-"+n)
},error:function(p,r,q){this.handleDrwBlockError(p,r,q)},context:this,cache:this.cacheDrwFile})};this.rangedGetSizeFallback=function(r,q,u){var t=u.getAllResponseHeaders();
if(this.outputPlace){this.outputPlace.innerHTML="<p>Got 1 byte GET back: "+t+"</p>"+this.outputPlace.innerHTML}var n=true;
var p=u.getResponseHeader("Content-Range");if(p!=null){var s=ColorsDraw.DrwDownloader.decodeContentRangeHeader(p);if(s!=null){n=false;
this.base64FileSize=s.content_length;this.fileSize=0|(s.content_length/4*3);if(s.content_length==0){this.errorMessage="drw file has zero length";
return}this.setNewState(ColorsDraw.DrwDownloader.ReadyState.WaitingHeader);this.readNextBlock()}}else{var o=u.status;if(o==200){n=false;
this.handleDrwBlock(r,q,u)}}if(n){$.ajax({url:this.drwURL,dataType:"text",type:"GET",success:function(w,v,x){this.handleDrwBlock(w,v,x)
},contentType:"application/octet-stream",context:this});return}};this.gotHeadRequest=function(q,p,s){var r=s.getAllResponseHeaders();
if(this.outputPlace){this.outputPlace.innerHTML="<p>Got HEAD request headers: "+r+"</p>"+this.outputPlace.innerHTML}var n=s.getResponseHeader("Content-Length");
if(n==null){if(this.outputPlace){this.outputPlace.innerHTML="<p>HEAD not supported by server?</p>"+this.outputPlace.innerHTML
}$.ajax({url:this.drwURL,dataType:"text",type:"GET",success:function(u,t,v){this.rangedGetSizeFallback(u,t,v)},beforeSend:function(t){t.setRequestHeader("Range","bytes=0-0")
},contentType:"application/octet-stream",context:this});return}var o=parseInt(n);if(this.outputPlace){this.outputPlace.innerHTML="<p>Got HEAD request back .drw file size "+o+"</p>"+this.outputPlace.innerHTML
}this.base64FileSize=o;this.fileSize=0|(o/4*3);if(o==0){this.errorMessage="drw file has zero length";this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Errored);
return}this.setNewState(ColorsDraw.DrwDownloader.ReadyState.WaitingHeader);this.readNextBlock()};this.handleHeadError=function(n,p,o){if(this.outputPlace){this.outputPlace.innerHTML="<p>drw block download error "+p+", "+o+"</p>"+this.outputPlace.innerHTML
}this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Errorred)};var a=new Object();a.mCommands=null;a.mNumCmds=0;a.mDownloadedCmds=0;
this.getCommandsInfo=function(){return a};this.getHeader=function(){var n=null;switch(this.state){case ColorsDraw.DrwDownloader.ReadyState.DownloadComplete:case ColorsDraw.DrwDownloader.ReadyState.ReadingBody:n=this.header;
break}return n};this.startDownload=function(n,p,o){this.numberCommands=0;this.fileSize=-1;this.downloadCommandIndex=0;this.base64FileSize=-1;
this.base64Offset=0;this.base64RequestedLength=0;this.callbackContext=o;this.stateChangeCallback=n;b=p;this.setNewState(ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize);
if(this.outputPlace){this.outputPlace.innerHTML="<p>Downloader started</p>"+this.outputPlace.innerHTML}$.ajax({url:this.drwURL,dataType:"text",type:"HEAD",success:function(r,q,s){this.gotHeadRequest(r,q,s)
},error:function(q,s,r){this.handleHeadError(q,s,r)},context:this})};this.stop=function(){this.setNewState(ColorsDraw.DrwDownloader.ReadyState.Stopped)
}};ColorsDraw.DrwDownloader.decodeContentRangeHeader=function(b,d){var k=null;var j=b.split(" ");if(j.length==2&&j[0]=="bytes"){var c=j[1].split("/");
if(c.length==2){var g=c[1];var a=c[0].split("-");if(a.length==2){var e=a[0];var h=a[1];if(d){d.innerHTML="<p>Found content length: "+g+" start "+e+" end "+h+"</p>"+d.innerHTML
}var f=parseInt(g);k=new Object();k.content_length=f;k.start=parseInt(e);k.end=parseInt(h)}}}return k};ColorsDraw.DrwDownloader.ReadyState={NotStarted:0,WaitingFileSize:1,WaitingHeader:2,ReadingBody:3,DownloadComplete:4,Stopped:98,Errored:99};
ColorsDraw.BrushTables=function(g,a){this.brushTables=new Array(2);this.maxValues=new Array(3);ColorsDraw.BrushTables.CreateDistanceTable(this);
var b=true;if(a!=null){var l=a[0];if(l==this.brushTables.length){var d=1;for(var h=0;h<l;h++){d+=4+4;var f=ColorsDraw.BrushTables.BrushTableWidth*ColorsDraw.BrushTables.BrushTableHeight;
var k=new Array(f);var e=0;for(var c=0;c<f;c++){var m=a[d++];k[c]=m;if(m>e){e=m}}this.brushTables[h]=k;this.maxValues[h]=e
}b=false}}if(b){ColorsDraw.BrushTables.CreateBrushes(this)}this.bristleBrushBase=g;this.cachedBristleBrush=null;this.getBristleBrush=function(n){var j=Math.max(Math.round(n),4);
if(this.cachedBristleBrush!=null){if(this.cachedBristleBrush.width==j){return this.cachedBristleBrush}}this.cachedBristleBrush=new Object();
this.cachedBristleBrush.width=j;this.cachedBristleBrush.height=j;this.cachedBristleBrush.data=new Array(j*j);ColorsDraw.BrushTables.floatScale(this.bristleBrushBase.intensities,this.bristleBrushBase.width,this.bristleBrushBase.height,this.cachedBristleBrush.data,j,j);
return this.cachedBristleBrush}};ColorsDraw.BrushTables.DistTableBits=8;ColorsDraw.BrushTables.DistTableWidth=1<<ColorsDraw.BrushTables.DistTableBits;
ColorsDraw.BrushTables.DistTableCenter=(ColorsDraw.BrushTables.DistTableWidth/2)|0;ColorsDraw.BrushTables.BrushTableWidth=256;
ColorsDraw.BrushTables.BrushTableHeight=65;ColorsDraw.BrushTables.kExtraBrushScale=1.023;ColorsDraw.BrushTables.SHIFTBIT=12;
function roundToInt(a){a+=1<<(ColorsDraw.BrushTables.SHIFTBIT-1);return a>>ColorsDraw.BrushTables.SHIFTBIT}function fixedDiv(b,a){var c=b;
c<<=ColorsDraw.BrushTables.SHIFTBIT;c/=a;return 0|c}function fixedMult(d,c){var e=d;e*=c;e>>=ColorsDraw.BrushTables.SHIFTBIT;
return e}ColorsDraw.BrushTables.floatScale=function(b,v,C,u,j,z){var t=0;var s=0;var h=v/j;var f=C/z;for(var p=0;p<z;p++){var A=p*j;
var o=t;for(var q=0;q<j;q++){var a=0|(o);var n=0|(s);var B=o+h;B=Math.min(B,v);var m=0|(B);var e=s+f;e=Math.min(e,C);var w=0|(e);
var D=1-(o-a);var H=1-(s-n);var g=B-m;var l=e-w;var c=0;for(var F=n;F<=w;F++){var d=1;if(n==w){d*=f}else{if(F==n){d*=H}if(F==w){d*=l
}}if(d>0.0001){for(var r=a;r<=m;r++){var G=d;if(a==m){G*=h}else{if(r==a){G*=D}if(r==m){G*=g}}if(G>0.0001){var k=b[r+F*v];
c+=k*G}else{}}}}var E=1/(h*f);var I=c*E;u[A+q]=0|Math.round(I);o+=h}s+=f}};ColorsDraw.BrushTables.fixedScaleExpanded=function(M,f,q,K,e,a){var m=ColorsDraw.BrushTables.SHIFTBIT;
var z=(1<<m)*0.0001;var B=0|z;var t=0;var s=0;var p=fixedDiv(f,e);var n=fixedDiv(q,a);for(var C=0;C<a;C++){var A=C*e;var d=t;
for(var D=0;D<e;D++){var o=d>>m;var c=s>>m;var g=d+p;g=Math.min(g,f<<m);var u=g>>m;var H=s+n;H=Math.min(H,q<<m);var j=H>>m;
var L=(1<<m)-(d-(o<<m));var r=(1<<m)-(s-(c<<m));var G=g-(u<<m);var l=H-(j<<m);var J=0;for(var E=c;E<=j;E++){var F=1<<m;if(c==j){F=(F*n)>>m
}else{if(E==c){F=(F*r)>>m}if(E==j){F=(F*l)>>m}}if(F>B){for(var b=o;b<=u;b++){var k=F;if(o==u){k=(k*p)>>m}else{if(b==o){k=(k*L)>>m
}if(b==u){k=(k*G)>>m}}if(k>B){if(b<f&&E<q){var v=M[b+E*f];J+=(v)*k}else{}}}}}var h=0|(((1<<m)<<m)/((p*n)>>m));var w=(J*h)>>m;
var I=(w+(1<<(m-1)))>>m;K[A+D]=I;d+=p}s+=n}};ColorsDraw.BrushTables.fixedScale=function(M,f,q,K,e,a){var m=ColorsDraw.BrushTables.SHIFTBIT;
var z=(1<<m)*0.0001;var B=0|z;var t=0;var s=0;var p=fixedDiv(f,e);var n=fixedDiv(q,a);for(var C=0;C<a;C++){var A=C*e;var d=t;
for(var D=0;D<e;D++){var o=d>>m;var c=s>>m;var g=d+p;g=Math.min(g,f<<m);var u=g>>m;var H=s+n;H=Math.min(H,q<<m);var j=H>>m;
var L=(1<<m)-(d-(o<<m));var r=(1<<m)-(s-(c<<m));var G=g-(u<<m);var l=H-(j<<m);var J=0;for(var E=c;E<=j;E++){var F=1<<m;if(c==j){F=fixedMult(F,n)
}else{if(E==c){F=fixedMult(F,r)}if(E==j){F=fixedMult(F,l)}}if(F>B){for(var b=o;b<=u;b++){var k=F;if(o==u){k=fixedMult(k,p)
}else{if(b==o){k=fixedMult(k,L)}if(b==u){k=fixedMult(k,G)}}if(k>B){if(b<f&&E<q){var v=M[b+E*f];J+=(v)*k}else{}}}}}var h=fixedDiv(1<<m,fixedMult(p,n));
var w=fixedMult(J,h);var I=roundToInt(w);K[A+D]=I;d+=p}s+=n}};function SmoothStep(a){return Math.sin((a*a-0.5)*Math.PI)*0.5+0.5
}ColorsDraw.BrushTables.CreateDistanceTable=function(d){var g=new Array(ColorsDraw.BrushTables.DistTableWidth*ColorsDraw.BrushTables.DistTableWidth);
for(var b=0;b<ColorsDraw.BrushTables.DistTableWidth;b++){for(var j=0;j<ColorsDraw.BrushTables.DistTableWidth;j++){var c=b-ColorsDraw.BrushTables.DistTableCenter;
var a=j-ColorsDraw.BrushTables.DistTableCenter;var e=Math.sqrt(c*c+a*a);if(e>=ColorsDraw.BrushTables.DistTableCenter){g[(j<<ColorsDraw.BrushTables.DistTableBits)+b]=255
}else{var h=Math.max(1-e/ColorsDraw.BrushTables.DistTableCenter,0);g[(j<<ColorsDraw.BrushTables.DistTableBits)+b]=255-(Math.round(h*(ColorsDraw.BrushTables.BrushTableWidth-1))|0)
}}}d.distanceTable=g};ColorsDraw.BrushTables.CreateBrushes=function(d){for(var b=0;b<d.brushTables.length;b++){var u=0;var o=0;
switch(b){case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD:u=0.75;o=255;break;case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_SOFT:u=0;
o=128;break}for(var p=ColorsDraw.BrushTables.BrushTableWidth-1;p>=0;p--){var s=p/ColorsDraw.BrushTables.BrushTableWidth;var n=1-(s-u)/(1-u);
if(Math.round(SmoothStep(n)*o)>1){break}}var r=(p+2)/ColorsDraw.BrushTables.BrushTableWidth/ColorsDraw.BrushTables.BrushTableWidth;
var t=new Array(ColorsDraw.BrushTables.BrushTableWidth*ColorsDraw.BrushTables.BrushTableHeight);var e=new Array(ColorsDraw.BrushTables.BrushTableWidth);
for(var k=0;k<ColorsDraw.BrushTables.BrushTableHeight;k++){var g=ColorsDraw.BrushTables.kExtraBrushScale+k*2/64;for(var p=0;
p<ColorsDraw.BrushTables.BrushTableWidth;p++){var s=Math.min(p*r*g,1);if(s<u){e[p]=o}else{var n=1-(s-u)/(1-u);n=SmoothStep(n)*o;
e[p]=Math.round(n)|0}}var m=k*ColorsDraw.BrushTables.BrushTableWidth;var c=0|Math.round(k*ColorsDraw.BrushTables.BrushTableWidth/(g*64));
var a=0;for(var l=0;l<ColorsDraw.BrushTables.BrushTableWidth;l++){var j=0;for(var q=l-c;q<l+c+1;q++){p=Math.abs(q);if(p<ColorsDraw.BrushTables.BrushTableWidth){j+=e[p]
}}var h=0|(j/(c*2+1));if(h>a){a=h}t[m+l]=h}}d.brushTables[b]=t}};ColorsDraw.DrawState=function(){this.penDown=false;this.lastf_x=0;
this.lastf_y=0;this.last_pressure=0;this.strokeDistance=0;this.mPartRenderCount=0;this.entireStrokeDirtyRegion=new ColorsUtilities.Region();
this.finaliseDirtyRegion=new ColorsUtilities.Region();this.lastPointDirtyRegion=new ColorsUtilities.Region();this.resetForNewStroke=function(){this.penDown=false;
this.entireStrokeDirtyRegion.reset();this.finaliseDirtyRegion.reset();this.lastPointDirtyRegion.reset();this.mPartRenderCount=0
};this.copyFrom=function(a){this.penDown=a.penDown;this.lastf_x=a.lastf_x;this.lastf_y=a.lastf_y;this.last_pressure=a.last_pressure;
this.strokeDistance=a.strokeDistance;this.mPartRenderCount=a.mPartRenderCount;this.entireStrokeDirtyRegion.copyFrom(a.entireStrokeDirtyRegion);
this.finaliseDirtyRegion.copyFrom(a.finaliseDirtyRegion);this.lastPointDirtyRegion.copyFrom(a.lastPointDirtyRegion)}};ColorsDraw.ToolsState=function(){this.brushType=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD;
this.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY;this.brushSize=20;this.red=255;this.green=0;
this.blue=0;this.opacity=1;this.bristleSpacing=0.03;this.mNotSaved=true;this.copyFrom=function(a){this.brushType=a.brushType;
this.brushControl=a.brushControl;this.brushSize=a.brushSize;this.red=a.red;this.green=a.green;this.blue=a.blue;this.opacity=a.opacity;
this.bristleSpacing=a.bristleSpacing;this.mNotSaved=a.mNotSaved};this.createCopy=function(){var a=new ColorsDraw.ToolsState();
a.copyFrom(this);return a};this.isColorDifferent=function(a){var b=false;if(this.red!=a.red||this.green!=a.green||this.blue!=a.blue){b=true
}return b};this.isBrushDifferent=function(a){var b=false;if(this.brushType!=a.brushType||this.brushControl!=a.brushControl||this.brushSize!=a.brushSize||this.opacity!=a.opacity){b=true
}return b}};ColorsDraw.UserState=function(c,a){this.width=c;this.height=a;var b=this.width*this.height;this.opacityBuffer=new Array(b);
this.zeroOpacities=function(){var e=this.width*this.height;var f=this.opacityBuffer;for(var d=0;d<e;d++){f[d]=0}};this.zeroOpacities();
this.toolsState=new ColorsDraw.ToolsState();this.drawState=new ColorsDraw.DrawState()};ColorsDraw.Users=function(c,a){this.width=c;
this.height=a;var b=this.width*this.height;var d=new Object();d.mMaxUserNumber=-1;d.mCurrentUser=0;this.getPerUserInfo=function(){return d
};this.addUser=function(e){var f=new Object();f.mCurrentLayerNumber=0;f.mToolsState=new ColorsDraw.ToolsState();f.mDrawState=new ColorsDraw.DrawState();
if(typeof Uint8Array!="undefined"){f.mOpacityBuffer=new Uint8Array(b)}else{f.mOpacityBuffer=new Array(b)}d[e]=f;if(e>d.mMaxUserNumber){d.mMaxUserNumber=e
}this.zeroUserOpacities(e)};this.getUserInfo=function(e){var f=null;if(e in d){f=d[e]}return f};this.getCurrentUserInfo=function(){return this.getUserInfo(d.mCurrentUser)
};this.getCurrentUserLayerNumber=function(){var e=0;var f=this.getUserInfo(d.mCurrentUser);if(f!=null){e=f.mCurrentLayerNumber
}return e};this.setCurrentUserLayerNumber=function(e){var f=this.getUserInfo(d.mCurrentUser);if(f!=null){f.mCurrentLayerNumber=e
}};this.getUserToolsState=function(e){var f=null;var g=this.getUserInfo(e);if(g!=null){f=g.mToolsState}return f};this.getCurrentUserToolsState=function(){return this.getUserToolsState(d.mCurrentUser)
};this.getUserDrawState=function(e){var g=null;var f=this.getUserInfo(e);if(f!=null){g=f.mDrawState}return g};this.getCurrentUserDrawState=function(){return this.getUserDrawState(d.mCurrentUser)
};this.getUserOpacityBuffer=function(e){var f=null;var g=this.getUserInfo(e);if(g!=null){f=g.mOpacityBuffer}return f};this.getCurrentUserOpacityBuffer=function(){return this.getUserOpacityBuffer(d.mCurrentUser)
};this.setCurrentUser=function(e){var f=this.getUserInfo(e);if(f==null){this.addUser(e)}d.mCurrentUser=e};this.getCurrentUser=function(){return d.mCurrentUser
};this.zeroOpacities=function(e,m){if(m){if(m.isValid()){var p=m.getMinX();var o=m.getMinY();var f=m.getWidth();var r=m.getHeight();
if(p<0){f+=p;p=0}if(o<0){r+=o;o=0}if(f>0&&r>0){var t=p+f;var s=o+r;var q=this.width;if(t>q){t=q}if(s>this.height){s=this.height
}var l=o*q+p;var h;for(var k=o;k<s;k++){h=l;for(var n=p;n<t;n++,h++){e[h]=0}l+=q}}}}else{var j=this.width*this.height;for(var g=0;
g<j;g++){e[g]=0}}};this.zeroUserOpacities=function(e,g){var f=this.getUserOpacityBuffer(e);if(f==null){return}this.zeroOpacities(f,g)
};this.zeroCurrentUserOpacities=function(e){this.zeroUserOpacities(d.mCurrentUser,e)};this.zeroAllUsersOpacities=function(){var e=d.mMaxUserNumber;
for(var f=0;f<=e;f++){this.zeroUserOpacities(f)}};this.resetAllDrawStates=function(){var e=d.mMaxUserNumber;for(var f=0;f<=e;
f++){var g=this.getUserInfo(f);if(g!=null){g.mDrawState.resetForNewStroke()}}};this.allPensUp=function(){var f=d.mMaxUserNumber;
var e=true;for(var g=0;g<=f;g++){var h=this.getUserInfo(g);if(h!=null){if(h.mDrawState.penDown){e=false;break}}}return e};
this.copyFrom=function(e){if(this.width!=e.width||this.height!=e.height){return}var n=e.getPerUserInfo();var o=d;var k=n.mMaxUserNumber;
var g=o.mMaxUserNumber;o.mMaxUserNumber=k;o.mCurrentUser=n.mCurrentUser;for(var h=k+1;h<=g;h++){if(h in o){delete o[h]}}for(var h=0;
h<=k;h++){if(h in n){if(!(h in o)){this.addUser(h)}var j=n[h];var p=o[h];p.mCurrentLayerNumber=j.mCurrentLayerNumber;p.mToolsState.copyFrom(j.mToolsState);
p.mDrawState.copyFrom(j.mDrawState);var m=this.width*this.height;var f=p.mOpacityBuffer;var l=j.mOpacityBuffer;for(var h=0;
h<m;h++){f[h]=l[h]}}else{if(h in o){delete o[h]}}}};this.createCopy=function(){var e=new ColorsDraw.Users(this.width,this.height);
e.copyFrom(this);return e};this.addUser(0)};ColorsDraw.versions.ColorsEngine="1";ColorsDraw.ColorsEngine={};ColorsDraw.ColorsEngine.kFIXED_SHIFT=12;
ColorsDraw.ColorsEngine.kFIXED_MULTIPLIER=1<<ColorsDraw.ColorsEngine.kFIXED_SHIFT;ColorsDraw.ColorsEngine.drawBrush=function(w,v,u,I,e,t){var ad=0|(I*ColorsDraw.ColorsEngine.kFIXED_MULTIPLIER*0.5);
var M=ad+(0|(1.49999*ColorsDraw.ColorsEngine.kFIXED_MULTIPLIER));var L=0|(w*ColorsDraw.ColorsEngine.kFIXED_MULTIPLIER);var J=0|(v*ColorsDraw.ColorsEngine.kFIXED_MULTIPLIER);
var X=L-ad;var W=J-ad;var C=L+M;var B=J+M;var E=Math.max(Math.min(X,C),0);var s=E>>ColorsDraw.ColorsEngine.kFIXED_SHIFT;var q=Math.min((Math.max(X,C))>>ColorsDraw.ColorsEngine.kFIXED_SHIFT,e.width);
var p=Math.max(Math.min(W,B),0);var a=p>>ColorsDraw.ColorsEngine.kFIXED_SHIFT;var af=Math.min((Math.max(W,B))>>ColorsDraw.ColorsEngine.kFIXED_SHIFT,e.height);
var S=e.getCurrentUserToolsState();if(S.brushType==ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_BRISTLE){var ac=e.getCurrentUserOpacityBuffer();
var Z=t.drwTables.getBristleBrush(S.brushSize);var N=Z.data;var c=Z.width;var o=c;var l=Z.height;var ab=Math.max(-(X>>ColorsDraw.ColorsEngine.kFIXED_SHIFT),0);
var r=Math.max(-(W>>ColorsDraw.ColorsEngine.kFIXED_SHIFT),0);q=Math.min(s+o-ab,q);af=Math.min(a+l-r,af);var ae;var z;var k;
var aa;var A=r*c;var D=e.width;var P=D*a;for(var Q=a;Q<af;Q++){for(var R=s;R<q;R++){ae=N[ab+R-s+A];if(ae>0){z=ac[P+R];k=(ae*u)>>8;
if(k>0){aa=Math.max(Math.min(k+z-((k*z)>>8),u),z);ac[P+R]=aa}}}A+=c;P+=D}return}var U=ColorsDraw.BrushTables.kExtraBrushScale+2/I;
var O=0|(ColorsDraw.BrushTables.DistTableWidth*ColorsDraw.ColorsEngine.kFIXED_MULTIPLIER/(I*U));var j=L-(s<<ColorsDraw.ColorsEngine.kFIXED_SHIFT);
j=(j*O)>>ColorsDraw.ColorsEngine.kFIXED_SHIFT;j=(ColorsDraw.BrushTables.DistTableCenter<<ColorsDraw.ColorsEngine.kFIXED_SHIFT)-j;
var Y=J-(a<<ColorsDraw.ColorsEngine.kFIXED_SHIFT);Y=(Y*O)>>ColorsDraw.ColorsEngine.kFIXED_SHIFT;Y=(ColorsDraw.BrushTables.DistTableCenter<<ColorsDraw.ColorsEngine.kFIXED_SHIFT)-Y;
var d=0|(64/I);var h=d*ColorsDraw.BrushTables.BrushTableWidth;var b=t.drwTables.brushTables[S.brushType];var G=t.drwTables.distanceTable;
var ac=e.getCurrentUserOpacityBuffer();var n;var D=e.width;var P=D*a+s;for(var Q=a;Q<af;Q++){var H=P;var f=j;var g=(Y>>ColorsDraw.ColorsEngine.kFIXED_SHIFT)*ColorsDraw.BrushTables.DistTableWidth;
for(var R=s;R<q;R++,H++){var z=ac[H];if(z<u){n=(f>>ColorsDraw.ColorsEngine.kFIXED_SHIFT);var T=G[g+n];var m=T+h;var V=b[m];
if(V>0){var F=(V*u)>>8;if(F>0){var K=F+z-((F*z)>>8);if(K>u){ac[H]=u}else{if(K>z){ac[H]=K}}}}}f+=O}Y+=O;P+=D}};ColorsDraw.ColorsEngine.finalizeStroke=function(d,w,S,h){var j=d.getCurrentUserDrawState();
if(!j.penDown){return false}var n=d.getCurrentUserToolsState();var q=j.finaliseDirtyRegion;if(!q.isValid()){return false}var a=d.width;
var c=d.height;var m,b;var l,U;var E=q.getMinPoint();var D=q.getMaxPoint();m=Math.max(Math.min(E.x,a-1),0);l=Math.max(Math.min(D.x,a-1),0);
b=Math.max(Math.min(E.y,c-1),0);U=Math.max(Math.min(D.y,c-1),0);var O=l;var u=n.red;var C=n.green;var F=n.blue;var R=u/255;
var f=C/255;var K=F/255;if(false){var M=d.getCurrentUser();if(M==0){u=255;C=0;F=0}else{u=0;C=255;F=0}}var Q=d.getCurrentUserOpacityBuffer();
var N=0;var A=b*a;var g=0;var s=0;var o=0;var r=w.data;var t=w.width*4;var J=b*t;var L=0;var H=0;var v=0;var T=0;var B=0;
if(S){if(n.brushControl==ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_ERASER){for(var G=b;G<=U;G++){L=J+m*4;for(var I=m;
I<=l;I+=1){N=Q[A+I];if(N>0){var k=false;cur_alpha=r[L+3];if(h){g=r[L+0];s=r[L+1];o=r[L+2];var z=255-N;H=(g*z)>>8;v=(s*z)>>8;
T=(o*z)>>8;B=(cur_alpha*z)>>8;k=true}else{var z=255-N;B=cur_alpha*z;B=(B/255)|0}if(false){var P=((I%(8*3))/8)|0;var p=((G%(8*3))/8)|0;
P+=p;P%=3;if(P==0){if(z<20){H=0;v=255;T=0;B=255}else{H=255;v=0;T=0;B=255}}else{if(P==1){H=g;v=s;T=o;B=cur_alpha}}}if(k){r[L+0]=H;
r[L+1]=v;r[L+2]=T}r[L+3]=B}L+=4}A+=a;J+=t}}else{for(var G=b;G<=U;G++){L=J+m*4;for(var I=m;I<=l;I+=1){N=Q[A+I];if(N>0){g=r[L+0];
s=r[L+1];o=r[L+2];cur_alpha=r[L+3];if(h){var z=255-N;H=((N*u+N)>>8)+((z*g+z)>>8);v=((N*C+N)>>8)+((z*s+z)>>8);T=((N*F+N)>>8)+((z*o+z)>>8);
B=N+((z*cur_alpha+z)>>8);if(B>255){B=255}r[L+0]=H;r[L+1]=v;r[L+2]=T;r[L+3]=B}else{var z=255-N;var e=255*N+cur_alpha*z;H=255*u*N+g*cur_alpha*z;
v=255*C*N+s*cur_alpha*z;T=255*F*N+o*cur_alpha*z;H=(H/e)|0;v=(v/e)|0;T=(T/e)|0;B=(e/255)|0;r[L+0]=H;r[L+1]=v;r[L+2]=T;r[L+3]=B
}}L+=4}A+=a;J+=t}}}else{J+=m*4;for(var G=b;G<=U;G++){L=J;for(var I=m;I<=l;I++){N=Q[A+I];if(N>0){g=r[L+0];s=r[L+1];o=r[L+2];
H=(g+(((u-g)*N+u)>>8));v=(s+(((C-s)*N+C)>>8));T=(o+(((F-o)*N+F)>>8));r[L+0]=H;r[L+1]=v;r[L+2]=T}L+=4;if(false){I+=1;N=Q[A+I];
if(N>0){g=r[L+0];s=r[L+1];o=r[L+2];if(!part_stroke){Q[A+I]=0}H=(g+(((u-g)*N+u)>>8));v=(s+(((C-s)*N+C)>>8));T=(o+(((F-o)*N+F)>>8));
r[L+0]=H;r[L+1]=v;r[L+2]=T}I-=1;L+=4}}A+=a;J+=t}}return true};ColorsDraw.ColorsEngine.needsPressure=function(b){var a=false;
if(b&ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY||b&ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZE){a=true
}return a};ColorsDraw.ColorsEngine.getBrushSize=function(b,d,c){if(b.brushControl&ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZE){var a=d*b.brushSize;
if(a<c){a=c}return a}else{return b.brushSize}};ColorsDraw.ColorsEngine.getOpacity=function(a,b){if(a.brushControl&ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY||a.brushControl&ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_DISTANCEOPACITY){return 0|(255.999*b*a.opacity)
}else{return 0|(255.999*a.opacity)}};ColorsDraw.ColorsEngine.processStrokePart=function(o,b,m,a,p,v){var x=p.getCurrentUserToolsState();
var j=p.getCurrentUserDrawState();var s=x.brushSize*0.5;var z=ColorsDraw.ColorsEngine.needsPressure(x.brushControl);if(!z){m=1
}if(!j.penDown){var y=ColorsDraw.ColorsEngine.getBrushSize(x,m,v.minBrushSize);var e=ColorsDraw.ColorsEngine.getOpacity(x,m);
ColorsDraw.ColorsEngine.drawBrush(o,b,e,y,p,v);j.lastf_x=o;j.lastf_y=b;j.strokeDistance=0;j.last_pressure=m;var D=Math.floor(o-s);
var B=Math.floor(b-s);var C=Math.ceil(o+s);var A=Math.ceil(b+s);j.resetForNewStroke();j.lastPointDirtyRegion.adjustForPoint(D|0,B|0);
j.lastPointDirtyRegion.adjustForPoint(C|0,A|0);j.finaliseDirtyRegion.mergeRegion(j.lastPointDirtyRegion);j.entireStrokeDirtyRegion.mergeRegion(j.lastPointDirtyRegion);
j.penDown=true}else{var D=Math.floor(o-s);var B=Math.floor(b-s);var C=Math.ceil(o+s);var A=Math.ceil(b+s);var w=(o-j.lastf_x);
var u=(b-j.lastf_y);var f=Math.sqrt(w*w+u*u);var r=f;if(f==0){f=0.0001}if(x.brushControl==ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_DISTANCEOPACITY){m*=Math.max(1-(j.strokeDistance+f)/(1.5*v.brushMultiplier),0)
}var k=m-j.last_pressure;var d=w/f;var c=u/f;var q=k/f;var l;var t=0.03;var n=0.2;var h=2/256;if(x.brushType==ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_BRISTLE){l=x.bristleSpacing
}else{if(q==0||x.brushControl!=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY||x.brushType!=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD){l=n
}else{l=Math.min(n,Math.max(Math.abs(h/v.minBrushSize/(Math.abs(q)*x.opacity)),t))}}var g=ColorsDraw.ColorsEngine.getBrushSize(x,j.last_pressure,v.minBrushSize)*l;
if(f<g){if(a){j.lastf_x=o;j.lastf_y=b;j.last_pressure=m;var y=ColorsDraw.ColorsEngine.getBrushSize(x,m,v.minBrushSize);var e=ColorsDraw.ColorsEngine.getOpacity(x,m);
ColorsDraw.ColorsEngine.drawBrush(o,b,e,y,p,v);j.strokeDistance+=r-f;j.lastPointDirtyRegion.reset();j.lastPointDirtyRegion.adjustForPoint(D|0,B|0);
j.lastPointDirtyRegion.adjustForPoint(C|0,A|0);j.finaliseDirtyRegion.mergeRegion(j.lastPointDirtyRegion);j.entireStrokeDirtyRegion.mergeRegion(j.lastPointDirtyRegion);
return true}return false}j.lastPointDirtyRegion.reset();j.lastPointDirtyRegion.adjustForPoint(D|0,B|0);j.lastPointDirtyRegion.adjustForPoint(C|0,A|0);
j.finaliseDirtyRegion.mergeRegion(j.lastPointDirtyRegion);j.entireStrokeDirtyRegion.mergeRegion(j.lastPointDirtyRegion);if(x.brushControl==ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZE||x.brushControl==ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZEOPACITY){while(f>=g){j.last_pressure+=q*g;
j.lastf_x+=d*g;j.lastf_y+=c*g;f-=g;var y=ColorsDraw.ColorsEngine.getBrushSize(x,j.last_pressure,v.minBrushSize);var e=ColorsDraw.ColorsEngine.getOpacity(x,j.last_pressure);
ColorsDraw.ColorsEngine.drawBrush(j.lastf_x,j.lastf_y,e,y,p,v);g=y*l}}else{d*=g;c*=g;q*=g;while(f>=g){j.last_pressure+=q;
j.lastf_x+=d;j.lastf_y+=c;f-=g;var y=x.brushSize;var e=ColorsDraw.ColorsEngine.getOpacity(x,j.last_pressure);ColorsDraw.ColorsEngine.drawBrush(j.lastf_x,j.lastf_y,e,y,p,v)
}}j.strokeDistance+=r-f}return true};ColorsDraw.EnvSettings=function(e,a,f,b,d){this.drwTables=b;this.imageWidth=parseInt(e);
this.imageHeight=parseInt(a);this.aspectratio=parseFloat(f);var c=this.imageWidth/this.imageHeight;if(this.imageWidth>this.imageHeight*f){this.orthToImageScale_X=this.imageWidth*f/c;
this.orthToImageScale_Y=this.imageHeight;this.orthToImageTranslate_X=(this.imageWidth-this.orthToImageScale_X)/2;this.orthToImageTranslate_Y=0
}else{this.orthToImageScale_X=this.imageWidth;this.orthToImageScale_Y=this.imageHeight*c/f;this.orthToImageTranslate_X=0;
this.orthToImageTranslate_Y=(this.imageHeight-this.orthToImageScale_Y)/2}if(d){this.brushMultiplier=this.orthToImageScale_Y
}else{this.brushMultiplier=this.orthToImageScale_X}this.minBrushSize=Math.max(this.brushMultiplier/512,1.25)};ColorsDraw.DrwPosition=function(){this.mNextCmdIndex=0;
this.mNumEvents=0;this.mNumStrokes=0;this.set=function(a,c,b){this.mNextCmdIndex=a;this.mNumEvents=c;this.mNumStrokes=b};
this.copyFrom=function(a){this.mNextCmdIndex=a.mNextCmdIndex;this.mNumEvents=a.mNumEvents;this.mNumStrokes=a.mNumStrokes};
this.isValid=function(){if(this.mNextCmdIndex>=0){return true}return false};this.invalidate=function(){this.mNextCmdIndex=-1
};this.compare=function(a){var b=this.mNextCmdIndex-a.mNextCmdIndex;return b}};ColorsDraw.PaintStateRecord=function(c,a){this.mPosition=new ColorsDraw.DrwPosition();
this.mPosition.invalidate();this.mToolsState=new ColorsDraw.ToolsState();var b=new Object();b.width=c;b.height=a;var d=new Array(c*a);
b.data=d;this.mTheColors=b;this.blankColors=function(f){for(var g=0;g<a;g++){for(var e=0;e<c;e++){d[g*c+e]=f}}}};ColorsDraw.PaintDrwHandler=function(a,e,J){var E=this;
var m=8;var b=100000;var d=10;var G=new Object();var x=0;var H=0;var L=0;var c=a;var D=e;var s=4294967295;var f=-1;var p=null;
if(J.blank_color!=null){s=J.blank_color}if(J.undo_spacing!=null){m=J.undo_spacing}var g=new ColorsDraw.DrwPosition();g.set(0,0,0);
var q=new ColorsDraw.DrwPosition();q.invalidate();var w=new ColorsUtilities.Region();var t=new ColorsUtilities.Region();var B=null;
if(J.num_playback_keep_points!=null){B=new Array(J.num_playback_keep_points);for(var I=0;I<B.length;I++){B[I]=new ColorsDraw.PaintStateRecord(c,D)
}}var n=200;var h=n;var F=0;var C=null;if(J.disableUndos==null||J.disableUndos==false){C=new Array(2);for(var I=0;I<C.length;
I++){C[I]=new ColorsDraw.PaintStateRecord(c,D)}C[0].mPosition.set(0,0,0);C[0].blankColors(s)}if(J.maximumCommands!=null){f=J.maximumCommands
}if(f>0){G.commands=new Array(f)}else{G.commands=new Array(b)}var z=G.commands;for(var I=0;I<z.length;I++){z[I]=0}var y=function(M,Q,P){if(B==null){return
}var N=null;if(B[B.length-1].mPosition.isValid()){N=B[F++];N.mPosition.invalidate();for(var O=F;O<B.length;O++){B[O-1]=B[O]
}B[B.length-1]=N;if(F>=B.length){F=0;n*=2}}else{for(var O=0;O<B.length;O++){var R=B[O];if(!R.mPosition.isValid()){N=R;break
}}}N.mToolsState.copyFrom(P);ColorsUtilities.copyToPackedIntImage(N.mTheColors,Q);N.mPosition.copyFrom(M)};var K=function(N,Q,P){if(C==null){return
}var M=null;for(var O=0;O<C.length;O++){if(C[O].mPosition.isValid()){if(M==null){M=C[O]}else{if(M.mPosition.compare(C[O].mPosition)>0){M=C[O]
}}}else{M=C[O];break}}M.mToolsState.copyFrom(P);ColorsUtilities.copyToPackedIntImage(M.mTheColors,Q);M.mPosition.copyFrom(N)
};var l=function(ah,N,ag,ae,ai){var aj=false;var R=ColorsDraw.DrwCommand.getType(ah);switch(R){case ColorsDraw.DrwCommand.Types.DRAW_CMD_TYPE:var X=(ah>>10)&2047;
var V=(ah>>21)&2047;var ad;var O;ad=ColorsDraw.DrwCommand.convertX(X,ae);O=ColorsDraw.DrwCommand.convertY(V,ae);var W=(ah>>2)&255;
ColorsDraw.ColorsEngine.processStrokePart(ad,O,W/255,true,ag,ae);break;case ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE:if(!ai){ColorsDraw.ColorsEngine.finalizeStroke(ag,N);
var S=ag.getCurrentUserDrawState();ag.zeroCurrentUserOpacities(S.entireStrokeDirtyRegion);S.resetForNewStroke()}aj=true;break;
case ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE:var ac=ColorsDraw.DrwCommand.getFlipX(ah);var Z=ColorsDraw.DrwCommand.getFlipY(ah);
if(ac||Z){if(ac){ColorsUtilities.flipCanvasHorizontally(N)}else{if(Z){ColorsUtilities.flipCanvasVertically(N)}}aj=true}else{var aa=(ah>>2)&16777215;
var U=(aa>>16)&255;var Y=(aa>>8)&255;var M=(aa>>0)&255;ag.toolsState.red=U;ag.toolsState.green=Y;ag.toolsState.blue=M}break;
case ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE:var af=(ah>>2)&65535;var P=(ah>>24)&255;var ab=(ah>>21)&7;var Q=(ah>>18)&7;
var T;T=af/(1<<15)*ae.brushMultiplier;if(T<ae.minBrushSize){T=ae.minBrushSize}ag.toolsState.opacity=ColorsDraw.DrwCommand.convertOpacity(P);
ag.toolsState.brushSize=T;ag.toolsState.brushType=ab;ag.toolsState.brushControl=Q;break}return aj};E.clearCommands=function(){q.invalidate();
g.set(0,0,0);if(C!=null){for(var M=0;M<C.length;M++){C[M].mPosition.invalidate()}C[0].mPosition.set(0,0,0);C[0].blankColors(s)
}if(B!=null){for(var M=0;M<B.length;M++){B[M].mPosition.invalidate()}}n=200;h=n;F=0;E.abandonRebuilding()};var u=function(O,M,N){g.mNumEvents+=1;
if(N){g.mNumStrokes+=1}if((g.mNumEvents%m)==0){K(g,O,M)}if(!E.isRebuilding()){if(h<g.mNextCmdIndex){y(g,O,M);h=g.mNextCmdIndex+n
}}};var k=function(){var O=g.mNumEvent;if(C!=null){for(var N=0;N<C.length;N++){var M=C[N];if(M.mPosition.isValid()){if(M.mPosition.mNumEvents>O){M.mPosition.invalidate()
}}}}if(B!=null){for(var N=B.length-1;N>=0;N--){var M=B[N];if(M.mPosition.isValid()){if(M.mPosition.mNumEvents>O){if(h>M.mPosition.mNextCmdIndex){h=M.mPosition.mNextCmdIndex
}M.mPosition.invalidate()}}}}q.invalidate()};E.setPaintPosition=function(M){if(g.compare(M)<=0){return}if(!q.isValid()){q.copyFrom(g)
}g.copyFrom(M)};E.rollBackwardOneEvent=function(){if(g.mNumEvents<=0){return -1}if(!q.isValid()){q.copyFrom(g)}var N=g.mNextCmdIndex-1;
var O=G.commands[N];while(!ColorsDraw.DrwCommand.isMajorEvent(O)){N-=1;O=G.commands[N]}var M=false;if(ColorsDraw.DrwCommand.getType(O)==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){M=true
}N-=1;if(N<0){g.set(0,0,0)}else{O=G.commands[N];while(N>=0&&!ColorsDraw.DrwCommand.isMajorEvent(O)){N-=1;O=G.commands[N]}if(!ColorsDraw.DrwCommand.isMajorEvent(O)){g.set(0,0,0)
}else{var P=g.mNumStrokes;if(M){P-=1}g.set(N+1,g.mNumEvents-1,P)}}return g.mNextCmdIndex};E.rollForwardOneEvent=function(){if(!q.isValid()){return -1
}var N=q.mNextCmdIndex;var O=g.mNextCmdIndex;var P;while(O<N){P=G.commands[O];if(ColorsDraw.DrwCommand.isMajorEvent(P)){break
}O+=1}if(O>=N){g.copyFrom(q);q.invalidate();return g.mNextCmdIndex}var M=false;if(ColorsDraw.DrwCommand.getType(P)==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){M=true
}O+=1;var Q=g.mNumStrokes;if(M){Q+=1}g.set(O,g.mNumEvents+1,Q);if(O==q.mNextCmdIndex){q.invalidate()}return g.mNextCmdIndex
};E.setPaintPointQuick=function(M){if(!M.isValid()){return -1}var O=g.compare(M);if(O==0){return g.mNextCmdIndex}if(O<0){if(!q.isValid()){return -1
}var N=q.compare(M);if(N<0){return -1}g.copyFrom(M);if(N==0){q.invalidate()}}else{if(!q.isValid()){q.copyFrom(g)}g.copyFrom(M)
}return g.mNextCmdIndex};E.flipHorizontally=function(O,M){if(q.isValid()){k()}var N=ColorsDraw.DrwCommand.buildFlipCommand(true,false);
G.commands[g.mNextCmdIndex++]=N;mValidCommandsUntilIndex=0;u(O,M,false)};E.flipVertically=function(O,M){if(q.isValid()){k()
}var N=ColorsDraw.DrwCommand.buildFlipCommand(false,true);G.commands[g.mNextCmdIndex++]=N;mValidCommandsUntilIndex=0;u(O,M,false)
};E.saveColorChange=function(P,O,M){if(q.isValid()){k()}var N=ColorsDraw.DrwCommand.buildColourCommand(P,O,M);G.commands[g.mNextCmdIndex++]=N;
mValidCommandsUntilIndex=0};E.saveBrushChange=function(O,R,P,M,N){if(q.isValid()){k()}var Q=ColorsDraw.DrwCommand.buildSizeChangeCommand(O,R,P,M,N);
G.commands[g.mNextCmdIndex++]=Q;mValidCommandsUntilIndex=0};E.addStrokePoint=function(O,M,Q,N){if(q.isValid()){k()}var P=ColorsDraw.DrwCommand.buildDrawCommandWithCanvasValues(O,M,Q,N);
G.commands[g.mNextCmdIndex++]=P;mValidCommandsUntilIndex=0};E.completeStroke=function(Q,N){if(q.isValid()){k()}var P=ColorsDraw.DrwCommand.buildDrawEndCommand();
G.commands[g.mNextCmdIndex++]=P;mValidCommandsUntilIndex=0;if(f<=0){if((G.commands.length-g.mNextCmdIndex)<200){var R=new Array(b);
var O=R.length;for(var M=0;M<O;M++){R[M]=0}G.commands=G.commands.concat(R)}}u(Q,N,true)};E.playCommands=function(R,S,U,T,P,V){var M=false;
for(var Q=0;Q<S;Q++){var N=R+Q;if(N<L){var O=G.commands[R+Q];if(l(O,U,T,P,V)){M=true}}else{break}}return M};var j=function(O){if(O>g.mNumEvents){return null
}var M=null;if(C!=null){for(var N=0;N<C.length;N++){var P=C[N];if(P.mPosition.isValid()){if(O>=P.mPosition.mNumEvents){if(M!=null){if(P.mPosition.compare(M.mPosition)>0){M=P
}}else{M=P}}}}}if(B!=null){for(var N=0;N<B.length;N++){var P=B[N];if(P.mPosition.isValid()){if(O>=P.mPosition.mNumEvents){if(M!=null){if(P.mPosition.compare(M.mPosition)>0){M=P
}}else{M=P}}else{break}}else{break}}}return M};var v=function(O){if(O>L){return null}var M=null;if(C!=null){for(var N=0;N<C.length;
N++){var P=C[N];if(P.mValid){if(O>=P.mNextCommandIndex){if(M!=null){if(P.mNextCommandIndex>M.mNextCommandIndex){M=P}}else{M=P
}}}}}if(B!=null){for(var N=0;N<B.length;N++){var P=B[N];if(P.mValid){if(O>=P.mNextCommandIndex){if(P.mNextCommandIndex>M.mNextCommandIndex){M=P
}}else{break}}else{break}}}return M};E.undoEvent=function(X,U,P){var V=x-1;var W=j(V);if(W==null){return false}if(mValidCommandsUntilIndex==0){mValidCommandsUntilIndex=L
}ColorsUtilities.copyFromPackedIntImage(X,W.mTheColors);U.toolsState.copyFrom(W.mToolsState);var T=W.mNumberMajorEvents;var M=V-T;
var S=W.mNextCommandIndex;var R=W.mNumberStrokes;for(var Q=0;Q<M;Q++){var N=false;while(!N){var O=G.commands[S++];l(O,X,U,P);
if(ColorsDraw.DrwCommand.isMajorEvent(O)){N=true}if(ColorsDraw.DrwCommand.getType(O)==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){R+=1
}}T+=1}L=S;x=T;H-=1;mNumStrokes=R;return true};E.redoEvent=function(X,S,O){if(mValidCommandsUntilIndex<=0){return false}var U=x;
var W=j(U);if(W==null){return false}S.toolsState.copyFrom(W.mToolsState);var Q=W.mNextCommandIndex;while(Q<L){var N=G.commands[Q++];
var V=ColorsDraw.DrwCommand.getType(N);var M=false;switch(V){case ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE:var R=ColorsDraw.DrwCommand.getFlipX(N);
var P=ColorsDraw.DrwCommand.getFlipY(N);if(!R&&!P){M=true}break;case ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE:M=true;
break}if(M){l(N,X,S,O)}}Q=L;var T=false;while(true){var N=G.commands[Q++];l(N,X,S,O);if(ColorsDraw.DrwCommand.isMajorEvent(N)){if(ColorsDraw.DrwCommand.getType(N)==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){T=true
}break}}L=Q;x+=1;if(T){mNumStrokes+=1}H+=1;if(L==mValidCommandsUntilIndex){mValidCommandsUntilIndex=0}return true};E.findRecordAtOrPreceedingNumMajorEvents=function(M){return j(M)
};E.getMajorEventCommandNumber=function(Q){if(Q>H){return -1}if(Q==0){return -1}var M=j(num_strokes);var O=0;var N=0;if(M!=null){if(M.mNextCommandIndex>0){O=M.mNextCommandIndex;
N=M.mNumberMajorEvents;if(M.mNumberMajorEvents){return O-1}}}while(O<L){var P=G.commands[O];if(ColorsDraw.DrwCommand.isMajorEvent(P)){N+=1;
if(N==Q){return O}O+=1}}return -1};E.findMajorEventAtOrAfterCommandNumber=function(M){var N=M;while(N<g.mNextCmdIndex){var O=G.commands[N];
if(ColorsDraw.DrwCommand.isMajorEvent(O)){return N}N+=1}return -1};E.renderToMajorEventAfterCommand=function(S,R,O,N){if(S>=L){return -1
}var M=v(S+1);var P=0;if(M==null){ColorsUtilities.fillImageData(R,255,255,255,255)}else{O.toolsState.copyFrom(M.mToolsState);
ColorsUtilities.copyFromPackedIntImage(R,M.mTheColors);P=M.mNextCommandIndex}var Q;for(;P<S;P++){Q=G.commands[P];l(Q,R,O,N)
}while(P<L){Q=G.commands[P++];if(l(Q,R,O,N)){break}}return P};E.renderMajorEvents=function(T,S,P,O){if(T>H){return}var M=j(T);
var Q=0;var N=0;if(M==null){ColorsUtilities.fillImageData(S,255,255,255,255)}else{P.toolsState.copyFrom(M.mToolsState);ColorsUtilities.copyFromPackedIntImage(S,M.mTheColors);
Q=M.mNextCommandIndex;N=M.mNumberMajorEvents}var R;while(N<T){R=G.commands[Q++];if(l(R,S,P,O)){N+=1}}return};E.reduceToNumEvents=function(M){};
E.getNumberCommands=function(){return g.mNextCmdIndex};E.getTotalCommands=function(){var M=g.mNextCmdIndex;if(q.isValid()){M=q.mNextCmdIndex
}return M};E.getNumberStrokes=function(){return g.mNumStrokes};E.getNumberUndosAvailable=function(){var M=g.mNumEvents;return M
};E.getNumberRedosAvailable=function(){var M=0;if(q.isValid){M=q.mNumEvents-g.mNumEvents}return M};E.getNumberMajorEvents=function(){return g.mNumEvents
};E.getCurrentCommandsBufferSize=function(){return G.commands.length};E.getCommandsBuffer=function(){return G.commands};E.getCommandsContainer=function(){return G
};E.getMaximumNumberCommands=function(){return f};E.copyPaintPosition=function(M){M.copyFrom(g)};E.injectRebuildingRenderedImage=function(M,O,N){if(p==null){return
}if(M.mNumEvents==p.position.mNumEvents+1){p.position.copyFrom(M);p.mUserState.toolsState.copyFrom(N);ColorsUtilities.copyImageData(p.image_data,O);
if(h<M.mNextCmdIndex){y(M,O,N);h=M.mNextCmdIndex+n}}};var r=function(){if(p==null){A();return}var T=E.getCommandsContainer();
var N=E.getNumberCommands();var P=new Date().getTime();var M=p.position.mNextCmdIndex;for(;M<N;M++){var Q=T.commands[p.position.mNextCmdIndex];
p.position.mNextCmdIndex+=1;var O=ColorsDraw.playCommand(Q,true,p.mColorsEnv,p.mUserState,p.image_data);if(O!=ColorsDraw.PlayedEventType.None){p.position.mNumEvents+=1;
if(O==ColorsDraw.PlayedEventType.Stroke){p.position.mNumStrokes+=1}if(h<p.position.mNextCmdIndex){y(p.position,p.image_data,p.mUserState.toolsState);
h=p.position.mNextCmdIndex+n}var S=new Date().getTime();var R=S-P;if(R>(1000/d)){break}}}p.times_through+=1;if(M>=N){A();
p.end_time=new Date().getTime();if(p.completeCallback!=null){p.completeCallback(E,p)}p=null}};var A=function(){if(p==null){return
}if(p.mTimerId!=-1){window.clearInterval(p.mTimerId);p.mTimerId=-1}};var o=function(){if(p==null){return}A();p.mTimerId=window.setInterval(r,0|(1000/d))
};E.pauseRebuilding=function(){if(p==null){return}A()};E.resumeRebuilding=function(){if(p==null){return}o()};E.abandonRebuilding=function(){if(p==null){return
}A();p=null};E.isRebuilding=function(){return(p!=null)};E.beginRebuildWithCommandsAndFinalImage=function(aj,S,ak,X,ac,Y,W){var aa=new ColorsDraw.EnvSettings(ac.width,ac.height,ac.width/ac.height,Y);
var ai=new ColorsDraw.ToolsState();this.clearCommands();if(f>0){if(X>f){X=f}}else{if(X>(G.commands.length-b)){var T=new Array(X+b);
for(var ah=0;ah<T.length;ah++){T[ah]=0}G.commands=T}}if(ak>X){ak=X}var M=G.commands;for(var ah=0;ah<X;ah++){var ag=aj[S+ah];
var R=ColorsDraw.DrwCommand.getType(ag);if(R==ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE){ColorsDraw.DrwCommand.updateToolsStateForColorChangeCmd(ag,ai)
}else{if(R==ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE){ColorsDraw.DrwCommand.updateToolsStateForSizeChangeCmd(ag,ai,aa.brushMultiplier,aa.minBrushSize)
}}M[ah]=ag}var ae=0;var P=0;for(var ah=0;ah<ak;ah++){var ag=G.commands[ah];if(ColorsDraw.DrwCommand.isMajorEvent(ag)){P+=1;
var Q=ColorsDraw.DrwCommand.getType(ag);if(Q==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){ae+=1}}}g.mNumEvents=P;g.mNumStrokes=ae;
g.mNextCmdIndex=ak;if(X>ak){for(var ah=ak;ah<X;ah++){var ag=G.commands[ah];if(ColorsDraw.DrwCommand.isMajorEvent(ag)){P+=1;
var Q=ColorsDraw.DrwCommand.getType(ag);if(Q==ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE){ae+=1}}}q.set(X,P,ae)}else{q.invalidate()
}if(C!=null){for(var ah=0;ah<C.length;ah++){C[ah].mPosition.invalidate()}var O=C[0];O.mToolsState.copyFrom(ai);ColorsUtilities.copyToPackedIntImage(O.mTheColors,ac);
O.mPosition.copyFrom(g)}if(B==null){return ai}n=(g.mNextCmdIndex/(B.length+1))|1;if(n<200){n=200}h=n;var ad=ac.width;var ab=ac.height;
p=new Object();p.start_time=new Date().getTime();p.completeCallback=W;p.position=new ColorsDraw.DrwPosition();p.position.set(0,0,0);
var N=new Object();var af=new Array(ad*ab*4);for(var U=0;U<ab;U++){for(var V=0;V<ad;V++){var Z=((U*ad)+V)*4;af[Z+0]=255;af[Z+1]=255;
af[Z+2]=255;af[Z+3]=255}}N.data=af;N.width=ad;N.height=ab;p.image_data=N;p.mUserState=new ColorsDraw.UserState(ad,ab);p.mColorsEnv=aa;
p.times_through=0;o();return ai}};ColorsDraw.versions.Painter="1";ColorsDraw.PainterMode={DRAWING:0,PLAYBACK:1};ColorsDraw.PlayedEventType={None:0,Stroke:1,Flip:2,LayerChange:3};
ColorsDraw.saveToolsStateToLocalStorage=function(d,a){var c="hard";var b="full";switch(a.brushType){case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD:c="hard";
break;case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_SOFT:c="soft";break;case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_BRISTLE:c="bristle";
break}switch(a.brushControl){case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_FULL:b="full";break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY:b="variable-opacity";
break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZE:b="variable-size";break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZEOPACITY:b="variable-size-opacity";
break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_DISTANCEOPACITY:b="distance-opacity";break}localStorage[d+"brush-type"]=c;
localStorage[d+"brush-control"]=b;localStorage[d+"brush-size"]=a.brushSize;localStorage[d+"red"]=a.red;localStorage[d+"green"]=a.green;
localStorage[d+"blue"]=a.blue;localStorage[d+"opacity"]=a.opacity;localStorage[d+"bristle-spacing"]=a.bristleSpacing};ColorsDraw.loadToolsStateToLocalStorage=function(c,b){var a=localStorage[c+"brush-type"];
if(a!=null){if(a=="hard"){b.brushType=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD}else{if(a=="soft"){b.brushType=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_SOFT
}else{if(a=="bristle"){b.brushType=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_BRISTLE}}}}var e=localStorage[c+"brush-control"];
if(e=="full"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_FULL}else{if(e=="variable-opacity"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY
}else{if(e=="variable-size"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZE}else{if(e=="variable-size-opacity"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZEOPACITY
}else{if(e=="distance-opacity"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_DISTANCEOPACITY}}}}}var d;
d=localStorage[c+"brush-size"];if(d!=null&&d!="NaN"){b.brushSize=parseFloat(d)}d=localStorage[c+"red"];if(d!=null&&d!="NaN"){b.red=parseInt(d)
}d=localStorage[c+"green"];if(d!=null&&d!="NaN"){b.green=parseInt(d)}d=localStorage[c+"blue"];if(d!=null&&d!="NaN"){b.blue=parseInt(d)
}d=localStorage[c+"opacity"];if(d!=null&&d!="NaN"){b.opacity=parseFloat(d)}d=localStorage[c+"bristle-spacing"];if(d!=null&&d!="NaN"){b.bristleSpacing=parseFloat(d)
}};ColorsDraw.clearToolsStateFromLocalStorage=function(a){localStorage.removeItem(a+"brush-type");localStorage.removeItem(a+"brush-control");
localStorage.removeItem(a+"brush-size");localStorage.removeItem(a+"red");localStorage.removeItem(a+"green");localStorage.removeItem(a+"blue");
localStorage.removeItem(a+"opacity");localStorage.removeItem(a+"bristle-spacing")};ColorsDraw.savePainterStateToLocalStore=function(j,n,l,r,e,c,d){if(!ColorsUtilities.supportsHtml5Storage){return false
}var h=0;while(true){try{localStorage["colors.painter.version"]="0";localStorage["colors.painter.fb-id"]=j;localStorage["colors.painter.width"]=n;
localStorage["colors.painter.height"]=l;ColorsDraw.saveToolsStateToLocalStorage("colors.painter.tools-state.",r);var s="normal";
switch(d){case ColorsDraw.Orientation.Clockwise:s="clockwise";break;case ColorsDraw.Orientation.CounterClockwise:s="counter-clockwise";
break;case ColorsDraw.Orientation.UpsideDown:s="upside-down";break}localStorage["colors.painter.orientation"]=s;var b=1;if(b!=null){var m=e.getCommandsInfo();
var u=m.mNumCmds;var k=m.mNumWrittenCmds;localStorage["colors.painter.drw.num-cmds"]=u;localStorage["colors.painter.drw.total-cmds"]=k;
if(k>0){var f=ColorsUtilities.base64EncodeIntArray(m.mCommands,0,k);var t=ColorsUtilities.squidgeBase64String(f);localStorage["colors.painter.drw.commands"]=t
}else{localStorage.removeItem("colors.painter.drw.commands")}var p=e.getHeader();if(p!=null){var o=p.asByteBuffer();var q=new Array((o.length/4)|0);
ColorsUtilities.bytesIntoIntsArray(o,0,q,0,q.length);var a=ColorsUtilities.base64EncodeIntArray(q,0,q.length);localStorage["colors.painter.drw.header"]=a
}}else{return false}localStorage["colors.painter.version"]="2";break}catch(g){h+=1;ColorsDraw.clearLocalStoreData();if(h>1){return false
}}}return true};ColorsDraw.loadPainterStateFromLocalStore=function(){var c=new Object();c.valid=false;if(!ColorsUtilities.supportsHtml5Storage){return c
}var g=localStorage["colors.painter.version"];if(g==null){return c}if(g=="0"){c.valid=true;return c}if(g!="1"&&g!="2"){return c
}c.valid=true;c.tools_state=new ColorsDraw.ToolsState();ColorsDraw.loadToolsStateToLocalStorage("colors.painter.tools-state.",c.tools_state);
c.facebook_user_id=localStorage["colors.painter.fb-id"];c.width=localStorage["colors.painter.width"];c.height=localStorage["colors.painter.height"];
c.orientation=ColorsDraw.Orientation.Normal;var l=localStorage["colors.painter.orientation"];if(l){if(l=="clockwise"){c.orientation=ColorsDraw.Orientation.Clockwise
}if(l=="counter-clockwise"){c.orientation=ColorsDraw.Orientation.CounterClockwise}if(l=="upside-down"){c.orientation=ColorsDraw.Orientation.UpsideDown
}}var d=localStorage["colors.painter.image"];if(d){c.image_data_url=ColorsUtilities.unsquidgeBase64String(d)}var e=parseInt(localStorage["colors.painter.drw.total-cmds"]);
var b=parseInt(localStorage["colors.painter.drw.num-cmds"]);c.drw_cmds=new Object();c.drw_cmds.num_cmds=b;c.drw_cmds.total_cmds=e;
if(e>0){var h=localStorage["colors.painter.drw.commands"];if(h!=null){var j=ColorsUtilities.unsquidgeBase64String(h);h=null;
var m=ColorsUtilities.decodeBase64Data(j);j=null;var a=new Array(e);ColorsUtilities.bytesIntoIntsArray(m,0,a,0,e);m=null}else{var a=new Array()
}c.drw_cmds.commands=a}var f=new ColorsDraw.DrwHeader();c.header=f;f.valid=true;switch(parseInt(g)){case 1:f.version=1199;
f.initialVersion=1199;f.SavedVersion=1199;f.aspect=parseInt(c.width)/parseInt(c.height);f.numCommands=b;break;case 2:var k=localStorage["colors.painter.drw.header"];
if(k!=null){var m=ColorsUtilities.decodeBase64Data(k);k=null;f.fillFromBuffer(m)}else{f.version=1199;f.initialVersion=1199;
f.SavedVersion=1199;f.aspect=parseInt(c.width)/parseInt(c.height);f.numCommands=b}break}return c};ColorsDraw.clearLocalStoreData=function(){if(!ColorsUtilities.supportsHtml5Storage){return
}localStorage.removeItem("colors.painter.version");localStorage.removeItem("colors.painter.fb-id");localStorage.removeItem("colors.painter.width");
localStorage.removeItem("colors.painter.height");localStorage.removeItem("colors.painter.image");localStorage.removeItem("colors.painter.orientation");
localStorage.removeItem("colors.painter.drw.num-cmds");localStorage.removeItem("colors.painter.drw.total-cmds");localStorage.removeItem("colors.painter.drw.commands");
localStorage.removeItem("colors.painter.drw.header");ColorsDraw.clearToolsStateFromLocalStorage("colors.painter.tools-state.")
};ColorsDraw.createPainterWithCanvasBacking=function(a,j,f,c,e,b){var h=null;var g=document.createElement("canvas");g.setAttribute("width",a);
g.setAttribute("height",j);if(!!g.getContext){var d=g.getContext("2d");var k=d.createImageData(a,j);ColorsUtilities.clearImageData(k);
d.putImageData(k,0,0);h=new ColorsDraw.Painter(k,f,c,e,b);h.mCanvasElement=g;h.mCanvasContext=d;h.mCanvasImageData=k}return h
};ColorsDraw.Timeline=function(e,x){var w=this;var m=10;var k=10;var n=e;var f=new Array();var g=new Array();var v=new Array();
var q=new Array();var h;if(x){h=x}else{h=4294967295}var b=(h>>0)&255;var a=(h>>8)&255;var r=(h>>16)&255;var t=(h>>24)&255;
for(var o=0;o<n;o++){var c=new ColorsDraw.Timeline.SavedDrawState();v.push(c)}var u=function(C){var B=C.mLayers;var z=B.mMaxLayerNumber;
if(z!=null){for(var A=0;A<=z;A++){if(g.length<k){g.push(B[A])}delete B[A]}}var D=C.mUsers;var y=D.mMaxUserNumber;for(var A=0;
A<=y;A++){if(A in D){if(f.length<m){f.push(D[A])}delete D[A]}}C.mCurrentUser=0;C.mMaxUsernumber=-1};var d=function(B,I,G,J){var A=J.getPerUserInfo();
u(B);B.mPosition.copyFrom(I);B.mUsers.mCurrentUser=A.mCurrentUser;B.mUsers.mMaxUserNumber=A.mMaxUserNumber;var y=A.mMaxUserNumber;
for(var H=0;H<=y;H++){if(H in A){var K=A[H];var z=f.pop();if(z==null){z=new Object();z.mToolsState=new ColorsDraw.ToolsState()
}z.mCurrentLayerNumber=K.mCurrentLayerNumber;z.mToolsState.copyFrom(K.mToolsState);B.mUsers[H]=z}}var D=B.mLayers;var E=G.mMaxLayerNumber;
D.mMaxLayerNumber=E;for(var H=0;H<=E;H++){if(H in G){var F=G[H];var C=F.mImageData;var L=g.pop();if(L==null){L=new Object();
L.data=new Array(C.width*C.height);L.width=C.width;L.height=C.height}ColorsUtilities.copyToPackedIntImage(L,C);D[H]=L}}};
var l=function(C){var D=null;var B=q.length;for(var A=0;A<B;A++){var z=q[A];var y=z.mPosition;if(C>=y.mNextCmdIndex){D=z}else{break
}}return D};w.findClosestNextCmd=function(z){var y=l(z);if(y==null){return -1}return y.mPosition.mNextCmdIndex};w.findClosestPosition=function(A,z){var y=l(A);
if(y==null){return false}z.copyFrom(y.mPosition);return true};w.fillOutClosestPosition=function(A,N,C,O,F){var D=O.getPerUserInfo();
var y=l(A);if(y==null){return false}N.copyFrom(y.mPosition);var B=y.mUsers;var J=B.mMaxUserNumber;var H=D.mMaxUserNumber;
var M=Math.max(J,H);for(var E=0;E<=M;E++){var I=null;var z=null;if(E in B){I=B[E]}if(E in D){z=D[E]}if(I!=null){if(z==null){O.addUser(E);
z=D[E]}z.mCurrentLayerNumber=I.mCurrentLayerNumber;z.mToolsState.copyFrom(I.mToolsState)}else{if(D!=null){delete D[E]}}}D.mMaxUserNumber=B.mMaxUserNumber;
D.mCurrentUser=B.mCurrentUser;var L=y.mLayers;var J=y.mLayers.mMaxLayerNumber;var H=C.mMaxLayerNumber;var M=Math.max(J,H);
for(var E=0;E<=M;E++){var G=null;var K=null;if(E in L){G=L[E]}if(E in C){K=C[E]}if(G!=null&&K!=null){F.copyImageToLayer(K,G)
}else{if(G!=null){K=F.makeLayerWithImage(G);C[E]=K}else{if(K!=null){K.freeLayer();delete C[E]}}}}C.mMaxLayerNumber=J;return true
};var p=function(D){var y=v.pop();if(y==null){var E=q.length;E-=D;if(E>0){var C=0;var G=q[0];var B=G.mPosition.mNextCmdIndex;
var z=B;y=G;for(var A=1;A<E;A++){G=q[A];var F=G.mPosition.mNextCmdIndex-B;if(F<z){z=F;C=A;y=G}B=G.mPosition.mNextCmdIndex
}q.splice(C,1);u(y)}}return y};var s=function(E){var y=v.pop();if(y==null){var F=q.length;if(F==1){y=q.pop();u(y)}else{if(F>1){var D=0;
var H=q[0];var I=q[1];y=H;var G=I.mPosition.mNextCmdIndex;for(var A=1;A<F-1;A++){var C=q[A+1];var z=C.mPosition.mNextCmdIndex-H.mPosition.mNextCmdIndex;
if(z<G){D=A;y=I;G=z}H=I;I=C}if(!E){var B=position.mNextCmdIndex-H.mPosition.mNextCmdIndex;if(B<G){D=F-1;y=q[F-1];G=B}}q.splice(D,1);
u(y)}}}return y};var j=function(F){var z=v.pop();if(z==null){var G=q.length;if(G==1){z=q.pop();u(z)}else{if(G>1){var D=0;
var H=Number.MAX_VALUE;var C=0;if(F){G-=1}for(var B=0;B<G;B++){var y=q[B];var E=y.mPosition.mNextCmdIndex;var A=E-C;C=E;if(A<H){D=B;
z=y;H=A}}q.splice(D,1);u(z)}}}return z};w.insertSavedState=function(E,D,y,B){var G=0;if(B){G=B}var z=p(G);if(z==null){return
}d(z,E,D,y);var H=q.length;var A=H;for(var C=0;C<H;C++){var I=q[C];var F=I.mPosition.mNextCmdIndex;if(E.mNextCmdIndex==F){u(I);
v.push(I);q.splice(C,1);A=C;break}else{if(E.mNextCmdIndex<F){A=C;break}}}q.splice(A,1,z)};w.addSavedState=function(y,A,D,C){var B=0;
if(C){B=C}w.removeStatesAtOrAfter(y.mNextCmdIndex);var z=p(B);if(z==null){return}d(z,y,A,D);q.push(z)};w.removeStatesAtOrAfter=function(D){var C=q.length;
var y=-1;for(var z=0;z<C;z++){var B=q[z];if(B.mPosition.mNextCmdIndex>=D){y=z;break}}if(y>=0){var A=C-y;for(var z=0;z<A;z++){var B=q.pop();
u(B);v.push(B)}}};w.getLastPosition=function(){var z=-1;var A=q.length;if(A>0){var y=q[A-1];z=y.mPosition.mNextCmdIndex}return z
};w.displaySavedStates=function(y){var z="";var C=q.length;for(var A=0;A<C;A++){var B=q[A];z+="<p>Position "+A+" cmd pos "+B.mPosition.mNextCmdIndex+"</p>"
}$(y).prepend(z)}};ColorsDraw.Timeline.SavedDrawState=function(){this.mLayers=new Object();this.mPosition=new ColorsDraw.DrwPosition();
this.mPosition.invalidate();this.mUsers=new Object();this.mUsers.mCurrentUser=0;this.mUsers.mMaxUserNumber=-1};ColorsDraw.BrushesTableMaker=function(e,h,k,d){var f=this;
var l=null;var j=null;var n=k;var a=d;var g=function(){if(l!=null&&j!=null){if(n){var o=new ColorsDraw.BrushTables(l,j);if(a){n.call(a,this,o,null)
}else{n(this,o,null)}}}};var c=function(o){if(n){if(a){n.call(a,this,null,o)}else{n(this,null,o)}}};var m=function(o){j=myBase64Decode(o);
g()};var b=function(s){var v=myBase64Decode(s);l=new Object();var u=0;var q=v[u+3]|(v[u+2]<<8)|(v[u+1]<<16)|(v[u+0]<<24);
u+=4;var o=v[u+3]|(v[u+2]<<8)|(v[u+1]<<16)|(v[u+0]<<24);u+=4;var t=q*o;l.width=q;l.height=o;var r=new Array(t);l.intensities=r;
for(var p=0;p<t;p++){r[p]=v[u+p]}g()};$.ajax({cache:true,url:h,success:m,error:function(p,o,q){c(o)},dataType:"text"});$.ajax({cache:true,url:e,success:b,error:function(p,o,q){c(o)
},dataType:"text"})};ColorsDraw.RenderState=function(t,q,h,m,j,a,d,c){var y=this;this.mUsers=new ColorsDraw.Users(t,q);this.mPosition=new ColorsDraw.DrwPosition();
this.mLastImagePosition=new ColorsDraw.DrwPosition();this.mEnvironment=new ColorsDraw.EnvSettings(t,q,h,m,j);this.mUseAlpha=a;
this.mLayerMaker=c;this.mOrientation=d;this.mPaintingTools=new ColorsDraw.ToolsState();var k=new Object();k.mMaxLayerNumber=-1;
this.mLayers=k;this.mDirtyRegion=new ColorsUtilities.Region();var g=false;var f=c;var s=m;var v=h;var n=j;this.partStrokeRenderingEnabled=function(){return g
};this.getWidth=function(){return this.mUsers.width};this.getHeight=function(){return this.mUsers.height};this.handleFlip_orientation=function(z){var B=true;
if(z){switch(this.mOrientation){case ColorsDraw.Orientation.Normal:case ColorsDraw.Orientation.UpsideDown:B=true;break;case ColorsDraw.Orientation.CounterClockwise:case ColorsDraw.Orientation.Clockwise:B=false;
break}}else{switch(this.mOrientation){case ColorsDraw.Orientation.Normal:case ColorsDraw.Orientation.UpsideDown:B=false;break;
case ColorsDraw.Orientation.CounterClockwise:case ColorsDraw.Orientation.Clockwise:B=true;break}}var A=this.handleFlip(B);
return A};this.handleFlip=function(A){var C;var F=A;if(F){C=ColorsDraw.DrwCommand.buildFlipCommand(true,false)}else{C=ColorsDraw.DrwCommand.buildFlipCommand(false,true)
}var E=this.mLayers;var B=E.mMaxLayerNumber;for(var z=0;z<=B;z++){if(z in E){var D=E[z];if(F){ColorsUtilities.flipCanvasHorizontally(D.mImageData)
}else{ColorsUtilities.flipCanvasVertically(D.mImageData)}D.updateImageData();if(g){if(F){ColorsUtilities.flipPackedHorizontally(D.mLastFullStrokeImage)
}else{ColorsUtilities.flipPackedVertically(D.mLastFullStrokeImage)}}}}return C};this.doPartStrokeRender=function(){var A=this;
if(!g){return null}A.mDirtyRegion.reset();var F=A.mUsers.getCurrentUserDrawState();var z=null;var B=A.mLayers[A.mUsers.getCurrentUserLayerNumber()];
var E=B.mLastFullStrokeImage;if(F.mPartRenderCount==0){}else{var D=F.finaliseDirtyRegion;if(D.isValid()){ColorsUtilities.copyFromPackedIntImage(B.mImageData,E,D)
}}var C=ColorsDraw.ColorsEngine.finalizeStroke(A.mUsers,B.mImageData,A.mUseAlpha);if(C){B.updateImageData(F.finaliseDirtyRegion);
z=A.mDirtyRegion;z.reset();z.mergeRegion(F.finaliseDirtyRegion);F.finaliseDirtyRegion.reset();F.finaliseDirtyRegion.mergeRegion(F.lastPointDirtyRegion)
}else{F.finaliseDirtyRegion.reset()}F.mPartRenderCount+=1;return z};var r=function(L){var H=y;var D=H.mUsers;var ab=H.mLayers;
var N=ColorsDraw.EventType.None;var ak=ColorsDraw.DrwCommand.getLayer(L);var R=D.getCurrentUserLayerNumber();if(ak>=0){var aa=ColorsDraw.DrwCommand.getLayerCmd(L);
switch(aa){case ColorsDraw.DrwCommand.LayerCmdType.SETLAYERCMD_SET:if(!(ak in ab)){var G=H.createLayer(ak)}if(ak!=R){ab[R].updateImageData()
}D.setCurrentUserLayerNumber(ak);break;case ColorsDraw.DrwCommand.LayerCmdType.SETLAYERCMD_NEWPOS:if(ak!=R){var C=ab[R];var ai;
delete ab[R];if(ak<R){ai=-1}else{ai=1}var O=R+ai;var I=R;for(;O!=ak+ai;O+=ai,I+=ai){if(O in ab){ab[I]=ab[O];delete ab[O]}}ab[ak]=C;
D.setCurrentUserLayerNumber(ak)}break;case ColorsDraw.DrwCommand.LayerCmdType.SETLAYERCMD_ERASE:if(!(ak in ab)){H.createLayer(ak)
}var P=ab[ak];ColorsUtilities.fillImageData(P.mImageData,0,0,0,0);P.updateImageData();if(g){ColorsUtilities.copyToPackedIntImage(P.mLastFullStrokeImage,P.mImageData)
}break;case ColorsDraw.DrwCommand.LayerCmdType.SETLAYERCMD_COPY:if(ak in ab){var W=(R<ak?R:ak);var M=(R<ak?ak:R);var Q=ab[W];
var F=Q.mImageData.data;var ah=ab[M];var ad=ah.mImageData.data;var J=ab[R];var T=J.mImageData.data;var A=ah.mImageData.width;
var B=ah.mImageData.height;var V=0;for(var X=0;X<B;X++){for(var Z=0;Z<A;Z++){var U=F[V+0];var ac=F[V+1];var ae=F[V+2];var af=F[V+3];
var ag=ad[V+0];var aj=ad[V+1];var al=ad[V+2];var z=ad[V+3];var Y=255-z;z=(z+(Y*af)/255)|0;ag=(ag+(Y*U)/255)|0;aj=(aj+(Y*ac)/255)|0;
al=(al+(Y*ae)/255)|0;T[V+0]=ag;T[V+1]=aj;T[V+2]=al;T[V+3]=z;V+=4}}J.updateImageData();if(g){ColorsUtilities.copyToPackedIntImage(J.mLastFullStrokeImage,J.mImageData)
}}break}N=ColorsDraw.EventType.LayerChange}else{var S=g;var E=ab[R];if(S){y.doPartStrokeRender(H)}else{ColorsDraw.ColorsEngine.finalizeStroke(D,E.mImageData,H.mUseAlpha)
}var K=D.getCurrentUserDrawState();E.updateImageData(K.finaliseDirtyRegion);if(S){ColorsUtilities.copyToPackedIntImage(E.mLastFullStrokeImage,E.mImageData,K.entireStrokeDirtyRegion)
}D.zeroCurrentUserOpacities(K.entireStrokeDirtyRegion);K.resetForNewStroke();if(!y.allCachedStatesSet){}N=ColorsDraw.EventType.Stroke
}return N};var l=function(F){var K=y;var B=K.mUsers;var C=ColorsDraw.EventType.None;var I=ColorsDraw.DrwCommand.getFlipX(F);
var H=ColorsDraw.DrwCommand.getFlipY(F);var A=ColorsDraw.DrwCommand.getUser(F);if(I||H){C=ColorsDraw.EventType.Flip;K.handleFlip(I);
if(!y.allCachedStatesSet){}}else{if(A>=0){B.setCurrentUser(A);C=ColorsDraw.EventType.UserChange}else{var z=(F>>2)&16777215;
var D=(z>>16)&255;var E=(z>>8)&255;var J=(z>>0)&255;var G=B.getCurrentUserToolsState();G.red=D;G.green=E;G.blue=J}}return C
};this.runCommand=function(B){var Q=y;var N=Q.mEnvironment;var M=Q.mUsers;var F=Q.mLayers;var J=ColorsDraw.EventType.None;
var C=ColorsDraw.DrwCommand.getType(B);switch(C){case ColorsDraw.DrwCommand.Types.DRAW_CMD_TYPE:var I=(B>>10)&2047;var G=(B>>21)&2047;
var K=ColorsDraw.convertX(I,N);var z=ColorsDraw.convertY(G,N);var H=(B>>2)&255;ColorsDraw.ColorsEngine.processStrokePart(K,z,H/255,true,M,N);
J=ColorsDraw.EventType.PartStroke;break;case ColorsDraw.DrwCommand.Types.DRAW_END_CMD_TYPE:J=r(B);break;case ColorsDraw.DrwCommand.Types.COLOUR_CHANGE_CMD_TYPE:J=l(B);
break;case ColorsDraw.DrwCommand.Types.SIZE_CHANGE_CMD_TYPE:var O=(B>>2)&65535;var A=(B>>24)&255;var L=(B>>21)&7;var D=(B>>18)&7;
var E;E=O/(1<<15)*N.brushMultiplier;if(E<N.minBrushSize){E=N.minBrushSize}var P=M.getCurrentUserToolsState();P.opacity=ColorsDraw.convertOpacity(A);
P.brushSize=E;P.brushType=L;P.brushControl=D;break}if(false){if(M.getPerUserInfo().mCurrentUser==0){if(C!=ColorsDraw.DrwCommand.Types.DRAW_CMD_TYPE){$("#debug-output").append("<p>event: "+J+" command type: "+C+"</p>")
}}}if(false){if(J==ColorsDraw.EventType.UserChange){if(M.getCurrentUserDrawState.penDown){$("#debug-output").append("<p>PEN DOWN: User change event: "+J+" to user "+ColorsDraw.DrwCommand.getUser(B)+"</p>")
}else{$("#debug-output").append("<p>PEN UP: User change event: "+J+" to user "+ColorsDraw.DrwCommand.getUser(B)+"</p>")}}if(J==ColorsDraw.EventType.Stroke){$("#debug-output").append("<p>End of stroke</p>")
}}return J};this.runCommandWithPositionUpdate=function(A){var z=this.mPosition;var B=y.runCommand(A);z.mNextCmdIndex+=1;switch(B){case ColorsDraw.EventType.Stroke:z.mNumStrokes+=1;
case ColorsDraw.EventType.Flip:case ColorsDraw.EventType.LayerChange:z.mNumEvents+=1;break}return B};this.enablePartStrokeRendering=function(){if(g){return
}g=true;var F=this.mLayers;var A=F.mMaxLayerNumber;var D=this.mUsers.width;var z=this.mUsers.height;for(var C=0;C<=A;C++){if(C in F){var B=F[C];
var E=new Object();E.width=D;E.height=z;E.data=new Array(D*z);ColorsUtilities.copyToPackedIntImage(E,B.mImageData);B.mLastFullStrokeImage=E
}}};this.updateLastStrokeBuffer=function(A){if(!g){return}var B=this.mLayers;if(i in B){var z=B[i];if(!("mLastFullStrokeImage" in z)){}ColorsUtilities.copyToPackedIntImage(z.mLastFullStrokeImage,z.mImageData)
}};this.updateLastStrokeBuffers=function(){if(g){var C=this.mLayers;var z=C.mMaxLayerNumber;for(var B=0;B<=z;B++){if(B in C){var A=C[B];
ColorsUtilities.copyToPackedIntImage(A.mLastFullStrokeImage,A.mImageData)}}}};var u=function(){var B=y.mUsers.width;var z=y.mUsers.height;
var A=y.mLayerMaker.createLayer(B,z,y.mUseAlpha);if(g){var C=new Object();C.width=B;C.height=z;C.data=new Array(B*z);ColorsUtilities.copyToPackedIntImage(C,A.mImageData);
A.mLastFullStrokeImage=C}return A};this.createLayer=function(A){var z=u();var B=this.mLayers;B[A]=z;if(A>B.mMaxLayerNumber){B.mMaxLayerNumber=A
}return z};this.copyImageToLayer=function(A,z){ColorsUtilities.copyFromPackedIntImage(A.mImageData,z);A.updateImageData();
if(g){ColorsUtilities.copyToPackedIntImage(A.mLastFullStrokeImage,A.mImageData)}};this.makeLayerWithImage=function(A){var z=u();
y.copyImageToLayer(z,A);return z};this.copyFrom=function(C){this.mUsers.copyFrom(C.mUsers);this.mPosition.copyFrom(C.mPosition);
var E=this.mLayers;var z=C.mLayers;var D=z.mMaxLayerNumber;var A=E.mMaxLayerNumber;E.mMaxLayerNumber=D;for(var B=D+1;B<=A;
B++){if(B in E){delete E[B]}}for(var B=0;B<=D;B++){if(B in z){if(!(B in E)){E[B]=f.createLayer(this.mUsers.width,this.mUsers.height,this.mUseAlpha)
}ColorsUtilities.copyImageData(E[B].mImageData,z[B].mImageData);E[B].updateImageData()}else{if(B in E){delete E[B]}}}this.mDirtyRegion.copyFrom(C.mDirtyRegion)
};this.createBlankSimilar=function(z){var A=new ColorsDraw.RenderState(this.mUsers.width,this.mUsers.height,v,s,n,this.mUseAlpha,this.mOrientation,z);
return A};this.createCopy=function(z){var A=y.createBlankSimilar(z);A.copyFrom(this);return A};this.zeroState=function(){var A=this.createBlankSimilar(new ColorsDraw.LayerMaker(ColorsDraw.ArrayBackedLayer));
A.createLayer(0);A.mUsers.getPerUserInfo()[0].mNotSaved=true;var z=A.mPosition;z.mNextCmdIndex=0;z.mNumEvents=0;z.mNumStrokes=0;
var B=g;g=false;this.copyFrom(A);if(B){this.enablePartStrokeRendering()}};var b=false;var x=0.1;var w=0.1;var e=0.1;var o=function(z){switch(y.mOrientation){case ColorsDraw.Orientation.UpsideDown:break;
case ColorsDraw.Orientation.CounterClockwise:break;case ColorsDraw.Orientation.Clockwise:break}return z};var p=function(z){switch(y.mOrientation){case ColorsDraw.Orientation.UpsideDown:break;
case ColorsDraw.Orientation.CounterClockwise:break;case ColorsDraw.Orientation.Clockwise:break}return z};this.startStroke=function(H,F,B,A){b=false;
var I=this.mPaintingTools;var G=this.mPosition;var D=this.mEnvironment;var z=false;var E=this.mUsers.getCurrentUserToolsState();
if(I.isColorDifferent(E)||E.mNotSaved){if(A){var C=ColorsDraw.DrwCommand.buildColourCommand(I.red,I.green,I.blue);if(A.addCommand(C)){G.mNextCmdIndex+=1
}}z=true}if(I.isBrushDifferent(E)||E.mNotSaved){if(A){var C=ColorsDraw.DrwCommand.buildSizeChangeCommand(I.brushSize,I.brushControl,I.brushType,(I.opacity*255)|0,D);
if(A.addCommand(C)){G.mNextCmdIndex+=1}}z=true}if(z){E.mNotSaved=false;E.copyFrom(I)}H=ColorsDraw.DrwCommand.twiddleXCanvasPoint(H,D);
F=ColorsDraw.DrwCommand.twiddleYCanvasPoint(F,D);ColorsDraw.ColorsEngine.processStrokePart(H,F,B,false,this.mUsers,D);if(A){var C=ColorsDraw.DrwCommand.buildDrawCommandWithCanvasValues(H,F,B,D);
if(A.addCommand(C)){G.mNextCmdIndex+=1}}};this.continueStroke=function(D,B,G,E,C){if(!C){C=false}var A=this.mPosition;var z=this.mEnvironment;
D=ColorsDraw.DrwCommand.twiddleXCanvasPoint(D,z);B=ColorsDraw.DrwCommand.twiddleYCanvasPoint(B,z);if(ColorsDraw.ColorsEngine.processStrokePart(D,B,G,C,this.mUsers,z)){if(E){var F=ColorsDraw.DrwCommand.buildDrawCommandWithCanvasValues(D,B,G,z);
if(E.addCommand(F)){A.mNextCmdIndex+=1}}b=false}else{x=D;w=B;e=G;b=true}};this.finishStroke=function(B){var A=this.mPosition;
var z=this.mEnvironment;if(b){this.continueStroke(x,w,e,B,true)}if(B){var C=ColorsDraw.DrwCommand.buildDrawEndCommand();B.addCommand(C);
A.mNextCmdIndex+=1;A.mNumEvents+=1;A.mNumStrokes+=1}}};ColorsDraw.ProxyDrwDownloader=function(f,o){var l=this;var b=f;var h=o;
var d=null;var e=null;var a=null;this.state=ColorsDraw.DrwDownloader.ReadyState.NotStarted;var c=-1;var n=function(r){var q=l.state;
l.state=r;if(q!=r){if(e!=null){if(this.callbackContext!=null){e.call(d,l,q)}else{e(l,q)}}}};var g=function(){var q=b.mDownloader;
l.downloadCommandIndex=q.downloadCommandIndex};var p=function(){if(c>=0){window.clearInterval(c);c=-1}};var k=function(){p();
c=window.setInterval(g,1000/2)};var m=function(q){if(a!=null){if(this.callbackContext!=null){a.call(d,l)}else{a(l)}}};var j=function(t,r,q){var u=false;
var s;if(q){s=q}else{s=t.state}switch(s){case ColorsDraw.DrwDownloader.ReadyState.NotStarted:break;case ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize:n(ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize);
break;case ColorsDraw.DrwDownloader.ReadyState.WaitingHeader:n(ColorsDraw.DrwDownloader.ReadyState.WaitingHeader);break;case ColorsDraw.DrwDownloader.ReadyState.ReadingBody:l.numberCommands=t.numberCommands;
l.header=t.header;l.commands=t.commands;l.downloadCommandIndex=t.downloadCommandIndex;n(ColorsDraw.DrwDownloader.ReadyState.ReadingBody);
k();break;case ColorsDraw.DrwDownloader.ReadyState.DownloadComplete:l.downloadCommandIndex=t.downloadCommandIndex;n(ColorsDraw.DrwDownloader.ReadyState.DownloadComplete);
u=true;break;case ColorsDraw.DrwDownloader.ReadyState.Stopped:u=true;break;case ColorsDraw.DrwDownloader.ReadyState.Errored:l.errorMessage=b.mDownloader.errorMessage;
n(ColorsDraw.DrwDownloader.ReadyState.Errored);u=true;break}if(u){b.unregisterListener(l);p()}};this.startDownload=function(q,u,s){d=s;
e=q;a=u;this.numberCommands=0;this.downloadCommandIndex=0;var t=b.mDownloader.state;if(h){$(h).prepend("<p>Proxy started and downloader in state "+b.mDownloader.state+"</p>")
}var r=true;switch(t){case ColorsDraw.DrwDownloader.ReadyState.NotStarted:r=false;break;case ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize:j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.NotStarted,ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize);
break;case ColorsDraw.DrwDownloader.ReadyState.WaitingHeader:j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.NotStarted,ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize);
j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize,ColorsDraw.DrwDownloader.ReadyState.WaitingHeader);break;
case ColorsDraw.DrwDownloader.ReadyState.ReadingBody:j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.NotStarted,ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize);
j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize,ColorsDraw.DrwDownloader.ReadyState.WaitingHeader);j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.WaitingHeader,ColorsDraw.DrwDownloader.ReadyState.ReadingBody);
break;case ColorsDraw.DrwDownloader.ReadyState.DownloadComplete:j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.NotStarted,ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize);
j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize,ColorsDraw.DrwDownloader.ReadyState.WaitingHeader);j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.WaitingHeader,ColorsDraw.DrwDownloader.ReadyState.ReadingBody);
j(b.mDownloader,ColorsDraw.DrwDownloader.ReadyState.ReadingBody,ColorsDraw.DrwDownloader.ReadyState.DownloadComplete);r=false;
break;case ColorsDraw.DrwDownloader.ReadyState.Stopped:r=false;break;case ColorsDraw.DrwDownloader.ReadyState.Errored:this.errorMessage=b.mDownloader.errorMessage;
n(ColorsDraw.DrwDownloader.ReadyState.Errored);r=false;break}if(r){b.registerListener(j,m,l)}};this.stop=function(){n(ColorsDraw.DrwDownloader.ReadyState.Stopped);
b.unregisterListener(l);p()};this.getCommandsInfo=function(){return b.mDownloader.getCommandsInfo()};this.getHeader=function(){return b.mDownloader.getHeader()
}};ColorsDraw.DrwDownloaderWrapper=function(d,g){var e=this;var f=g;var c=new Array();this.mDownloader=new ColorsDraw.DrwDownloader(d,f);
if(ColorsUtilities.disableCachingOfDrw()){this.mDownloader.cacheDrwFile=false}this.mUrl=new String(d);this.mUpdateListeners=new Array();
var a=function(n,h){if(f){$(f).prepend("<p>Wrapper seen state change to "+n.state+"</p>")}var k=e.mUpdateListeners;var m=k.length;
for(var j=0;j<m;j++){var l=k[j];if(l){l.stateChangeCallback.call(l.callbackContext,n,h)}}};var b=function(m){var j=e.mUpdateListeners;
var l=j.length;for(var h=0;h<l;h++){var k=j[h];k.mBlockCallback.call(k.callbackContext,m)}};this.registerListener=function(l,j,h){var k=new Object();
k.stateChangeCallback=l;k.mBlockCallback=j;k.callbackContext=h;this.mUpdateListeners.push(k)};this.unregisterListener=function(j){var l=e.mUpdateListeners;
var n=l.length;var k=-1;for(var h=0;h<n;h++){var m=l[h];if(j==m.callbackContext){k=h;break}}if(k>=0){l.splice(k,1)}};this.getProxy=function(){return new ColorsDraw.ProxyDrwDownloader(this,f)
};this.mDownloader.startDownload(a,b)};ColorsDraw.DrwCache=function(b,g){var d=this;var f=b;var a=new Array();var e=null;
if(g){e=g}var c=function(j){var h=new Object();h.mDownloader=j;return h};d.getDownloader=function(h){var o=a.length;var l=-1;
var n=null;for(var k=0;k<o;k++){var m=a[k];if(h==m.mUrl){n=m;l=k;break}}if(n!=null){a.splice(l,1);if(e){$(e).prepend("<p>Already have downloader for '"+h+"'</p>")
}}else{n=new ColorsDraw.DrwDownloaderWrapper(h,e);if(e){$(e).prepend("<p>Do not have downloader for '"+h+"'</p>")}}a.push(n);
if(a.length>f){a.shift()}var j=n.getProxy();return j};d.removeFromCache=function(h){var l=a.length;for(var j=0;j<l;j++){var k=a[j];
if(h==k.mUrl){a.splice(j,1);break}}};if(e){$(e).prepend("<p>Hello, I cache downloaded .drw files</p>")}};var ColorPicker=new Object();
ColorPicker.picker=function(B,E,D,o,d){var m=this;this.color=new Object();this.color.hue=0;this.color.chroma=1;this.color.lightness=0.5;
this.rgb_color=null;this.width=E;this.height=D;this.inner_radius=o;this.marker_size=d;var J={NOTHING:0,HUE_WHEEL:1,CHROMA_LIGHTNESS_TRIANGLE:2};
var F=J.NOTHING;B.html('<div class="color-picker-surround" id="color-picker-surround" style="position:relative;"></div>');
var s=$(".color-picker-surround",B);var H=null;var I=null;this.setCallback=function(y,x){H=y;I=x};this.clearImageData=function(M){var N=M.width*M.height;
N*=4;var y=M.data;for(var x=0;x<N;x+=4){y[x+0]=255;y[x+1]=255;y[x+2]=255;y[x+3]=0}};this.getAngle=function(M,Q){var P=Math.abs(M);
var O=Math.abs(Q);if(M==0&&Q==0){return 0}if(P>O){var N=Math.atan(O/P)*((1/Math.PI)*0.5);if(M>0){if(Q<0){return 1-N}return N
}else{if(Q<0){return N+0.5}return -N+0.5}}else{var N=Math.atan(P/O)*((1/Math.PI)*0.5);if(Q>0){if(M<0){return N+0.25}return -N+0.25
}else{if(M<0){return -N+0.75}return N+0.75}}};this.getLength=function(M,N){return Math.sqrt(M*M+N*N)};this.createFromHue=function(O){var M,y,x;
if(O>=0.8333333333333334){M=1;y=0;x=(1-O)/0.16666666666666}else{if(O>=0.6666666666666666){M=1-(0.8333333333333334-O)/0.16666666666666;
y=0;x=1}else{if(O>=0.5){M=0;y=(0.6666666666666666-O)/0.16666666666666;x=1}else{if(O>=0.3333333333333333){M=0;y=1;x=1-(0.5-O)/0.16666666666666
}else{if(O>=0.16666666666666666){M=(0.3333333333333333-O)/0.16666666666666;y=1;x=0}else{M=1;y=1-(0.16666666666666666-O)/0.16666666666666;
x=0}}}}}var N=new Object();N.red=M;N.green=y;N.blue=x;return N};this.createFromHCL=function(Q,R,U){var y=Q*6;var S=R*(1-Math.abs((y%2)-1));
var N,O,T;if(y<1){N=R;O=S;T=0}else{if(y<2){N=S;O=R;T=0}else{if(y<3){N=0;O=R;T=S}else{if(y<4){N=0;O=S;T=R}else{if(y<5){N=S;
O=0;T=R}else{N=R;O=0;T=S}}}}}var M=U-0.5*R;N+=M;O+=M;T+=M;var P=new Object();P.red=N;P.green=O;P.blue=T;return P};this.drawTriangle=function(N,aa,X,Q){var T=aa/2;
var S=X/2;var P=0;var O=X-1;var ae=0|(X/2);var Z=this.createFromHue(Q);var M=N.createImageData(aa,X);var W=M.data;this.clearImageData(M);
for(var U=0;U<X;U++){for(var V=0;V<aa;V++){var ab=V/(aa-1);var ad=1-(U/(X-1));var R;if(ab==0){R=0}else{R=ab/(1-Math.abs(2*ad-1))
}if(R>1){break}var ac=this.createFromHCL(Q,ab,ad);var Y=U*aa*4;Y+=V*4;W[Y+0]=0|(ac.red*255);W[Y+1]=0|(ac.green*255);W[Y+2]=0|(ac.blue*255);
W[Y+3]=255}}N.putImageData(M,0,0);N.strokeStyle="rgb(255,255,255)";N.lineWidth=1;N.beginPath();N.moveTo(0,0);N.lineTo(aa,X/2);
N.lineTo(0,X);N.closePath();N.stroke()};this.HCLfromRGB=function(M,N,R){var y=Math.max(M,Math.max(N,R));var x=Math.min(M,Math.min(N,R));
var P=y-x;var O=0;var S=0.5*(y+x);if(P>0){if(y==M){O=(N-R)/P*(1/6);if(O<0){O=1+O}}else{if(y==N){O=(R-M)/P*(1/6)+(1/3)}else{O=(M-N)/P*(1/6)+(2/3)
}}}var Q=new Object();Q.hue=O;Q.lightness=S;Q.chroma=P;return Q};this.getColor=function(){var N=0,M=0,x=0;if(this.rgb_color!=null){N=this.rgb_color.red;
M=this.rgb_color.green;x=this.rgb_color.blue}else{var O=this.createFromHCL(this.color.hue,this.color.chroma,this.color.lightness);
N=O.red;M=O.green;x=O.blue}var y=new Object();y.red=0|(N*255);y.green=0|(M*255);y.blue=0|(x*255);return y};this.setForColor=function(N,M,x){this.rgb_color=new Object();
this.rgb_color.red=N/255;this.rgb_color.green=M/255;this.rgb_color.blue=x/255;var y=this.HCLfromRGB(N/255,M/255,x/255);this.color=y;
this.setHueMarker();this.setChromaLightnessTriangle()};this.setHueMarker=function(){var N=this.color.hue*Math.PI*2;var P=this.inner_radius+((this.wheel_size/2-this.inner_radius)/2);
var y=$("#color-picker-hue-maker-img",B);var S=this.wheel_size/2;var R=this.wheel_size/2;var M=P*Math.sin(N);var x=P*Math.cos(N);
var Q=R-x-this.marker_size/2;Q=0|Q;var O=S-M-this.marker_size/2;y.css("top",Q+"px");y.css("left",O+"px")};this.setChromaLightnessTriangleMarker=function(){var y=$("#color-picker-tri-maker-img",B);
var M=0|(this.triangle_y+((1-this.color.lightness)*(this.triangle_height-1))-this.marker_size/2);var x=0|(this.triangle_x+(this.color.chroma*(this.triangle_width-1))-this.marker_size/2);
y.css("top",M+"px");y.css("left",x+"px")};this.setChromaLightnessTriangle=function(){this.drawTriangle(this.tri_context,this.triangle_width,this.triangle_height,this.color.hue);
this.setChromaLightnessTriangleMarker()};this.computeSaturationFromChromaLightness=function(y){var x;if(y.chroma==0){x=0}else{x=y.chroma/(1-Math.abs(2*y.lightness-1))
}return x};this.getChromaAndLightnessUnbounded=function(N,x){var Q=this.triangle_width;var M=this.triangle_height;var y=0;
var P=0;y=N/(Q-1);if(y<0){y=0}if(y>1){y=1}P=x/(M-1);if(P<0){P=0}if(P>1){P=1}P=1-P;var O=new Object();O.chroma=y;O.lightness=P;
return O};this.getChromaAndLightness=function(y,x){var N=this.getChromaAndLightnessUnbounded(y,x);var M=this.computeSaturationFromChromaLightness(N);
if(M>1){if(N.chroma>1){N.lightness=0.5;N.chroma=1}else{if(N.lightness>0.5){N.lightness=(2-N.chroma)/2}else{N.lightness=N.chroma/2
}}}return N};this.determineControlForEvent=function(y){var P=J.NOTHING;var U=$("#color-wheel-img",B);var O=U.offset();var S=(y.pageX-O.left)|0;
var Q=(y.pageY-O.top)|0;var Y=this.wheel_size/2;var X=this.wheel_size/2;var x=X-Q;var aa=Y-S;var M=this.getLength(x,aa);var W=this.triangle_x;
var V=this.triangle_y;var Z=this.triangle_width;var T=this.triangle_height;if(S>=W&&S<(W+Z)&&Q>=V&&Q<(V+T)){var N=this.getChromaAndLightnessUnbounded(S-W,Q-V);
var R=this.computeSaturationFromChromaLightness(N);if(R<=1){P=J.CHROMA_LIGHTNESS_TRIANGLE}}if(P==J.NOTHING){if(M>=this.inner_radius&&M<=this.wheel_size/2){P=J.HUE_WHEEL
}}return P};this.mousedown=function(x){if(x.button==2){return true}if(!document.dragging){$(document).bind("mousemove",m.mousemove).bind("mouseup",m.mouseup);
document.dragging=true}F=m.determineControlForEvent(x);m.mousemove(x);x.stopPropagation();return false};this.mousemove=function(y){if(y.button==2){return true
}var M=false;switch(F){case J.NOTHING:break;case J.HUE_WHEEL:var T=$("#color-wheel-img",B);var O=T.offset();var S=(y.pageX-O.left)|0;
var P=(y.pageY-O.top)|0;var V=m.wheel_size/2;var U=m.wheel_size/2;var x=U-P;var W=V-S;var R=m.getAngle(x,W);m.color.hue=R;
m.setHueMarker();m.setChromaLightnessTriangle();M=true;break;case J.CHROMA_LIGHTNESS_TRIANGLE:var Q=$("#color-picker-triangle-canvas",B);
var O=Q.offset();var S=(y.pageX-O.left)|0;var P=(y.pageY-O.top)|0;var N=m.getChromaAndLightness(S,P);m.color.chroma=N.chroma;
m.color.lightness=N.lightness;m.setChromaLightnessTriangleMarker();M=true;break}if(M){this.rgb_color=null;if(H!=null){if(I!=null){H.call(I,m.getColor())
}else{H(m.getColor())}}}y.stopPropagation();return false};this.mouseup=function(x){if(x.button==2){return true}$(document).unbind("mousemove",m.mousemove);
$(document).unbind("mouseup",m.mouseup);document.dragging=false;F=J.NOTHING;x.stopPropagation();return false};var j;if(E>D){j=D
}else{j=E}this.wheel_size=j;s.empty();s.append('<canvas id="color-picker-canvas" width="'+j+'" height="'+j+'" style="display:none"></canvas>');
var L=$("#color-picker-canvas",B);var h=L.get(0);var f=h.getContext("2d");var e=f.createImageData(j,j);var C=e.data;this.clearImageData(e);
var v=j/2;var t=j/2;for(var z=0;z<j;z++){for(var A=0;A<j;A++){var c=t-z;var b=v-A;var l=this.getAngle(c,b);var G=this.getLength(c,b);
var K=this.createFromHue(l);var a=z*j*4;a+=A*4;if(G>o&&G<(j-2)/2){C[a+0]=0|(K.red*255);C[a+1]=0|(K.green*255);C[a+2]=0|(K.blue*255);
C[a+3]=255}}}f.putImageData(e,0,0);f.strokeStyle="rgb(255,255,255)";f.lineWidth=2;f.beginPath();f.arc(j/2,j/2,(j-2)/2,0,Math.PI*2,true);
f.stroke();f.beginPath();f.arc(j/2,j/2,o,0,Math.PI*2,true);f.stroke();this.color_wheel_img_data=h.toDataURL("image/png");
s.empty();s.append('<canvas id="marker-maker-canvas" width="'+this.marker_size+'" height="'+this.marker_size+'" style="display:none"></canvas>');
var n=$("#marker-maker-canvas",B);var n=n.get(0);var q=n.getContext("2d");q.fillStyle="rgba(0,0,0,0)";q.fillRect(0,0,this.marker_size,this.marker_size);
q.strokeStyle="rgba(0,0,0,20)";q.lineWidth=2.5;q.beginPath();q.arc(this.marker_size/2,this.marker_size/2,(this.marker_size-3)/2,0,Math.PI*2,true);
q.stroke();q.strokeStyle="rgba(255,255,255,255)";q.lineWidth=1.25;q.beginPath();q.arc(this.marker_size/2,this.marker_size/2,(this.marker_size-3)/2,0,Math.PI*2,true);
q.stroke();this.marker_img_data=n.toDataURL("image/png");s.empty();s.append('<img src="'+this.color_wheel_img_data+'" alt="color wheel" id="color-wheel-img" />');
var u=0|(Math.sin(Math.PI/3)*o*2);var r=0|(Math.sin(Math.PI/3)*u);var k=0|(-r+j/2+o);var g=0|j/2-u/2;this.triangle_x=k;this.triangle_y=g;
this.triangle_width=r;this.triangle_height=u;s.append('<canvas id="color-picker-triangle-canvas" width="'+r+'" height="'+u+'" style="position:absolute; left:'+k+"px; top:"+g+'px;"></canvas>');
var p=$("#color-picker-triangle-canvas",B).get(0);var w=p.getContext("2d");this.drawTriangle(w,r,u,this.color.hue);this.tri_context=w;
s.append('<img src="'+this.marker_img_data+'" alt="hue marker" id="color-picker-hue-maker-img" style="position:absolute; left:80px; top:100px;" />');
s.append('<img src="'+this.marker_img_data+'" alt="tri marker" id="color-picker-tri-maker-img" style="position:absolute; left:100px; top:100px;" />');
$("*",B).mousedown(this.mousedown)};var CycleButton=new Object();CycleButton.button=function(u,r,p,A,z,j,h){var w=this;var q=0;
var B=A;var c=z;var k=$("#"+u);var f="button-img-id";var b="cycle-button-up-surround";var n="cycle-button-down-surround";
var y="cycle-button-container";var s=r;var g=p;var a=j;var e=h;var d=true;var l=new Array(B.length);for(var t=0;t<l.length;
t++){var o=new Image();o.src=B[t];l=o}var x=new Array(c.length);for(var t=0;t<x.length;t++){var o=new Image();o.src=c[t];
x=o}var m=null;var v=null;$(k).html('<div class="'+b+'" style="width:'+s+"px; height:"+g+'px;"><img id="'+f+'" src="'+B[0]+'" alt="" width="'+s+'px" height="'+g+'" /></div>');
this.setCallback=function(D,C){m=D;v=C};this.changeButtonImages=function(C,E,D){B=C;c=E;if(D){q=D}this.setupButtonImage(false)
};this.getSelected=function(){return q};this.setSelected=function(C){q=C;this.setupButtonImage(false)};this.setupButtonImage=function(C){var G;
var D;var F;if(C){G=n;D=b;F=c[q]}else{G=b;D=n;F=B[q]}var E=$("."+D,k);if(E.length>0){E.toggleClass(D+" "+G)}$("#"+f,k).attr("src",F)
};this.mousedown=function(C){if(C.button==2){return true}if(!document.dragging){$(document).bind("mouseup",w.mouseup);var D=$("#"+f,k);
D.bind("mouseover",w.mouseover);D.bind("mouseout",w.mouseout);document.dragging=true;d=true;w.setupButtonImage(true);C.stopPropagation()
}return false};this.mousemove=function(C){if(C.button==2){return true}C.stopPropagation();return false};this.mouseup=function(C){if(C.button==2){return true
}$(document).unbind("mousemove",w.mousemove);$(document).unbind("mouseup",w.mouseup);var D=$("#"+f,k);D.unbind("mouseover",w.mouseover);
D.unbind("mouseout",w.mouseout);document.dragging=false;if(d){q+=1;if(q>=B.length){q=0}w.setupButtonImage(false);if(m!=null){if(v!=null){m.call(v,w,q)
}else{m(w,q)}}}C.stopPropagation()};this.mouseover=function(){if(document.dragging){if(!d){d=true;w.setupButtonImage(true)
}}};this.mouseout=function(){if(document.dragging){if(d){d=false;w.setupButtonImage(false)}}};$("*",k).mousedown(this.mousedown);
$("*",k).css("cursor","default")};var ColorWidget=new Object();ColorWidget.TwoColorWidget=function(f,b,o,p,d){var a=$("#"+f);
var k="color-widget-background";var e="color-widget-top";var g="color-widget-bottom";a.html('<div class="two-color-widget"><div class="'+k+'" style="position:relative;"><div class="'+e+'"></div><div class="'+g+'"></div></div></div>');
var l=$("."+k,a);var j=$("."+e,a);var n=$("."+g,a);$(".two-color-widget",a).css("position","relative");var h={"background-color":"#ffffff",width:b+"px",height:o+"px","-moz-border-radius":p+"px","-webkit-border-radius":p+"px","-khtml-border-radius":p+"px","border-radius":p+"px","border-style":"solid","border-width":"thin","border-color":"#000000"};
l.css(h);var m=2;var c=2;h={"background-color":"#007000",position:"absolute",left:c+"px",top:m+"px",width:(b-2*c)+"px",height:(o/2-m)+"px","-moz-border-radius-topright":d+"px","-webkit-border-top-right-radius":d+"px","-khtml-border-top-right-radius":d+"px","border-top-right-radius":d+"px","-moz-border-radius-topleft":d+"px","-webkit-border-top-left-radius":d+"px","-khtml-border-top-left-radius":d+"px","border-top-left-radius":d+"px"};
j.css(h);h={"background-color":"#007060",position:"absolute",left:c+"px",top:(o/2)+"px",width:(b-2*c)+"px",height:(o/2-m)+"px","-moz-border-radius-bottomright":d+"px","-webkit-border-bottom-right-radius":d+"px","-khtml-border-bottom-right-radius":d+"px","border-bottom-right-radius":d+"px","-moz-border-radius-bottomleft":d+"px","-webkit-border-bottom-left-radius":d+"px","-khtml-border-bottom-left-radius":d+"px","border-bottom-left-radius":d+"px"};
n.css(h);h=null;this.setTopColor=function(s,r,q){j.css("background-color","rgb("+s+","+r+","+q+")")};this.setBottomColor=function(s,r,q){n.css("background-color","rgb("+s+","+r+","+q+")")
}};ColorsDraw.PaintControlsTypes={COLOUR_CHANGE:0,SIZE_CHANGE:1,OPACITY_CHANGE:2,BRUSH_CONTROL_CHANGE:3,BRUSH_TYPE_CHANGE:4};
ColorsDraw.PaintControls=function(t,r,o){var x=this;var g=new ColorsDraw.ToolsState();var s=1;var e=document.createElement("div");
$(e).attr("id","paint-controls3");$(e).attr("class","paint-controls-surround");$(e).attr("style","position:absolute; display:none;");
$(e).attr("oncontextmenu","return false;");$(e).html('<canvas class="brush-preview-canvas" id="brush-preview-canvas"></canvas><div class="color-widget" id="color-widget"></div><div class="color-picker" id="color-picker"></div><div class="sliders-surround" id="sliders-surround"><div class="size-slider" id="size-slider"></div><div class="opacity-slider" id="opacity-slider"></div><img class="size-slider-label" id="size-slider-label" src="'+t+'size-label.png" /><img class="opacity-slider-label" id="opacity-slider-label" src="'+t+'opacity-label.png" /></div>');
$(".sliders-surround",e).mousedown(function(B){B.stopPropagation()});var d=$(".paint-controls-surround",e);var f=new ColorPicker.picker($("#color-picker",e),201,201,80,19);
var j=$(".brush-preview-canvas",e);var A=null;var m=j.width();var w=j.height();var z=null;var c;var q=r;var h=function(B){};
var u=function(){A.putImageData(c,0,0);if(g!=null){var B=g.brushSize/2*s;if(B<1){B=1}A.beginPath();A.arc(m/2,w/2,B,0,Math.PI*2,true);
A.stroke()}};var b=function(){if(z==null){return}if(g){var M=z.mPaintingTools;M.copyFrom(g);M.brushSize*=s}var O=z.mUsers;
var G=O.getCurrentUserDrawState();O.zeroCurrentUserOpacities(G.entireStrokeDirtyRegion);G.resetForNewStroke();var J=25;var B=35;
var E=m-(J*2);var N=w/2-B;var U=21;var D=(U/2)|0;var T=E/(U-1);var H=0.2;var L=(1-H)/((U-1)/2);for(var V=0;V<U;V++){var K=V*T;
var S=K;K+=J;S/=E;S*=Math.PI*2;var I=Math.sin(S);I*=N;I=w/2-I;if(V==0){z.startStroke(K,I,H)}else{z.continueStroke(K,I,H)}if(V==D){L=-L
}H+=L}var F=O.getCurrentUserOpacityBuffer();var W=c.data;var R=m;var Q=w;var P=0;var X=0;for(var I=0;I<Q;I++){for(var K=0;
K<R;K++){var C=F[P+K];if(C>0){W[X+0]=g.red;W[X+1]=g.green;W[X+2]=g.blue;W[X+3]=C}else{W[X+3]=0}X+=4}P+=R}u()};var p=function(){m=j.width();
w=j.height();if(m>0&&w>0){j.get(0).setAttribute("width",m);j.get(0).setAttribute("height",w);A=j.get(0).getContext("2d");
A.strokeStyle="rgb(0,0,0)";A.lineWidth=1.5;var B=new ColorsDraw.LayerMaker(ColorsDraw.NullLayer);z=new ColorsDraw.RenderState(m,w,m/w,q,false,false,ColorsDraw.Orientation.Normal,B);
c=A.createImageData(m,w);ColorsUtilities.fillImageData(c,255,255,255,255)}};var v=null;var l=null;var k=function(B){if(v!=null){if(l!=null){v.call(l,B,g)
}else{v(B,g)}}};x.setCallback=function(C,B){v=C;l=B};x.hideControls=function(){$(e).css("display","none")};x.showControls=function(D,B){if(!z){p()
}if(g!=null){if(z){b()}f.setForColor(g.red,g.green,g.blue);$("#size-slider",e).slider("option","value",g.brushSize);$("#opacity-slider",e).slider("option","value",g.opacity*100)
}D-=$(e).width()/2;B-=$(e).height()/2;var C={display:"inline",position:"absolute",left:D+"px",top:B+"px"};$(e).css(C)};x.isHidden=function(){var B=$(e).css("display");
if(B=="none"){return true}return false};x.setToolsState=function(B){g.copyFrom(B)};x.getToolsState=function(){return g};x.setScale=function(B){s=B
};x.getContainer=function(){return e};var a=function(B,D){var C=D.value;if(g!=null){g.brushSize=C;b();k(ColorsDraw.PaintControlsTypes.SIZE_CHANGE)
}};var n=function(B,D){var C=D.value;if(g!=null){g.opacity=C/100;b();k(ColorsDraw.PaintControlsTypes.OPACITY_CHANGE)}};$("#size-slider",e).slider({value:20,min:o,max:80,orientation:"vertical",stop:a,slide:a});
$("#opacity-slider",e).slider({value:80,min:0,max:100,orientation:"vertical",stop:n,slide:n});var y=function(B){if(g!=null){g.red=B.red;
g.green=B.green;g.blue=B.blue;b();k(ColorsDraw.PaintControlsTypes.COLOUR_CHANGE)}};f.setCallback(y)};ColorsDraw.BrushSizeIndicator=function(e){var h=this;
var f=true;var j=400;var d=j;var a=$("#"+e);a.html('<canvas id="internal-brush-size-canvas" width="'+d+'" height="'+d+'"></canvas>');
var b=$("#internal-brush-size-canvas",a);var c=b.get(0);var k=c.getContext("2d");k.clearRect(0,0,d,d);h.setForBrushSize=function(p){var q=false;
j=p;if(j<4){q=true}if(q){d=13}else{d=Math.ceil(j)|0;d+=6;d|=1}b.attr("width",d);b.attr("height",d);k=c.getContext("2d");k.clearRect(0,0,d,d);
if(false){k.fillStyle="rgb(255,0,0)";k.fillRect(0,0,d,d);k.clearRect(1,1,d-2,d-2)}var r=((d+1)/2)|0;r+=1;if(q){for(var o=0;
o<2;o++){if(o==0){k.strokeStyle="rgba(255,255,255,0.5)";k.lineWidth=2}else{k.strokeStyle="rgba(0,0,0,0.5)";k.lineWidth=1}k.beginPath();
k.moveTo(r,3);k.lineTo(r,d);k.moveTo(3,r);k.lineTo(d,r);k.stroke()}}else{var l=j/2;if(l<1){l=1}var n=r;var m=r;for(var o=0;
o<2;o++){if(o==0){k.strokeStyle="rgba(255,255,255,0.5)";k.lineWidth=2}else{k.strokeStyle="rgba(0,0,0,0.5)";k.lineWidth=1}k.beginPath();
k.arc(n,m,l,0,Math.PI*2,true);k.stroke()}if(false){k.strokeStyle="rgba(0,0,0,0.5)";k.lineWidth=1;k.beginPath();k.moveTo(r,0);
k.lineTo(r,d);k.moveTo(0,r);k.lineTo(d,r);k.stroke()}}};h.setPosition=function(o,m){var p=b.width();var l=b.height();o-=p/2;
m-=l/2;var n={left:o+"px",top:m+"px"};b.css(n)};h.showControls=function(m,l){b.css("display","inline");if(m!=null&&l!=null){h.setPosition(m,l)
}f=true};h.hideControls=function(){b.css("display","none");f=false};h.isVisible=function(){return f};h.getMovingElement=function(){return b
};var g={display:"inline",position:"absolute",border:"0px",cursor:"none"};b.css(g);this.hideControls()};ColorsDraw.ColorRing=function(c,l,g){var f=this;
var d=true;var j=l;var h=g;var a=$("#"+c);a.html('<canvas id="color-ring-canvas" width="'+j+'" height="'+j+'"></canvas>');
var b=$("#color-ring-canvas",a).get(0);var k=b.getContext("2d");k.clearRect(0,0,j,j);f.setColor=function(o,n,m){k.clearRect(0,0,j,j);
k.fillStyle="rgba(0,0,0,0.5)";k.beginPath();k.arc(j/2,j/2,j/2-1,0,Math.PI*2,true);k.arc(j/2,j/2,g,0,Math.PI*2,false);k.fill();
k.fillStyle="rgba("+o+","+n+","+m+",1.0)";k.beginPath();k.arc(j/2,j/2,j/2-2,0,Math.PI*2,true);k.arc(j/2,j/2,g+1,0,Math.PI*2,false);
k.fill()};f.setPosition=function(o,m){o-=j/2;m-=j/2;var n={left:o+"px",top:m+"px"};a.css(n)};f.showControls=function(n,m){a.css("display","inline");
if(n!=null&&m!=null){f.setPosition(n,m)}d=true};f.hideControls=function(){a.css("display","none");d=false};f.isVisible=function(){return d
};var e={cursor:"crosshair",display:"inline",position:"absolute"};a.css(e);f.hideControls();f.setColor(255,255,255)};ColorsDraw.versions.Painter="1";
ColorsDraw.PainterMode={DRAWING:0,PLAYBACK:1};ColorsDraw.PlayedEventType={None:0,Stroke:1,Flip:2,LayerChange:3};ColorsDraw.saveToolsStateToLocalStorage=function(d,a){var c="hard";
var b="full";switch(a.brushType){case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD:c="hard";break;case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_SOFT:c="soft";
break;case ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_BRISTLE:c="bristle";break}switch(a.brushControl){case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_FULL:b="full";
break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY:b="variable-opacity";break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZE:b="variable-size";
break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZEOPACITY:b="variable-size-opacity";break;case ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_DISTANCEOPACITY:b="distance-opacity";
break}localStorage[d+"brush-type"]=c;localStorage[d+"brush-control"]=b;localStorage[d+"brush-size"]=a.brushSize;localStorage[d+"red"]=a.red;
localStorage[d+"green"]=a.green;localStorage[d+"blue"]=a.blue;localStorage[d+"opacity"]=a.opacity;localStorage[d+"bristle-spacing"]=a.bristleSpacing
};ColorsDraw.loadToolsStateToLocalStorage=function(c,b){var a=localStorage[c+"brush-type"];if(a!=null){if(a=="hard"){b.brushType=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_HARD
}else{if(a=="soft"){b.brushType=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_SOFT}else{if(a=="bristle"){b.brushType=ColorsDraw.DrwCommand.BrushType.BRUSHTYPE_BRISTLE
}}}}var e=localStorage[c+"brush-control"];if(e=="full"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_FULL
}else{if(e=="variable-opacity"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLEOPACITY}else{if(e=="variable-size"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZE
}else{if(e=="variable-size-opacity"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_VARIABLESIZEOPACITY}else{if(e=="distance-opacity"){b.brushControl=ColorsDraw.DrwCommand.BrushControl.BRUSHCONTROL_DISTANCEOPACITY
}}}}}var d;d=localStorage[c+"brush-size"];if(d!=null&&d!="NaN"){b.brushSize=parseFloat(d)}d=localStorage[c+"red"];if(d!=null&&d!="NaN"){b.red=parseInt(d)
}d=localStorage[c+"green"];if(d!=null&&d!="NaN"){b.green=parseInt(d)}d=localStorage[c+"blue"];if(d!=null&&d!="NaN"){b.blue=parseInt(d)
}d=localStorage[c+"opacity"];if(d!=null&&d!="NaN"){b.opacity=parseFloat(d)}d=localStorage[c+"bristle-spacing"];if(d!=null&&d!="NaN"){b.bristleSpacing=parseFloat(d)
}};ColorsDraw.clearToolsStateFromLocalStorage=function(a){localStorage.removeItem(a+"brush-type");localStorage.removeItem(a+"brush-control");
localStorage.removeItem(a+"brush-size");localStorage.removeItem(a+"red");localStorage.removeItem(a+"green");localStorage.removeItem(a+"blue");
localStorage.removeItem(a+"opacity");localStorage.removeItem(a+"bristle-spacing")};ColorsDraw.savePainterStateToLocalStore=function(j,n,l,r,e,c,d){if(!ColorsUtilities.supportsHtml5Storage){return false
}var h=0;while(true){try{localStorage["colors.painter.version"]="0";localStorage["colors.painter.fb-id"]=j;localStorage["colors.painter.width"]=n;
localStorage["colors.painter.height"]=l;ColorsDraw.saveToolsStateToLocalStorage("colors.painter.tools-state.",r);var s="normal";
switch(d){case ColorsDraw.Orientation.Clockwise:s="clockwise";break;case ColorsDraw.Orientation.CounterClockwise:s="counter-clockwise";
break;case ColorsDraw.Orientation.UpsideDown:s="upside-down";break}localStorage["colors.painter.orientation"]=s;var b=1;if(b!=null){var m=e.getCommandsInfo();
var u=m.mNumCmds;var k=m.mNumWrittenCmds;localStorage["colors.painter.drw.num-cmds"]=u;localStorage["colors.painter.drw.total-cmds"]=k;
if(k>0){var f=ColorsUtilities.base64EncodeIntArray(m.mCommands,0,k);var t=ColorsUtilities.squidgeBase64String(f);localStorage["colors.painter.drw.commands"]=t
}else{localStorage.removeItem("colors.painter.drw.commands")}var p=e.getHeader();if(p!=null){var o=p.asByteBuffer();var q=new Array((o.length/4)|0);
ColorsUtilities.bytesIntoIntsArray(o,0,q,0,q.length);var a=ColorsUtilities.base64EncodeIntArray(q,0,q.length);localStorage["colors.painter.drw.header"]=a
}}else{return false}localStorage["colors.painter.version"]="2";break}catch(g){h+=1;ColorsDraw.clearLocalStoreData();if(h>1){return false
}}}return true};ColorsDraw.loadPainterStateFromLocalStore=function(){var c=new Object();c.valid=false;if(!ColorsUtilities.supportsHtml5Storage){return c
}var g=localStorage["colors.painter.version"];if(g==null){return c}if(g=="0"){c.valid=true;return c}if(g!="1"&&g!="2"){return c
}c.valid=true;c.tools_state=new ColorsDraw.ToolsState();ColorsDraw.loadToolsStateToLocalStorage("colors.painter.tools-state.",c.tools_state);
c.facebook_user_id=localStorage["colors.painter.fb-id"];c.width=localStorage["colors.painter.width"];c.height=localStorage["colors.painter.height"];
c.orientation=ColorsDraw.Orientation.Normal;var l=localStorage["colors.painter.orientation"];if(l){if(l=="clockwise"){c.orientation=ColorsDraw.Orientation.Clockwise
}if(l=="counter-clockwise"){c.orientation=ColorsDraw.Orientation.CounterClockwise}if(l=="upside-down"){c.orientation=ColorsDraw.Orientation.UpsideDown
}}var d=localStorage["colors.painter.image"];if(d){c.image_data_url=ColorsUtilities.unsquidgeBase64String(d)}var e=parseInt(localStorage["colors.painter.drw.total-cmds"]);
var b=parseInt(localStorage["colors.painter.drw.num-cmds"]);c.drw_cmds=new Object();c.drw_cmds.num_cmds=b;c.drw_cmds.total_cmds=e;
if(e>0){var h=localStorage["colors.painter.drw.commands"];if(h!=null){var j=ColorsUtilities.unsquidgeBase64String(h);h=null;
var m=ColorsUtilities.decodeBase64Data(j);j=null;var a=new Array(e);ColorsUtilities.bytesIntoIntsArray(m,0,a,0,e);m=null}else{var a=new Array()
}c.drw_cmds.commands=a}var f=new ColorsDraw.DrwHeader();c.header=f;f.valid=true;switch(parseInt(g)){case 1:f.version=1199;
f.initialVersion=1199;f.SavedVersion=1199;f.aspect=parseInt(c.width)/parseInt(c.height);f.numCommands=b;break;case 2:var k=localStorage["colors.painter.drw.header"];
if(k!=null){var m=ColorsUtilities.decodeBase64Data(k);k=null;f.fillFromBuffer(m)}else{f.version=1199;f.initialVersion=1199;
f.SavedVersion=1199;f.aspect=parseInt(c.width)/parseInt(c.height);f.numCommands=b}break}return c};ColorsDraw.clearLocalStoreData=function(){if(!ColorsUtilities.supportsHtml5Storage){return
}localStorage.removeItem("colors.painter.version");localStorage.removeItem("colors.painter.fb-id");localStorage.removeItem("colors.painter.width");
localStorage.removeItem("colors.painter.height");localStorage.removeItem("colors.painter.image");localStorage.removeItem("colors.painter.orientation");
localStorage.removeItem("colors.painter.drw.num-cmds");localStorage.removeItem("colors.painter.drw.total-cmds");localStorage.removeItem("colors.painter.drw.commands");
localStorage.removeItem("colors.painter.drw.header");ColorsDraw.clearToolsStateFromLocalStorage("colors.painter.tools-state.")
};ColorsDraw.createPainterWithCanvasBacking=function(a,j,f,c,e,b){var h=null;var g=document.createElement("canvas");g.setAttribute("width",a);
g.setAttribute("height",j);if(!!g.getContext){var d=g.getContext("2d");var k=d.createImageData(a,j);ColorsUtilities.clearImageData(k);
d.putImageData(k,0,0);h=new ColorsDraw.Painter(k,f,c,e,b);h.mCanvasElement=g;h.mCanvasContext=d;h.mCanvasImageData=k}return h
};ColorsDraw.versions.PainterUIHandler="1";ColorsDraw.PainterUIHandler=function(ay,aS,W,C){var l=this;var am=10;var D=true;
var aF=ay;var au=aF.getWidth();var aq=aF.getHeight();var aw=aS;var ah=ColorsDraw.PainterUIHandler.OperationMode.IDLE;var o;
var ar=null;var aP=null;var m=null;var aI=W;var g=$("#"+aI.mouse_area_id);var H=$("#"+aI.draw_area_id);var aO=null;var J=null;
var z=false;var w=2;var ax=w;var aN=[0.5,0.75,1,2,4,8];var aG=aN[ax];var v=0;var u=0;var al,q;var aH,M;var aM=C;var y=0;var x=0;
var ae=new Object();ae.valid=false;var f;var e;var d=false;var aL;var aE=-1;var ag=-1;var af=1;this.setPaintingAllowed=function(aZ){D=aZ
};this.getPaintingAllowed=function(){return D};this.setMouseTranslation=function(aZ,a0){v=aZ;u=a0};this.getXTranslation=function(){return v
};this.getYTranslation=function(){return u};this.getScale=function(){return aG};this.resetScale=function(){ax=w;aG=aN[ax]
};this.setScale=function(aZ){aG=aZ};this.clearCanvas=function(){mPainter.resetPainting(255,255,255,255);ax=w;aG=aN[ax];v=0;
u=0;aK();if(aM!=null&&aM.resetView!=null){aM.resetView(l)}};var az=function(){if(ax>=aN.length-1){return}var a1=null;var aZ=null;
if(ae.valid){a1=ae.x_pos;aZ=ae.y_pos;ae.valid=false}var a0=aG;ax+=1;aG=aN[ax];aK();if(aM!=null&&aM.scaleChanged!=null){aM.scaleChanged(l,aG,a0,a1,aZ)
}};var Q=function(){var aZ=mPainter.seekToNumEvents(aL,am);if(aZ==aL){j();mPainter.tiggleCanvas()}};var j=function(){if(aE!=-1){window.clearInterval(aE);
aE=-1}};var I=function(){j();aE=window.setInterval(Q,0|(1000/30))};var aQ=function(){if(ah!=ColorsDraw.PainterUIHandler.OperationMode.PLAYING){ab();
a();return}var aZ=mPainter.tickPlayback(af);if(aZ>=0){if(J!=null){J.slider("option","value",aZ)}}if(aZ<0||aZ>=mPainter.getDrwHandler().getNumberMajorEvents()){ab();
a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)}};var ab=function(){if(ag!=-1){window.clearInterval(ag);ag=-1}};var aR=function(){ab();
ag=window.setInterval(aQ,0|(1000/30))};var B=function(){var aZ=false;switch(ah){case ColorsDraw.PainterUIHandler.OperationMode.IDLE:case ColorsDraw.PainterUIHandler.OperationMode.DRAWING:aZ=true;
break}return aZ};var ak=function(aZ){y=aZ.pageX;x=aZ.pageY;if(true){if(ar){if(B()){var a5=H.offset();var a8=(y-a5.left);var a6=(x-a5.top);
var bc=H.width();var a0=H.height();if(a8>=0&&a8<bc&&a6>=0&&a6<a0){var a2=T(a8,a6,bc,a0);var a9=S(a8,a6,bc,a0);a2=ColorsDraw.DrwCommand.twiddleXCanvasPoint(a2,aF.mEnvironment);
a9=ColorsDraw.DrwCommand.twiddleYCanvasPoint(a9,aF.mEnvironment);var a1=aV(a2,a9,bc,a0);var a7=aY(a2,a9,bc,a0);if(!ar.isVisible()){ar.showControls()
}ar.setPosition(a5.left+a1,a5.top+a7)}else{if(ar.isVisible()){ar.hideControls()}}}else{if(ar.isVisible()){ar.hideControls()
}}}if(ah==ColorsDraw.PainterUIHandler.OperationMode.EYE_DROPPER){if(aP!=null){var a5=H.offset();var a8=(y-a5.left)|0;var a6=(x-a5.top)|0;
if(a8>=0&&a8<H.width()&&a6>=0&&a6<H.height()){if(!aP.isVisible()){aP.showControls()}aP.setPosition(y,x);if(m!=null){if(a8>=0&&a8<m.width&&a6>=0&&a6<m.height){var bb=(a6*m.width+a8)*4;
var a3=m.data[bb+0];var a4=m.data[bb+1];var ba=m.data[bb+2];aP.setColor(a3,a4,ba);if(aM!=null&&aM.paintColorChanging!=null){aM.paintColorChanging(l,a3,a4,ba)
}}}}else{if(aP.isVisible()){aP.hideControls()}}}}}};var A=function(aZ){var a8=aZ.which;if(aZ.altKey){return}if(aZ.ctrlKey||aZ.metaKey){if(a8==90){if(aZ.shiftKey){K()
}else{Y()}aZ.stopPropagation();return false}return}if(a8==16){return}if(aZ.metaKey||aZ.altKey||aZ.ctrlKey||aZ.shiftKey){return
}switch(a8){case 80:case 32:if(ah==ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING){}else{if(ah==ColorsDraw.PainterUIHandler.OperationMode.IDLE){a(ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING);
d=false}}aZ.stopPropagation();return false;break;case 90:case 107:case 61:case 187:if(ah==ColorsDraw.PainterUIHandler.OperationMode.ZOOM_IN){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}else{if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}if(ax>=aN.length-1){return false}ae.valid=false;var a2=H.offset();
var a4=(y-a2.left)|0;var a3=(x-a2.top)|0;if(a4>=0&&a4<H.width()&&a3>=0&&a3<H.height()){var a1=aG;ax+=1;aG=aN[ax];aK();if(aM!=null&&aM.scaleChanged!=null){aM.scaleChanged(l,aG,a1,a4,a3)
}}else{az()}}aZ.stopPropagation();return false;break;case 88:case 109:case 189:if(ah==ColorsDraw.PainterUIHandler.OperationMode.IDLE){if(ax>0){ae.valid=false;
var a1=aG;ax-=1;aG=aN[ax];aK();var a7=null;var a6=null;var a2=H.offset();var a4=(y-a2.left)|0;var a3=(x-a2.top)|0;if(a4>=0&&a4<H.width()&&a3>=0&&a3<H.height()){a7=a4;
a6=a3}if(aM!=null&&aM.scaleChanged!=null){aM.scaleChanged(l,aG,a1,a7,a6)}}}aZ.stopPropagation();return false;break;case 85:Y();
aZ.stopPropagation();return false;break;case 82:K();aZ.stopPropagation();return false;break;case 69:case 86:l.eyeDropperAction();
break;case 37:case 38:case 39:case 40:break;default:if(a8>=48&&a8<=57){if(a8==48){a8=58}var ba=(a8-48)/10;ac(ba);aZ.stopPropagation();
return false}else{if(ah==ColorsDraw.PainterUIHandler.OperationMode.DRAWING){return}var a5=H;var a2=a5.offset();var a0=a5.width();
var a9=a5.height();var a4=a2.left+a0/2;var a3=a2.top+a9/2;U(a4,a3);aZ.stopPropagation();return false}break}};var L=function(a0){var aZ=a0.which;
switch(aZ){case 80:case 32:if(ah==ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);
if(d){$(document).unbind("mousemove",aU);$(document).unbind("mouseup",an);d=false}}a0.stopPropagation();return false;break
}};var U=function(a1,aZ){if(ah==ColorsDraw.PainterUIHandler.OperationMode.CONTROLS){o.hideControls();a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);
return}else{var a0=$(o.getContainer());var a2=a0.offset();if(a1!=null){}else{a1=a2.left+50}if(aZ!=null){}else{aZ=a2.top+25
}a(ColorsDraw.PainterUIHandler.OperationMode.CONTROLS);o.showControls(a1,aZ)}};var aA=1;var av=1;var E=-1;var aB;var r=function(){var aZ=aA+aB;
if(aB>0){if(aZ>av){aZ=av}}else{if(aZ<av){aZ=av}}aA=aZ;$("#pressure-slider").slider("option","value",aA*100);if(aA==av){window.clearInterval(E);
E=-1}};var ac=function(aZ){if(ah==ColorsDraw.PainterUIHandler.OperationMode.DRAWING){av=aZ;if(av!=aA){aB=(av-aA)/20;if(E==-1){E=window.setInterval(r,0|(1000/10))
}}}else{aA=aZ;$("#pressure-slider").slider("option","value",aA*100)}};var V=function(){var a0=aA;if(z){var aZ=ColorsUtilities.getWacomPlugin();
if(aZ){a0=aZ.pressure}}return a0};var a=function(a8){var a7=ah;var a0=false;switch(a7){case ColorsDraw.PainterUIHandler.OperationMode.CONTROLS:o.hideControls();
var aZ=o.getToolsState();if(aZ.brushSize<aF.mEnvironment.minBrushSize){aZ.brushSize=aF.mEnvironment.minBrushSize}aF.mPaintingTools.copyFrom(aZ);
aK();break;case ColorsDraw.PainterUIHandler.OperationMode.PLAYING:ab();break;case ColorsDraw.PainterUIHandler.OperationMode.SEEKING:j();
break;case ColorsDraw.PainterUIHandler.OperationMode.EYE_DROPPER:if(aP!=null){aP.hideControls()}m=null;break}var a4="auto";
switch(a8){case ColorsDraw.PainterUIHandler.OperationMode.IDLE:a4="none";break;case ColorsDraw.PainterUIHandler.OperationMode.DRAWING:a4="none";
break;case ColorsDraw.PainterUIHandler.OperationMode.CONTROLS:o.setToolsState(aF.mPaintingTools);a4="crosshair";break;case ColorsDraw.PainterUIHandler.OperationMode.ZOOM_IN:a4="url("+aI.controls_data_path+"zoom-in-cursor.png) 7 7, auto";
break;case ColorsDraw.PainterUIHandler.OperationMode.ZOOM_OUT:a4="help";break;case ColorsDraw.PainterUIHandler.OperationMode.PANNING:case ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING:a4="move";
break;case ColorsDraw.PainterUIHandler.OperationMode.EYE_DROPPER:a4="crosshair";if(aP!=null){var a3=H.offset();var a6=(y-a3.left)|0;
var a5=(x-a3.top)|0;if(a6>=0&&a6<H.width()&&a5>=0&&a5<H.height()){if(!aP.isVisible()){aP.showControls()}aP.setPosition(y,x);
if(m!=null){if(a6>=0&&a6<m.width&&a5>=0&&a5<m.height){var ba=(a5*m.width+a6)*4;var a1=m.data[ba+0];var a2=m.data[ba+1];var a9=m.data[ba+2];
aP.setColor(a1,a2,a9);if(aM!=null&&aM.paintColorChanging!=null){aM.paintColorChanging(l,a1,a2,a9)}}}}}break}if(a8==ColorsDraw.PainterUIHandler.OperationMode.IDLE){}else{}H.css("cursor",a4);
ah=a8;if(aM!=null&&aM.operationModeChanged!=null){aM.operationModeChanged(l,ah,a7)}};var T=function(a2,aZ,a3,a1){var a0=50;
switch(aF.mOrientation){case ColorsDraw.Orientation.Normal:a2-=a3/2;a2+=v;a0=a2/aG;a0+=au/2;break;case ColorsDraw.Orientation.Clockwise:aZ-=a1/2;
aZ+=u;a0=aZ/aG;a0+=au/2;break;case ColorsDraw.Orientation.CounterClockwise:aZ-=a1/2;aZ+=u;a0=aZ/aG;a0=-a0;a0+=au/2;break;
case ColorsDraw.Orientation.UpsideDown:a2-=a3/2;a2+=v;a0=a2/aG;a0=-a0;a0+=au/2;break}return a0};var S=function(a2,aZ,a3,a1){var a0=50;
switch(aF.mOrientation){case ColorsDraw.Orientation.Normal:aZ-=a1/2;aZ+=u;a0=aZ/aG;a0+=aq/2;break;case ColorsDraw.Orientation.Clockwise:a2-=a3/2;
a2+=v;a0=a2/aG;a0=-a0;a0+=aq/2;break;case ColorsDraw.Orientation.CounterClockwise:a2-=a3/2;a2+=v;a0=a2/aG;a0+=aq/2;break;
case ColorsDraw.Orientation.UpsideDown:aZ-=a1/2;aZ+=u;a0=aZ/aG;a0=-a0;a0+=aq/2;break}return a0};var aV=function(a2,a0,a3,aZ){var a1=50;
switch(aF.mOrientation){case ColorsDraw.Orientation.Normal:a2-=au/2;a1=a2*aG;a1-=v;a1+=a3/2;break;case ColorsDraw.Orientation.Clockwise:a0-=aq/2;
a1=a0*aG;a1=-a1;a1-=v;a1+=a3/2;break;case ColorsDraw.Orientation.CounterClockwise:a0-=aq/2;a1=a0*aG;a1-=v;a1+=a3/2;break;
case ColorsDraw.Orientation.UpsideDown:a2-=au/2;a1=a2*aG;a1=-a1;a1-=v;a1+=a3/2;break}return a1};var aY=function(a2,a1,a3,a0){var aZ=50;
switch(aF.mOrientation){case ColorsDraw.Orientation.Normal:a1-=aq/2;aZ=a1*aG;aZ-=u;aZ+=a0/2;break;case ColorsDraw.Orientation.Clockwise:a2-=au/2;
aZ=a2*aG;aZ-=u;aZ+=a0/2;break;case ColorsDraw.Orientation.CounterClockwise:a2-=au/2;aZ=a2*aG;aZ=-aZ;aZ-=u;aZ+=a0/2;break;
case ColorsDraw.Orientation.UpsideDown:a1-=aq/2;aZ=a1*aG;aZ=-aZ;aZ-=u;aZ+=a0/2;break}return aZ};var k=function(aZ){switch(ah){case ColorsDraw.PainterUIHandler.OperationMode.CONTROLS:o.hideControls();
a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);return false}};var N=function(aZ){switch(ah){case ColorsDraw.PainterUIHandler.OperationMode.CONTROLS:if(aZ.button==2){o.hideControls();
a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);return false}}};var F=function(aZ){switch(ah){case ColorsDraw.PainterUIHandler.OperationMode.DRAWING:aU(aZ);
an(aZ);break}};var X=function(bj){switch(ah){case ColorsDraw.PainterUIHandler.OperationMode.IDLE:if(bj.button==2){a(ColorsDraw.PainterUIHandler.OperationMode.CONTROLS);
var be=bj.pageX|0;var a1=bj.pageY|0;var bf=$(o.getContainer());var a4=bf.width();var bl=bf.height();var a9=$(document).width();
if(be<a4/2+10){be=a4/2+10}if(be>a9-(a4/2)-10){be=a9-(a4/2)-10}o.showControls(be,a1);bj.stopPropagation();return false}else{if(bj.button==1){a(ColorsDraw.PainterUIHandler.OperationMode.PANNING);
var a6=H.offset();var be=(bj.pageX-a6.left)|0;var a1=(bj.pageY-a6.top)|0;f=be;e=a1;$(document).mousemove(aU);$(document).mouseup(an);
d=true;bj.stopPropagation();return false}else{if(!D){return false}var a3=false;if(ColorsUtilities.wacomPenDown()){a3=true;
z=true}else{if(bj.button==0){a3=true;z=false}}if(a3){a(ColorsDraw.PainterUIHandler.OperationMode.DRAWING);var a6=H.offset();
var bi=H.width();var bg=H.height();var bh=bj.pageX-a6.left;var a5=bj.pageY-a6.top;var be=T(bh,a5,bi,bg);var a1=S(bh,a5,bi,bg);
var bb=V();aF.startStroke(be,a1,bb,aw);ae.valid=true;ae.x_pos=bh;ae.y_pos=a5;$(document).mousemove(aU);$(document).mouseup(an);
bj.stopPropagation();var a2=aF.doPartStrokeRender();if(aM!=null&&aM.canvasChange!=null&&a2){aM.canvasChange(l,a2)}return false
}}}break;case ColorsDraw.PainterUIHandler.OperationMode.CONTROLS:if(bj.button==0||bj.button==2||ColorsUtilities.wacomPenDown()){o.hideControls();
a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);if(true||bj.button==2){bj.stopPropagation();return false}return X(bj)}break;
case ColorsDraw.PainterUIHandler.OperationMode.DRAWING:return false;case ColorsDraw.PainterUIHandler.OperationMode.ZOOM_IN:if(bj.button==0||ColorsUtilities.wacomPenDown()){ae.valid=false;
var bd=aG;ax+=1;aG=aN[ax];aK();var ba=null;var a8=null;var a6=H.offset();var be=(y-a6.left)|0;var a1=(x-a6.top)|0;if(aM!=null&&aM.scaleChanged!=null){aM.scaleChanged(l,aG,bd,be,a1)
}a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);return false}break;case ColorsDraw.PainterUIHandler.OperationMode.PANNING:case ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING:if(bj.button==0||ColorsUtilities.wacomPenDown()){var a6=H.offset();
var be=(bj.pageX-a6.left)|0;var a1=(bj.pageY-a6.top)|0;f=be;e=a1;$(document).mousemove(aU);$(document).mouseup(an);d=true
}return false;break;case ColorsDraw.PainterUIHandler.OperationMode.EYE_DROPPER:if(bj.button==0||ColorsUtilities.wacomPenDown()){ae.valid=false;
var a6=H.offset();var be=(y-a6.left)|0;var a1=(x-a6.top)|0;if(be>=0&&be<H.width()&&a1>=0&&a1<H.height()){if(m!=null){if(be>=0&&be<m.width&&a1>=0&&a1<m.height){var a0=(a1*m.width+be)*4;
var a7=m.data[a0+0];var bc=m.data[a0+1];var aZ=m.data[a0+2];if(aM!=null&&aM.paintColorChanging!=null){aM.paintColorChanging(l,a7,bc,aZ)
}var bk=aF.mPaintingTools;bk.red=a7;bk.green=bc;bk.blue=aZ}}}a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);return false
}break}};var aU=function(aZ){switch(ah){case ColorsDraw.PainterUIHandler.OperationMode.DRAWING:var a8=false;if(z){if(ColorsUtilities.wacomPenDown()){a8=true
}}else{if(aZ.button==0){a8=true}}if(a8){var a3=H.offset();var a1=H.width();var bb=H.height();var ba=aZ.pageX-a3.left;var a9=aZ.pageY-a3.top;
var a5=T(ba,a9,a1,bb);var a4=S(ba,a9,a1,bb);var a0=V();aF.continueStroke(a5,a4,a0,aw);ae.valid=true;ae.x_pos=aZ.pageX-a3.left;
ae.y_pos=aZ.pageY-a3.top;var a7=aF.doPartStrokeRender();if(aM!=null&&aM.canvasChange!=null&&a7){aM.canvasChange(l,a7)}}break;
case ColorsDraw.PainterUIHandler.OperationMode.PANNING:case ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING:if(d){var a3=H.offset();
var a5=(aZ.pageX-a3.left)|0;var a4=(aZ.pageY-a3.top)|0;var a2=a5-f;var a6=a4-e;f=a5;e=a4;ae.valid=false;if(aM!=null&&aM.areaPanned!=null){aM.areaPanned(l,a2,a6,aG)
}}return false;break;default:break}};var an=function(a2){switch(ah){case ColorsDraw.PainterUIHandler.OperationMode.DRAWING:var a1=false;
var aZ=z;if(z){if(ColorsUtilities.wacomPenUp()){a1=true;z=false}}else{if(a2.button==0){a1=true}}if(a1){aF.finishStroke(aw);
var a0=aF.mLayers[aF.mUsers.getCurrentUserLayerNumber()];var a3=aF.doPartStrokeRender();var a4=aF.mUsers.getCurrentUserDrawState();
aF.mUsers.zeroCurrentUserOpacities(a4.entireStrokeDirtyRegion);ColorsUtilities.copyToPackedIntImage(a0.mLastFullStrokeImage,a0.mImageData,a4.entireStrokeDirtyRegion);
a4.resetForNewStroke();$(document).unbind("mousemove",aU);$(document).unbind("mouseup",an);a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);
if(J!=null){J.slider("option","max",aw.getNumberMajorEvents());J.slider("option","value",aw.getNumberMajorEvents())}if(aM!=null&&aM.strokeComplete!=null){aM.strokeComplete(l)
}if(aM!=null&&aM.canvasChange!=null&&a3){aM.canvasChange(l,a3)}}break;case ColorsDraw.PainterUIHandler.OperationMode.PANNING:case ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING:if(d){$(document).unbind("mousemove",aU);
$(document).unbind("mouseup",an);if(ah==ColorsDraw.PainterUIHandler.OperationMode.PANNING){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}d=false}return false;break;default:break}};var aK=function(){if(ar!=null){var aZ=aF.mPaintingTools;var a0=aG*aZ.brushSize;
ar.setForBrushSize(a0)}o.setScale(aG)};var aD=function(a0,aZ){switch(a0){case ColorsDraw.PaintControlsTypes.COLOUR_CHANGE:if(aM!=null&&aM.paintColorChanging!=null){aM.paintColorChanging(l,aZ.red,aZ.green,aZ.blue)
}break;case ColorsDraw.PaintControlsTypes.SIZE_CHANGE:break;case ColorsDraw.PaintControlsTypes.OPACITY_CHANGE:break;case ColorsDraw.PaintControlsTypes.BRUSH_CONTROL_CHANGE:break;
case ColorsDraw.PaintControlsTypes.BRUSH_TYPE_CHANGE:break}};var aC=function(){if(ah==ColorsDraw.PainterUIHandler.OperationMode.PANNING||ah==ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}};var c=function(){if(ah==ColorsDraw.PainterUIHandler.OperationMode.CONTROLS){aT()}};var ai=function(){if(ah==ColorsDraw.PainterUIHandler.OperationMode.EYE_DROPPER){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}};var aT=function(){aC();if(!(ah==ColorsDraw.PainterUIHandler.OperationMode.IDLE||ah==ColorsDraw.PainterUIHandler.OperationMode.CONTROLS)){return
}var a3=H;var a4=a3.offset();var a2=a3.width();var a0=a3.height();var a1=a4.left+a2/2;var aZ=a4.top+a0/2;U(a1,aZ)};var at=function(){if(!D){return
}aC();c();ai();if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}if(aM!=null&&aM.handleFlip!=null){aM.handleFlip(l,true)
}if(J!=null){J.slider("option","max",aw.getNumberMajorEvents());J.slider("option","value",aw.getNumberMajorEvents())}};var aa=function(){if(!D){return
}aC();c();ai();if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}if(aM!=null&&aM.handleFlip!=null){aM.handleFlip(l,false)
}if(J!=null){J.slider("option","max",aw.getNumberMajorEvents());J.slider("option","value",aw.getNumberMajorEvents())}};var G=function(){aC();
c();ai();if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}ax=w;aG=aN[ax];v=0;u=0;if(aM!=null&&aM.resetView!=null){aM.resetView(l)
}};var aj=function(){aC();c();ai();if(ah==ColorsDraw.PainterUIHandler.OperationMode.ZOOM_IN){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);
return}if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}az()};var t=function(){aC();c();ai();if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return
}if(ax>0){ae.valid=false;var aZ=aG;ax-=1;aG=aN[ax];aK();if(aM!=null&&aM.scaleChanged!=null){aM.scaleChanged(l,aG,aZ)}}};var aX=function(){c();
ai();if(ah==ColorsDraw.PainterUIHandler.OperationMode.TOGGLE_PANNING||ah==ColorsDraw.PainterUIHandler.OperationMode.PANNING){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}else{if(ah==ColorsDraw.PainterUIHandler.OperationMode.IDLE){a(ColorsDraw.PainterUIHandler.OperationMode.PANNING)}}};var Y=function(){aC();
c();ai();if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}if(aM!=null&&aM.handleUndo!=null){var aZ=aM.handleUndo(l);
if(aZ){a(ColorsDraw.PainterUIHandler.OperationMode.UNDOING)}}if(J!=null){var a0=mPainter.getDrwHandler().getNumberMajorEvents();
J.slider("option","max",a0);J.slider("option","value",a0)}};this.finishedUndoing=function(){if(ah==ColorsDraw.PainterUIHandler.OperationMode.UNDOING){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}};var K=function(){if(!D){return}aC();c();ai();if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}if(aM!=null&&aM.handleRedo!=null){aM.handleRedo(l)
}};var ap=function(){if(!D){return}aC();c();ai();if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}if(aM!=null&&aM.handleCanvasClear!=null){aM.handleCanvasClear(l)
}else{l.clearCanvas()}};this.paletteAction=function(){aT()};this.undoAction=function(){Y()};this.clearAction=function(){ap()
};this.zoomInAction=function(){aj()};this.zoomOutAction=function(){t()};this.panAction=function(){aX()};this.flipXAction=function(){at()
};this.flipYAction=function(){aa()};this.eyeDropperAction=function(){aC();c();if(ah==ColorsDraw.PainterUIHandler.OperationMode.EYE_DROPPER){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE);
return}if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}if(aM!=null&&aM.eyeDropperSource!=null){m=aM.eyeDropperSource(l);
a(ColorsDraw.PainterUIHandler.OperationMode.EYE_DROPPER)}};this.resetViewAction=function(){G()};this.playbackAction=function(){};
var ao=function(){aO=$("#"+aI.other_controls_id);aO.html(aO.html()+'<div class="controls-toggle-button" id="controls-toggle-button"></div><div class="flip-horizontally-button" id="flip-horizontally-button"></div><div class="flip-vertically-button" id="flip-vertically-button"></div><div class="reset-view-button" id="reset-view-button"></div><div class="zoom-in-button" id="zoom-in-button"></div><div class="zoom-out-button" id="zoom-out-button"></div><div class="pan-button" id="pan-button"></div><div class="clear-button" id="clear-button"></div><div class="undo-button" id="undo-button"></div><div class="redo-button" id="redo-button"></div>');
var a0=new Array(aI.controls_data_path+"toggle-controls-up.png");var aZ=new Array(aI.controls_data_path+"toggle-controls-down.png");
var a7=new CycleButton.button("controls-toggle-button",32,32,a0,aZ,"#f0f0f0","#808080");a7.setCallback(aT);var a0=new Array(aI.controls_data_path+"flip-canvas-horizontally-up.png");
var aZ=new Array(aI.controls_data_path+"flip-canvas-horizontally-down.png");var a2=new CycleButton.button("flip-horizontally-button",32,32,a0,aZ,"#f0f0f0","#808080");
a2.setCallback(at);var a0=new Array(aI.controls_data_path+"flip-canvas-vertically-up.png");var aZ=new Array(aI.controls_data_path+"flip-canvas-vertically-down.png");
var a5=new CycleButton.button("flip-vertically-button",32,32,a0,aZ,"#f0f0f0","#808080");a5.setCallback(aa);var a0=new Array(aI.controls_data_path+"reset-view-up.png");
var aZ=new Array(aI.controls_data_path+"reset-view-up.png");var a6=new CycleButton.button("reset-view-button",32,32,a0,aZ,"#f0f0f0","#808080");
a6.setCallback(G);var a0=new Array(aI.controls_data_path+"zoom-in-up.png");var aZ=new Array(aI.controls_data_path+"zoom-in-up.png");
var a4=new CycleButton.button("zoom-in-button",32,32,a0,aZ,"#f0f0f0","#808080");a4.setCallback(aj);var a0=new Array(aI.controls_data_path+"zoom-out-up.png");
var aZ=new Array(aI.controls_data_path+"zoom-out-up.png");var a8=new CycleButton.button("zoom-out-button",32,32,a0,aZ,"#f0f0f0","#808080");
a8.setCallback(t);var a0=new Array(aI.controls_data_path+"pan-up.png");var aZ=new Array(aI.controls_data_path+"pan-up.png");
var a3=new CycleButton.button("pan-button",32,32,a0,aZ,"#f0f0f0","#808080");a3.setCallback(aX);var a0=new Array(aI.controls_data_path+"clear-up.png");
var aZ=new Array(aI.controls_data_path+"clear-up.png");var a1=new CycleButton.button("clear-button",32,32,a0,aZ,"#f0f0f0","#808080");
a1.setCallback(ap);var a0=new Array(aI.controls_data_path+"undo-up.png");var aZ=new Array(aI.controls_data_path+"undo-up.png");
var ba=new CycleButton.button("undo-button",32,32,a0,aZ,"#f0f0f0","#808080");ba.setCallback(Y);var a0=new Array(aI.controls_data_path+"redo-up.png");
var aZ=new Array(aI.controls_data_path+"redo-up.png");var a9=new CycleButton.button("redo-button",32,32,a0,aZ,"#f0f0f0","#808080");
a9.setCallback(K)};var aJ=function(){if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){return}var aZ=mPainter.getCurrentNumEvents();
var a0=mPainter.getDrwHandler().getNumberMajorEvents();if(aZ==a0){mPainter.seekToNumEvents(0,am);mPainter.tiggleCanvas();
if(J!=null){J.slider("option","value",0)}}mPainter.readyForPlayback();a(ColorsDraw.PainterUIHandler.OperationMode.PLAYING);
aR()};var aW=function(){af*=2;if(af>16){af=1}};var O=function(){if(ah==ColorsDraw.PainterUIHandler.OperationMode.SEEKING||ah==ColorsDraw.PainterUIHandler.OperationMode.PLAYING){var aZ=mPainter.getDrwHandler().getNumberMajorEvents();
mPainter.seekToNumEvents(aZ);J.slider("option","value",aZ);mPainter.tiggleCanvas();a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}};l.getPlaybackSteps=function(){return af};l.setPlaybackSteps=function(aZ){af=aZ};this.disableMouseAndKeyboard=function(){$("#"+aI.mouse_area_id).unbind("mousedown",X);
if(aI.right_click_area_id!=null){$("#"+aI.right_click_area_id).unbind("mousedown",N)}$("#"+aI.paint_controls_id).unbind("mousedown",k);
if(aI.mouse_outside_id!=null){$("#"+aI.mouse_outside_id).unbind("mouseleave",F)}$(document).unbind("mousemove",aU);$(document).unbind("mouseup",an);
$(document).unbind("mousemove",ak);$(document).unbind("keydown",A);$(document).unbind("keyup",L);if(ar.isVisible()){ar.hideControls()
}};this.enableMouseAndKeyboard=function(){this.disableMouseAndKeyboard();$("#"+aI.mouse_area_id).mousedown(X);if(aI.right_click_area_id!=null){$("#"+aI.right_click_area_id).mousedown(N)
}$("#"+aI.paint_controls_id).mousedown(k);if(aI.mouse_outside_id!=null){$("#"+aI.mouse_outside_id).mouseleave(F)}$(document).unbind("mousemove",aU);
$(document).unbind("mouseup",an);$(document).mousemove(ak);$(document).keydown(A);$(document).keyup(L)};this.backToIdle=function(){if(ah!=ColorsDraw.PainterUIHandler.OperationMode.IDLE){a(ColorsDraw.PainterUIHandler.OperationMode.IDLE)
}};var s=$("#"+aI.paint_controls_id);o=new ColorsDraw.PaintControls(aI.controls_data_path,aI.brush_tables,aF.mEnvironment.minBrushSize);
o.setCallback(aD);o.setToolsState(mPaintState.mPaintingTools);s.html(o.getContainer());if(aI.brush_size_id!=null){ar=new ColorsDraw.BrushSizeIndicator(aI.brush_size_id);
aK()}this.disableMouseAndKeyboard();if(aI.color_ring_id!=null){var R=120;var ad=40;aP=new ColorsDraw.ColorRing(aI.color_ring_id,R,ad)
}if(aI.playback_controls_id!=null){var Z=$("#"+aI.playback_controls_id);if(Z.length>0){Z.html('<div class="play-button" id="play-button"></div><div class="pause-button" id="pause-button"></div><div class="position-slider" id="position-slider"></div><div class="stop-button" id="stop-button"></div>');
var h=new Array(aI.controls_data_path+"play-up.png");var b=new Array(aI.controls_data_path+"play-up.png");var P=new CycleButton.button("play-button",32,32,h,b,"#f0f0f0","#808080");
P.setCallback(aJ);var h=new Array(aI.controls_data_path+"pause-up.png");var b=new Array(aI.controls_data_path+"pause-up.png");
var n=new CycleButton.button("pause-button",32,32,h,b,"#f0f0f0","#808080");n.setCallback(aW);var h=new Array(aI.controls_data_path+"stop-up.png");
var b=new Array(aI.controls_data_path+"stop-up.png");var p=new CycleButton.button("stop-button",32,32,h,b,"#f0f0f0","#808080");
p.setCallback(O);J=$("#position-slider",Z);J.slider({value:0,min:0,max:0,stop:function(a0,a2){j();if(!(ah==ColorsDraw.PainterUIHandler.OperationMode.IDLE||ah==ColorsDraw.PainterUIHandler.OperationMode.PLAYING||ah==ColorsDraw.PainterUIHandler.OperationMode.SEEKING)){J.slider("option","value",aw.getNumberMajorEvents());
return}var a1=a2.value;if(a1==0){}else{}var aZ=mPainter.seekToNumEvents(a1,am);if(aZ!=a1){a(ColorsDraw.PainterUIHandler.OperationMode.SEEKING);
aL=a1;I()}else{mPainter.tiggleCanvas();if(ah==ColorsDraw.PainterUIHandler.OperationMode.IDLE){a(ColorsDraw.PainterUIHandler.OperationMode.SEEKING)
}}}})}}if(aI.other_controls_id!=null){ao()}};ColorsDraw.PainterUIHandler.kOperationModeStrings=["IDLE","DRAWING","CONTROLS","ZOOM_IN","ZOOM_OUT","PANNING","TOGGLE_PANNING","PLAYING","SEEKING","EYE_DROPPER","UNDOING"];
ColorsDraw.PainterUIHandler.OperationMode={IDLE:0,DRAWING:1,CONTROLS:2,ZOOM_IN:3,ZOOM_OUT:4,PANNING:5,TOGGLE_PANNING:6,PLAYING:7,SEEKING:8,EYE_DROPPER:9,UNDOING:10};
ColorsDraw.BackgroundRenderer=function(g,l,f){var s=this;var a=g;var q=l;var c;var r;var n=f;var r;var m;var j;var b;var e=false;
var h=false;var k=false;var d=function(t){if(m[t]!=null){if(j!=null){m[t].call(j,s)}else{m[t](s)}}};var o=function(){var C=(new Date()).getTime();
var v;var w=false;var G=c.getCommandsInfo();var t=G.mNumCmds;var F=G.mDownloadedCmds;var x=G.mCommands;var B=r.mPosition;
if(B.mNextCmdIndex==b){w=true}else{if(t<=0){w=true}else{var z=b;if(z>F){z=F}do{var u=B.mNextCmdIndex;var E=u+n;if(E>z){E=z
}if(u<E){for(var A=u;A<E;A++){var y=x[A];var D=r.runCommandWithPositionUpdate(y);switch(D){case ColorsDraw.EventType.Stroke:case ColorsDraw.EventType.Flip:case ColorsDraw.EventType.LayerChange:d("mEventFn");
break}}v=(new Date()).getTime()}else{break}if(E==b){w=true}}while(!h&&!e&&!w&&(v-C)<a)}}if(w||e){k=true;d("mCompleteFn")}else{d("mTickFn");
setTimeout(o,q)}};var p=function(t){if("mContext" in t){j=t.mContext}else{j=null}m=t.mCallbacks};s.setCallbacks=function(t){p(t)
};s.setTimings=function(v,u,t){a=v;q=u;n=t};s.getPosition=function(){return r.mPosition};s.getEndPoint=function(){return b
};s.isComplete=function(){return k};s.getDrwHandler=function(){return c};s.getRenderState=function(){return r};s.startUsingRenderState=function(x,t,w,v,u){e=false;
h=false;k=false;b=x;c=w;p(v);r=t;if(u){setTimeout(o,q)}else{o()}};s.startWithRenderStateCopy=function(z,t,w,v,u){var x=new ColorsDraw.LayerMaker(ColorsDraw.ArrayBackedLayer);
var y=t.createCopy(x);s.startUsingRenderState(z,y,w,v,u)};s.stop=function(){e=true};s.pause=function(){h=true};s.resume=function(){if(!e&&!k){h=false;
o()}};s.makeCallbacksInfo=function(t,v,u,w){var x=new Object();if(w){x.mContext=w}x.mCallbacks=new Object();x.mCallbacks.mCompleteFn=t;
x.mCallbacks.mEventFn=v;x.mCallbacks.mTickFn=u;return x}};ColorsDraw.LayerMaker=function(b){var a=b;this.createLayer=function(e,c,g){var d=new a(e,c);
var f=d.mImageData;if(g){ColorsUtilities.fillImageData(f,0,0,0,0)}else{ColorsUtilities.fillImageData(f,255,255,255,255)}d.updateImageData();
return d}};ColorsDraw.NullLayer=function(b,a){var c=new Object();c.width=b;c.height=a;c.data=null;this.mImageData=c;this.updateImageData=function(d){};
this.readyForDisplay=function(){};this.freeLayer=function(){}};ColorsDraw.ArrayBackedLayer=function(b,a){var c=new Object();
c.width=b;c.height=a;if(typeof Uint8Array!="undefined"){c.data=new Uint8Array(b*4*a)}else{c.data=new Array(b*4*a)}this.mImageData=c;
this.updateImageData=function(d){};this.readyForDisplay=function(){};this.freeLayer=function(){}};ColorsDraw.CanvasBackedLayer=function(d,a){var b=document.createElement("canvas");
b.setAttribute("width",d);b.setAttribute("height",a);var c=b.getContext("2d");var e=c.createImageData(d,a);this.mCanvas=b;
this.mCanvasContext=c;this.mImageData=e;this.mDirtyRegion=new ColorsUtilities.Region();this.mEntireCanvasDirty=false;this.updateImageData=function(f){if(f){if(f.isValid()){this.mDirtyRegion.mergeRegion(f)
}}else{this.mEntireCanvasDirty=true}};this.readyForDisplay=function(){var j=this.mDirtyRegion;if(this.mEntireCanvasDirty){this.mCanvasContext.putImageData(this.mImageData,0,0)
}else{if(j.isValid()){var g=j.getMinX();var k=j.getMinY();var h=j.getWidth();var f=j.getHeight();if(g<0){h+=g;g=0}if(k<0){f+=k;
k=0}if(h>0&&f>0){this.mCanvasContext.putImageData(this.mImageData,0,0,g,k,h,f)}}}j.reset();this.mEntireCanvasDirty=false};
this.freeLayer=function(){}};ColorsDraw.DrwPosition=function(){this.mNextCmdIndex=0;this.mNumEvents=0;this.mNumStrokes=0;
this.set=function(a,c,b){this.mNextCmdIndex=a;this.mNumEvents=c;this.mNumStrokes=b};this.copyFrom=function(a){this.mNextCmdIndex=a.mNextCmdIndex;
this.mNumEvents=a.mNumEvents;this.mNumStrokes=a.mNumStrokes};this.isValid=function(){if(this.mNextCmdIndex>=0){return true
}return false};this.invalidate=function(){this.mNextCmdIndex=-1};this.compare=function(a){var b=this.mNextCmdIndex-a.mNextCmdIndex;
return b}};ColorsDraw.DrwHandler=function(){this.getCommandsInfo=function(){return null};this.getHeader=function(){return null
}};ColorsDraw.ExpandingDrwHandler=function(a){var d=this;var g=-1;var c=10000;var e=new ColorsDraw.DrwHeader();var b=null;
if(a){if(a>0){g=a;b=new Array(g)}}if(b==null){b=new Array(c)}var f=new Object();f.mCommands=b;f.mNumCmds=0;f.mDownloadedCmds=0;
f.mNumWrittenCmds=0;this.getCommandsInfo=function(){return f};this.getHeader=function(){e.numCommands=f.mNumCmds;return e
};this.fillFromHandler=function(k){var h=k.getCommandsInfo();var m=k.getHeader();e.valid=true;e.aspect=m.aspect;e.version=m.version;
e.initialVersion=m.initialVersion;e.SavedVersion=m.SavedVersion;e.setLayered(m.isLayered());var n=h.mNumCmds;var p=new Array(n);
var j=h.mCommands;for(var l=0;l<n;l++){var o=j[l];p[l]=o}b=p;f.mCommands=b;f.mNumCmds=n;f.mDownloadedCmds=n;f.mNumWrittenCmds=n
};this.addCommand=function(k){var j=f.mNumCmds;if(j>=b.length){if(g<0){for(var h=0;h<c;h++){b.push(0)}}else{return false}}b[j]=k;
j+=1;f.mNumCmds=j;f.mDownloadedCmds=j;f.mNumWrittenCmds=j;return true};this.setWritePosition=function(h){if(h>f.mNumWrittenCmds){return false
}f.mNumCmds=h;f.mDownloadedCmds=h};this.setLength=function(j){var h=f.mNumCmds;if(j<h){f.mNumCmds=j;f.mDownloadedCmds=j}};
this.setMaxCmds=function(h){g=h};this.maxCmds=function(){return g}};ColorsDraw.DetailsRepainter=function(p,o,l,E,ae,j,m,w,t,z){var F=this;
var n=null;var f=o;var e=null;var h;var g={mLowerThreshold:10,mUpperThreshold:10,mMiddleStepSize:10,mLongStrokeParts:3};var aa=1;
var ai=new Object();ai.mStrokeEndNextCmd=-1;ai.mStep=1;var O=null;var ad=p;var at=m;var x=w;var K=-1;var d=null;var aj;var J=new ColorsDraw.LayerMaker(ColorsDraw.CanvasBackedLayer);
var ac=null;var L;var Q=z;var v=E;var V=j;var I=ae;var Y=false;var ap=false;var X=false;var af=null;switch(ad.orientation){case ColorsDraw.Orientation.Normal:case ColorsDraw.Orientation.UpsideDown:ad.canvas_width=ad.width;
ad.canvas_height=ad.height;break;case ColorsDraw.Orientation.CounterClockwise:case ColorsDraw.Orientation.Clockwise:ad.canvas_width=ad.height;
ad.canvas_height=ad.width;break}var k=0.1;var am=ad.canvas_width/2;var al=ad.canvas_height/2;var U=ad.canvas_width/2;var S=ad.canvas_height/2;
var s=0;var r=0;var W=0;var T=0;var Z=0;var a=0;var N=0;var M=0;var y=-1;if(l>0){n=new ColorsDraw.Timeline(l);n.kSavedStateSpacing=4000;
n.mNextSaveCommandIndex=n.kSavedStateSpacing}var D=function(au){if(x){if(au in x){if("context" in x){x[au].call(x.context,F)
}else{x[au](F)}}}};var ar=function(){if(h==null){if(f.image){h=new ColorsUtilities.ImageSpinner2("download-spinner",f.image,f.frame_count,f.frame_width,f.frame_height)
}else{h=new ColorsUtilities.ImageSpinner(f.images_base,"download-spinner")}}if(h!=null){$("#download-spinner",v).css("display","inline");
h.start()}};var ak=function(){if(h!=null){h.stop();$("#download-spinner",v).css("display","none")}};var u=function(){var au=0;
var aw=am-U;var av=al-S;if(Math.abs(aw)<1){am=U;au+=1}else{am-=aw/2}if(Math.abs(av)<1){al=S;au+=1}else{al-=av/2}if(true){aw=s-W;
av=r-T;if(Math.abs(aw)<0.001){s=W;au+=1}else{s-=aw/2}if(Math.abs(av)<0.001){r=T;au+=1}else{r-=av/2}}else{s=W;r=T;au+=2}var ax=a-Z;
if(Math.abs(ax)<0.001){Z=a;au+=1}else{Z+=ax/4}if(au==5){ab()}if(K<0){H(L,e.mLayers,ad)}};var ab=function(){if(y>=0){window.clearInterval(y);
y=-1}};var G=function(){if(y<0){ab();y=window.setInterval(u,1000/60)}};var H=function(ay,aC,au){ay.setTransform(1,0,0,1,0,0);
ay.fillStyle="rgb(255,255,255)";ay.fillRect(0,0,au.canvas_width,au.canvas_height);var aw=am;var av=al;var az=au.width/2;var ax=au.height/2;
var aF=am;var aE=al;var aL=0;switch(ad.orientation){case ColorsDraw.Orientation.Normal:aL=0;break;case ColorsDraw.Orientation.UpsideDown:aL=Math.PI;
aF=au.width-am;aE=au.height-al;break;case ColorsDraw.Orientation.CounterClockwise:aL=Math.PI+Math.PI/2;var aM=az;az=ax;ax=aM;
aF=au.width-al;aE=am;break;case ColorsDraw.Orientation.Clockwise:aL=Math.PI/2;var aM=az;az=ax;ax=aM;aF=al;aE=au.height-am;
break}var aN=1;var aB=1;if(s>aN){s=aN}else{if(s<-aN){s=-aN}}if(r>aB){r=aB}else{if(r<-aB){r=-aB}}var aA=Z*au.canvas_width/2*s;
var aG=Z*au.canvas_height/2*r;var aH=aC.mMaxLayerNumber;for(var aK=aH;aK>=0;aK--){if(aK in aC){info=aC[aK];var aD=aH-aK;var aO=1+(Z*aD);
var aJ=aA*aD;var aI=aG*aD;ay.setTransform(1,0,0,1,0,0);ay.translate(aw+aJ,av+aI);ay.scale(aO,aO);ay.translate(-aw,-av);ay.translate(az,ax);
ay.rotate(aL);ay.translate(-au.width/2,-au.height/2);info.readyForDisplay();ay.drawImage(info.mCanvas,0,0)}}};var P=function(){var aI=e;
if(aI==null||d==null){return}var aD=aI.mPosition;var aJ=d.getCommandsInfo();var aF=aJ.mDownloadedCmds;var aw=aJ.mCommands;
for(var aC=0;aC<aa;aC++){var aB=-1;if(ai.mStrokeEndNextCmd>=0){aB=aD.mNextCmdIndex+ai.mStep;if(aB>=ai.mStrokeEndNextCmd){aB=ai.mStrokeEndNextCmd;
ai.mStrokeEndNextCmd=-1}}else{var aH=aD.mNextCmdIndex;while(aH<aF&&aB<0){var aA=aw[aH];var au=ColorsDraw.DrwCommand.getEventType(aA);
var ay=false;var aG=false;switch(au){case ColorsDraw.EventType.Stroke:var av=aH-aD.mNextCmdIndex;if(av>g.mUpperThreshold){var ax=av/g.mLongStrokeParts;
ax=ax|0;ax+=1;ai.mStrokeEndNextCmd=aH+1;ai.mStep=ax;aB=aD.mNextCmdIndex+ai.mStep}else{if(av>g.mLowerThreshold){ai.mStrokeEndNextCmd=aH+1;
ai.mStep=g.mMiddleStepSize;aB=aD.mNextCmdIndex+ai.mStep}else{aB=aH+1}}break;case ColorsDraw.EventType.Flip:aB=aH+1;break}aH++
}}if(aB>aF||aB<0){aB=aF}if(aB>aD.mNextCmdIndex+200){aB=aD.mNextCmdIndex+200}if(aB>aD.mNextCmdIndex){while(aD.mNextCmdIndex<aB){var az=aw[aD.mNextCmdIndex];
var aE=aI.runCommandWithPositionUpdate(az);if(n){if(aE==ColorsDraw.EventType.Stroke){if(aD.mNextCmdIndex>n.mNextSaveCommandIndex){if(aI.mUsers.allPensUp()){n.addSavedState(aD,aI.mLayers,aI.mUsers);
n.mNextSaveCommandIndex=aD.mNextCmdIndex+n.kSavedStateSpacing}}}}}}else{break}}if(aI.mUsers.getCurrentUserDrawState().penDown){aI.doPartStrokeRender()
}H(L,aI.mLayers,ad);if(!X){if(V){$(V).slider("value",aD.mNextCmdIndex)}}if(aD.mNextCmdIndex>=aJ.mNumCmds){R();Y=false;D("playbackComplete")
}};var ah=function(au){if(au!=af){return}ak();af=null;if(!e.mUsers.allPensUp()){e.doPartStrokeRender()}H(L,e.mLayers,ad);
if(ap){B()}};var b=function(av){if(av!=af){return}var au=e.mPosition;if(au.mNextCmdIndex>n.mNextSaveCommandIndex){if(e.mUsers.allPensUp()){n.addSavedState(au,e.mLayers,e.mUsers);
n.mNextSaveCommandIndex=au.mNextCmdIndex+n.kSavedStateSpacing}}};var ag=function(ay){if(af!=null){af.stop();af=null}else{if(K>=0){ap=true
}else{ap=false}}R();var ax=false;var aw=d.getCommandsInfo();if(ay>aw.mNumCmds){ay=aw.mNumCmds}var aA=false;var av=e.mPosition;
var aB=false;var au=new ColorsDraw.DrwPosition();if(n){if(n.findClosestPosition(ay,au)){if(av.mNextCmdIndex<=ay&&av.mNextCmdIndex>au.mNextCmdIndex){ax=true
}else{n.fillOutClosestPosition(ay,au,e.mLayers,e.mUsers,e)}aA=true}}if(!aA){if(av.mNextCmdIndex<=ay){ax=true}else{aB=true
}}if(aB){e.zeroState();au.set(0,0,0)}if(!ax){e.mPosition.copyFrom(au);e.updateLastStrokeBuffers();e.mUsers.resetAllDrawStates();
e.mUsers.zeroAllUsersOpacities()}af=new ColorsDraw.BackgroundRenderer(1000/2,0,500);var az=af.makeCallbacksInfo(null,null,null);
af.startUsingRenderState(ay,e,d,az);if(af.isComplete()){ah(af)}else{if(n){az=af.makeCallbacksInfo(ah,b,null)}else{az=af.makeCallbacksInfo(ah,null,null)
}af.setTimings(1000/20,0,400);af.setCallbacks(az);ar()}};F.seekTo=function(au){if(d.state!=ColorsDraw.DrwDownloader.ReadyState.DownloadComplete){return
}if(au<0){au=0}else{var av=d.getCommandsInfo();if(au>av.mNumCmds){au=av.mNumCmds}}if(V){$(V).slider("value",au)}ag(au)};F.getPosition=function(){if(d.state!=ColorsDraw.DrwDownloader.ReadyState.DownloadComplete){return 0
}return e.mPosition.mNextCmdIndex};var C=function(ay,aw){if(ay!=d){return}var ax=ay.state;switch(ax){case ColorsDraw.DrwDownloader.ReadyState.NotStarted:break;
case ColorsDraw.DrwDownloader.ReadyState.WaitingFileSize:break;case ColorsDraw.DrwDownloader.ReadyState.WaitingHeader:break;
case ColorsDraw.DrwDownloader.ReadyState.ReadingBody:ak();aj=d.getHeader();var av=aj.aspect;var az=aj.isLayered();az=true;
e=new ColorsDraw.RenderState(ad.width,ad.height,av,at.mBrushesTable,false,az,ad.orientation,J);e.createLayer(0);e.enablePartStrokeRendering();
if(V!=null){var au=d.getCommandsInfo();$(V).progressbar({value:0})}if(Y){ai.mStrokeEndNextCmd=-1;B()}break;case ColorsDraw.DrwDownloader.ReadyState.DownloadComplete:if(V!=null){var au=d.getCommandsInfo();
$(V).progressbar("destroy");$(V).slider({value:e.mPosition.mNextCmdIndex,min:0,max:au.mNumCmds,start:function(aA,aB){X=true
},stop:function(aA,aC){X=false;var aB=aC.value;ag(aB)}})}D("downloadComplete");break;case ColorsDraw.DrwDownloader.ReadyState.Stopped:d=null;
break;case ColorsDraw.DrwDownloader.ReadyState.Errored:d=null;break}};var A=function(aw){if(aw!=d){return}if(V==null){return
}var au=d.getCommandsInfo();if(au.mNumCmds>0){var av=au.mDownloadedCmds/au.mNumCmds;av*=100;$(V).progressbar("value",av)}};
var R=function(){if(K!=-1){window.clearInterval(K);K=-1}};var B=function(){R();K=window.setInterval(P,0|(1000/30))};this.setMouseDownLayerScaling=function(au){k=au
};this.isPlaying=function(){return Y};this.getTickMultiplier=function(){return aa};this.setTickMultiplier=function(au){aa=au
};this.totalCommands=function(){var av=0;if(d){var au=d.getCommandsInfo();av=au.mNumCmds}return av};this.playPauseAction=function(){if(K!=-1){R();
Y=false}else{ai.mStrokeEndNextCmd=-1;Y=true;if(e!=null){var au=d.getCommandsInfo();if(e.mPosition.mNextCmdIndex>=au.mNumCmds){e.zeroState();
H(L,e.mLayers,ad)}B()}}};this.tidyUp=function(){if(O!=null){O.tidyUp();O=null}R();Y=false;if(h!=null){h.stop();h=null}if(af!=null){var au=af;
af=null;au.stop()}e=null};var ao=function(au){U=ad.canvas_width/2;S=ad.canvas_height/2;W=0;T=0;a=0;G();$(document).unbind("mouseup",ao);
$(document).unbind("mousemove",q)};var q=function(au){var aA=$(v).offset();var az=au.pageX-aA.left;var ax=au.pageY-aA.top;
var ay=az-N;var aC=ax-M;var aE=ay/(ad.canvas_width/4);var aD=aC/(ad.canvas_height/4);var aw=false;var av=false;if(aE<0){aw=true;
aE=-aE}if(aD<0){av=true;aD=-aD}if(aE>2){aE=1}else{var aB=Math.pow(aE,2)/4;aE=aE-aB}if(aD>2){aD=1}else{var aB=Math.pow(aD,2)/4;
aD=aD-aB}aE=(aw?-aE:aE);aD=(av?-aD:aD);s=W=aE;r=T=aD;if(K<0&&y<0&&e!=null){H(L,e.mLayers,ad)}};var c=function(aw){if(aw.button==0){var ax=$(v).offset();
var av=aw.pageX-ax.left;var au=aw.pageY-ax.top;N=av;M=au;U=ad.canvas_width/2;S=ad.canvas_height/2;$(document).mousemove(q);
$(document).mouseup(ao);a=k;G()}};var ae=I;var aq=ad;var an='<canvas id="gallery-canvas" width="'+aq.canvas_width+'" height="'+aq.canvas_height+'"></canvas>';
if(aq.link_to){an='<a id="gallery-link" href="'+aq.link_to+'">'+an+"</a>"}v.innerHTML='<div id="_repainter-containing-div" style="position:relative;top:0px;left:0px;">'+an+'<div id="download-spinner" style="position:absolute; top:'+(aq.canvas_height/2-10)+"px; left:"+(aq.canvas_width/2-10)+'px;"></div></div>';
ac=$("#gallery-canvas",v).get(0);L=ac.getContext("2d");L.drawImage(ae,0,0,aq.canvas_width,aq.canvas_height);ar();if(t){$(v).mousedown(c)
}if(ad.drw_downloader){d=ad.drw_downloader}else{if(at.mDrwCache!=null){d=at.mDrwCache.getDownloader(ad.drw)}else{d=new ColorsDraw.DrwDownloader(ad.drw);
if(ColorsUtilities.disableCachingOfDrw()){d.cacheDrwFile=false}}}d.startDownload(C,A)};ColorsDraw.ColorsEnvironment=function(c,g,h){var e=this;
var a=h;e.mBrushesTable=null;e.mError=null;e.mDrwCache=null;if(g>0){e.mDrwCache=new ColorsDraw.DrwCache(g)}var f=function(j){if(a){if(j in a){if("context" in a){a[j].call(a.context,e)
}else{a[j](e)}}}};var d=function(l,j,k){if(k){e.mError=k;f("errored");return}e.mBrushesTable=j;f("ready")};var b=new ColorsDraw.BrushesTableMaker(c+"bristle-brush-intensities.b64",c+"brush-tables.b64",d);
this.isReady=function(){return(e.mBrushesTable!=null)}};
