pacman-contribution-graph
Version:
Generates a pacman game from a github or gitlab user contributions grid
1 lines • 175 kB
JavaScript
var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{rd:()=>Ao,_B:()=>co,Hr:()=>Le,Lc:()=>cn,jg:()=>lo,b9:()=>wn,qV:()=>Zn,P4:()=>b,Cf:()=>Gi,rn:()=>xi,OJ:()=>ro,U9:()=>C,Jb:()=>E,eq:()=>B,U0:()=>k});const n=20,i=53,o=200,a={github:{textColor:"#57606a",gridBackground:"#ffffff",wallColor:"#000000",intensityColors:["#ebedf0","#9be9a8","#40c463","#30a14e","#216e39"]},"github-dark":{textColor:"#8b949e",gridBackground:"#0d1117",wallColor:"#ffffff",intensityColors:["#161b22","#0e4429","#006d32","#26a641","#39d353"]},gitlab:{textColor:"#626167",gridBackground:"#ffffff",wallColor:"#000000",intensityColors:["#ececef","#d2dcff","#7992f5","#4e65cd","#303470"]},"gitlab-dark":{textColor:"#999999",gridBackground:"#1f1f1f",wallColor:"#ffffff",intensityColors:["#2a2a3d","#4a5bdc","#2e3dbf","#1b2e8a","#0f1a4e"]}},s=(t,e)=>Math.floor((e.getTime()-t.getTime())/6048e5),r=t=>new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())),l=t=>{const e=r(new Date),n=(t=>t.contributions.reduce(((t,e)=>{const n=r(new Date(e.date));return void 0===t||n>t?n:t}),void 0))(t);return n&&n>e?n:e},A=t=>{var e;return null!==(e=a[t.config.gameTheme])&&void 0!==e?e:a.github},c=t=>{switch(t){case"NONE":default:return 0;case"FIRST_QUARTILE":return 1;case"SECOND_QUARTILE":return 2;case"THIRD_QUARTILE":return 3;case"FOURTH_QUARTILE":return 4}},d=(t,e)=>{const n=e/4;return 0===t?"NONE":t<n?"FIRST_QUARTILE":t<2*n?"SECOND_QUARTILE":t<3*n?"THIRD_QUARTILE":"FOURTH_QUARTILE"},h=t=>{const e=l(t),n=new Date(e);n.setUTCDate(e.getUTCDate()-365),n.setUTCDate(n.getUTCDate()-n.getUTCDay());const i=Array.from({length:53},(()=>Array.from({length:7},(()=>({commitsCount:0,color:A(t).intensityColors[0],level:"NONE"})))));t.contributions.forEach((o=>{const a=r(new Date(o.date));if(a<n||a>e)return;const l=a.getUTCDay(),d=s(n,a);if(d>=0&&d<53){const e=A(t);i[d][l]={commitsCount:o.count,color:e.intensityColors[c(o.level)],level:o.level}}})),t.grid=i},u=A,g=h,m=t=>{const e=l(t),n=new Date(e);n.setUTCDate(e.getUTCDate()-365),n.setUTCDate(n.getUTCDate()-n.getUTCDay());const o=s(n,e)+1,a=Array(o).fill("");let r="";for(let t=0;t<o;t++){const e=new Date(n);e.setUTCDate(e.getUTCDate()+7*t);const i=e.toLocaleString("default",{month:"short"});i!==r&&(a[t]=i,r=i)}t.monthLabels=o>i?a.slice(o-i):a},f=t=>(h(t),t.grid);var p=function(t,e,n,i){return new(n||(n=Promise))((function(o,a){function s(t){try{l(i.next(t))}catch(t){a(t)}}function r(t){try{l(i.throw(t))}catch(t){a(t)}}function l(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,r)}l((i=i.apply(t,e||[])).next())}))};const y=t=>p(void 0,void 0,void 0,(function*(){var e,n;const i=[];let o=!1,a=1;do{try{const s={};(null===(e=t.config.githubSettings)||void 0===e?void 0:e.accessToken)&&(s.Authorization="Bearer "+t.config.githubSettings.accessToken);const r=yield fetch(`https://api.github.com/search/commits?q=author:${t.config.username}&sort=author-date&order=desc&page=${a}&per_page=100`,{headers:s}),l=yield r.json();o=!l.items||0===l.items.length,i.push(...null!==(n=l.items)&&void 0!==n?n:[]),a++}catch(t){o=!0}}while(!o);const s=Array.from(i.reduce(((t,e)=>{var n,i,o,a;const s=null===(i=null===(n=e.commit.author)||void 0===n?void 0:n.date)||void 0===i?void 0:i.split("T")[0],r=(null===(a=null===(o=e.commit.committer)||void 0===o?void 0:o.date)||void 0===a?void 0:a.split("T")[0])||s,l=(t.get(r)||{count:0}).count+1;return t.set(r,{date:new Date(r),count:l,color:"",level:"NONE"})}),new Map).values()),r=Math.max(...s.map((t=>t.count)).filter((t=>t>0)));return s.map((e=>{const n=d(e.count,r),i=A(t);return{date:new Date(e.date),count:e.count,color:i.intensityColors[c(n)],level:n}}))})),x=t=>p(void 0,void 0,void 0,(function*(){var e;const n=yield fetch("https://api.github.com/graphql",{method:"POST",headers:{Authorization:`Bearer ${null===(e=t.config.githubSettings)||void 0===e?void 0:e.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify({query:"\n\t\tquery ($login: String!) {\n\t\t\tuser(login: $login) {\n\t\t\t\tcontributionsCollection {\n\t\t\t\t\tcontributionCalendar {\n\t\t\t\t\t\tweeks {\n\t\t\t\t\t\t\tcontributionDays {\n\t\t\t\t\t\t\t\tdate\n\t\t\t\t\t\t\t\tcontributionCount\n\t\t\t\t\t\t\t\tcolor\n\t\t\t\t\t\t\t\tcontributionLevel\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t",variables:{login:t.config.username}})});if(!n.ok)throw new Error(`GitHub GraphQL request failed: ${n.status} ${n.statusText}`);return(yield n.json()).data.user.contributionsCollection.contributionCalendar.weeks.map((t=>t.contributionDays)).reduce(((t,e)=>t.concat(e)),[]).map((e=>{const n=e.contributionLevel,i=A(t);return{date:new Date(e.date),count:e.contributionCount,color:i.intensityColors[c(n)],level:n}}))}));const v=t=>{return e=void 0,n=void 0,o=function*(){const e=yield fetch(`https://v0-new-project-q1hhrdodoye-abozanona-gmailcoms-projects.vercel.app/api/contributions?username=${t.config.username}`),n=yield e.json(),i=Object.entries(n).map((([t,e])=>({date:new Date(t),count:Number(e),color:"",level:"NONE"}))),o=Math.max(...i.map((t=>t.count)).filter((t=>t>0)));return i.map((e=>{const n=d(e.count,o),i=A(t);return{date:new Date(e.date),count:e.count,color:i.intensityColors[c(n)],level:n}}))},new((i=void 0)||(i=Promise))((function(t,a){function s(t){try{l(o.next(t))}catch(t){a(t)}}function r(t){try{l(o.throw(t))}catch(t){a(t)}}function l(e){var n;e.done?t(e.value):(n=e.value,n instanceof i?n:new i((function(t){t(n)}))).then(s,r)}l((o=o.apply(e,n||[])).next())}));var e,n,i,o},b=["github","gitlab","scenario"],C=["full","empty","random","checkerboard","gradient","streaks"],w=53,B=t=>C.includes(t),k=t=>{const e=""===t||void 0===t?"random":t;if(!B(e))throw new Error(`Unknown scenario "${e}". Available scenarios: ${C.join(", ")}`);return e},E=t=>{const e=k(t);return{name:e,contributions:Q(M(e))}},M=t=>{switch(t){case"empty":return R();case"full":return U(8);case"checkerboard":return I({low:0,high:10});case"gradient":return D({min:0,max:12});case"streaks":return T();default:return S({density:.5,min:1,max:8})}},R=()=>Array.from({length:w},(()=>Array(7).fill(0))),U=t=>Array.from({length:w},(()=>Array(7).fill(H(t)))),S=({density:t,min:e,max:n})=>{const i=G(t,0,1),o=H(e),a=Math.max(o,H(n))-o+1;return Array.from({length:w},((t,e)=>Array.from({length:7},((t,e)=>Math.random()>=i?0:o+Math.floor(Math.random()*a)))))},I=({low:t,high:e})=>{const n=H(t),i=H(e);return Array.from({length:w},((t,e)=>Array.from({length:7},((t,o)=>(e+o)%2==0?i:n))))},D=({min:t,max:e})=>{const n=H(t),i=Math.max(n,H(e));return Array.from({length:w},((t,e)=>Array.from({length:7},((t,o)=>{const a=e/52,s=o/6;return Math.round(n+(i-n)*(.75*a+.25*s))}))))},T=()=>{const t=R();return O(t,{day:1,startWeek:2,length:10,count:6}),O(t,{day:3,startWeek:18,length:12,count:10}),O(t,{day:5,startWeek:38,length:10,count:14}),O(t,{day:0,startWeek:43,length:6,count:4}),O(t,{day:6,startWeek:43,length:6,count:4}),V(t,{startWeek:8,length:2,startDay:1,endDay:5,count:8}),V(t,{startWeek:27,length:1,startDay:0,endDay:6,count:12}),V(t,{startWeek:49,length:1,startDay:2,endDay:6,count:16}),N(t,{startWeek:5,startDay:0,length:9,count:7}),N(t,{startWeek:30,startDay:6,length:8,count:11,direction:-1}),t},O=(t,{day:e,startWeek:n,length:i,count:o})=>{const a=G(H(e),0,6),s=G(H(n),0,52),r=H(i),l=H(o);for(let e=s;e<Math.min(w,s+r);e++)t[e][a]=Math.max(t[e][a],l)},V=(t,{startWeek:e,length:n,startDay:i,endDay:o,count:a})=>{const s=G(H(e),0,52),r=H(n),l=G(H(i),0,6),A=G(H(o),l,6),c=H(a);for(let e=s;e<Math.min(w,s+r);e++)for(let n=l;n<=A;n++)t[e][n]=Math.max(t[e][n],c)},N=(t,{startWeek:e,startDay:n,length:i,count:o,direction:a=1})=>{const s=G(H(e),0,52),r=G(H(n),0,6),l=H(i),A=H(o);for(let e=0;e<l;e++){const n=s+e,i=r+e*a;n>=w||i<0||i>=7||(t[n][i]=Math.max(t[n][i],A))}},Q=t=>{const e=F(new Date);e.setUTCDate(e.getUTCDate()+(6-e.getUTCDay()));const n=new Date(e);n.setUTCDate(e.getUTCDate()-365),n.setUTCDate(n.getUTCDate()-n.getUTCDay());const i=Math.max(0,...t.flat()),o=[];for(let e=0;e<w;e++)for(let a=0;a<7;a++){const s=new Date(n);s.setUTCDate(n.getUTCDate()+7*e+a);const r=t[e][a];o.push({date:s,count:r,color:"",level:Y(r,i)})}return o},Y=(t,e)=>{if(0===t||0===e)return"NONE";const n=e/4;return t<n?"FIRST_QUARTILE":t<2*n?"SECOND_QUARTILE":t<3*n?"THIRD_QUARTILE":"FOURTH_QUARTILE"},F=t=>new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())),H=t=>{if(!Number.isFinite(t)||t<0)throw new Error(`Scenario counts must be non-negative numbers. Received: ${t}`);return Math.floor(t)},G=(t,e,n)=>Math.max(e,Math.min(n,t));var j=function(t,e,n,i){return new(n||(n=Promise))((function(o,a){function s(t){try{l(i.next(t))}catch(t){a(t)}}function r(t){try{l(i.throw(t))}catch(t){a(t)}}function l(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,r)}l((i=i.apply(t,e||[])).next())}))};const K=t=>j(void 0,void 0,void 0,(function*(){switch(t.config.platform){case"gitlab":return yield v(t);case"github":return yield(t=>p(void 0,void 0,void 0,(function*(){var e;return(null===(e=t.config.githubSettings)||void 0===e?void 0:e.accessToken)?yield x(t):yield y(t)})))(t);case"scenario":return yield(t=>j(void 0,void 0,void 0,(function*(){return E(t.config.scenario).contributions})))(t);default:throw new Error(`Unsupported platform: ${t.config.platform}`)}})),J={NONE:0,FIRST_QUARTILE:.05,SECOND_QUARTILE:.1,THIRD_QUARTILE:.18,FOURTH_QUARTILE:.28},P=12,L={blastRange:{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAbUExURdAAADCgWHAYAPh4APjIAPj4+BgYGPgoAP///+PC664AAAABYktHRAiG3pV6AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAB3RJTUUH6gUdCQIvh672IgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNi0wNS0yOVQwODoyMDo0OSswMDowMFodDlQAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjYtMDUtMjlUMDg6MjA6NDArMDA6MDC+2PM7AAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDI2LTA1LTI5VDA5OjAyOjQ3KzAwOjAwrWVcEwAAAGVJREFUCNc9zsENgDAMA8CECZpMACkwACoLtBYTlAkQrMD6KCDq10l+2ER/WERl0OCIlmNPLJbGXHpiXSvgiDvqi2mrp6NLP9BQga+arwtLoC7l+3BwhKUyBGIdUUx8S81EQnvxAGrnE5e2ebHeAAAAAElFTkSuQmCC"},speed:{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAtUExURQAAANAAADCgWBgYGHAYAGiIoPj4+JC48ABg+ChAMPjIAPh4APgoAFBoeP///3UmhZMAAAABdFJOUwBA5thmAAAAAWJLR0QOb70wTwAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oFHRMBD4Zco48AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjYtMDUtMjlUMTA6NTQ6NTUrMDA6MDC2y+NcAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDI2LTA1LTI5VDA4OjIwOjQwKzAwOjAwvtjzOwAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyNi0wNS0yOVQxOTowMToxNSswMDowMAQiGSsAAABsSURBVAjXY2CAAUEoYBBSUjJxcXFWBDFM0yMmgxjKq/ZAGEoWHagiysZQEcuy9HIQQ3h6enlpR6chg3C7cWiH8UxDBuHJqywnr7I0ZBCyurnY6uZiEGPmZquZm0HaVxsprzYCGWispGSspAgAoLgj6HdswdIAAAAASUVORK5CYII="},bombCapacity:{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAeUExURdAAADCgWBgYGChAMFBoePj4+PgoAGiIoJC48P///8UaA3MAAAABYktHRAnx2aXsAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAB3RJTUUH6gUdFRYQClpWXgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNi0wNS0yOVQxMDo1NDo1NSswMDowMLbL41wAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjYtMDUtMjlUMDg6MjA6NDArMDA6MDC+2PM7AAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDI2LTA1LTI5VDIxOjIyOjE2KzAwOjAwoPP3wgAAAGtJREFUCNc9ju0JgDAMRJNOEJ2gXnWBphPYgBuIcxTFCcS1xfpxvx4HxzuiL9y0QAchbqF9nD0x0rgNRYjDURZAyKWl7Dl6ctOZe4UnZ6tFVDDLtUlmGm8IliswVPWeM4ICjwJAJ6+0kf/FBY3+EmtiU+0fAAAAAElFTkSuQmCC"},bombKick:{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUHBwfQAAD4+Pj4yABwGAAYGBgwoFj4eAD4KAAoQDBQaHhoiKCQuPAAYPjYsJCYcFDn587QOADQaACQMABgAAAxGCm9OHP/ee//vv///+dzvq05cXv/AAB/AAAAAAAYEVbmAAAAH3RSTlP///////////////////////////////////////8AzRl2EAAAAH5JREFUeJxdz1EOwzAIA9AGY4PI1Psfd3LVdtL8k+SJEHKsO7zXY4kkxaCcdSwyNp/zBfuzh5TqgdkzhPC7MkMCpYL4NEUBgHgavE8ySzzDICAz0OQZBhewATTjAlewG6ie2AagLFWd269USRC7u5qew+OUxOzOF5zrj4a/fAF4DgSeMuBtyAAAAABJRU5ErkJggg=="}},z={player:{idleDown:{width:16,height:21,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAVCAYAAABPPm7SAAABgklEQVR42o1UIW/CQBh91yAmJ7v+g5OcY8kMsssExUFCliCxzTKBRCykFjWGIEECgjCBaEKWtO6Q9w/YSZKZuU5AL71y7folJ+679959330vR2CIuk0TU/4gBUFZ1G2a1G2aTHfLJPn51tZ0t0zS80Jyh22viPnVYVtNxErJ1Amw2DP8F4s9A3UC1aaVHjTfflE1stha/lA+eKVk+2ul7Wt5sv1+B/YkwDdUA6Y5+eABYx/aGwDApDes3EIWqwSoE1QWyGJJdoyD+QiPL+VC27GPSW+oTEXyXqBOoF6537gHAHzEEQAgfL2BOPqaI0kVC5dZ2sqS+YZiMB+pPrvtCN12pHoezEfgGwqjE3nLA2YU/TUvvLm/5sCMgrc8JaJ8IOMQdqMJGYcAAHH0sXg+e4EthRGjteDKE2QcwpWnwgpMGKLKB8DWK23O7DIFfpmCOJ4dmMVb2Rs+7VsdGEdX5BSjVZBPFrVhwtUOUhAX1yL57yvvEVeecJCCEBOg6O8zYf4AxGvpYTg/OGAAAAAASUVORK5CYII="},walkDown0:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABiUlEQVR42p1Uv2vCQBT+LmTo2PGa/+CNuS2CFBxbHIybAZeOrqFTR4ci6dipKkVwtIvYwaFQCrol4/0HNpuFLm7XQS8mMU2tDw7C996X9+N7dww5szkpFFgUS1aEw+akbE6qP58o9f2ZOf35RGn/AaklZgeE/GmJWUJmNidFVoDxu8Ax5l2GkCsfBgDU7jc41nSsmQbjqltK4h8vybeZJvGnC4i6RDilDEFjcdUFej4AbEs9xU4mMi1HZ9TF9W1QGjzr+Xhs3yGKJWNpLTujbilRk5KMZav22+pletTTJCuA11zAay5AVpDxZeSwOalwShisPZB1BuFU9lI4FWAZYLDeIJyOIepQUSyZme8BAORkn0HU5RZrAzeprIbNSYUNFxjS3w0OCWHDhc1JmXkfWQGEU8HD826pm0C4XECu/GIdi8hAMSmjY3pIuq/0tEVdZl4BI6/jYO0dtKaxdGVJqa/8HNypbW/K8g1X8RcAoAiPYskM/RftLL2Puxibk2L/WbfS4RyzpwDwA3eo2etvVgkzAAAAAElFTkSuQmCC"},walkDown1:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABkElEQVR42p2UsUvDQBTGf1c6OHY88x/cmGwVRHBUOthuDbg4ugZxcHSQEsdOtiKCY3Uo7eAgiNBuccx/ULNVcHE7h/bSXBrb6oOD8N378t5977sT5MKVSlMQ70ksinBcqbQrle4897T++rBW57mnzf4SqekNlgj51fQGKVm4UmnlhDy8emwS/l5EPAkoAexffbNpmNxyFkx26ytJ8u0x/S5nSfJmG68WE/WVRTBYsluHVgAwa/U/UQJ4Od/amGByhRnH6f0lh2fhStKgFdA+vuA9iYXIzlI5YaraSXUHgO54lFaKJ0HqILHOar9ZzxLHqKmcEL8xwm+MUE5o7VniuFLpqK/oTn2UE+LN2wTwqjszbD4S05llgPbxBQBxb1HBq8XF43Cl0kNZgVu1/oC3iuiojiuVLuf3TKvXd3NTNyAaj4gngZUnihQ1gpjIk6w5ZkXKn8tg2VeglJ9jd+ovHa0IS1sdygqyuj+7KeMXDpJPALK49/S4aNVUio7su2iShrJi4eaH4i92WynOJj4F+AFlodcPvNujWwAAAABJRU5ErkJggg=="},walkDown2:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABf0lEQVR42qVUMU8CMRT+ShgcGev9g47X7UiICSPEgWPjEjf/wcU4ODoYU0Ymwbg4IgOBgYHE5diOsf8Au0Hi4mQdzh70OOHUlzRpXt/X9/q9rw/IMZcy7VKmccBIHigvcKkkwaEs/dlQ6/c3a/VnQ51bhUuZ7vDJHiC7OnySgolLmWaOwPMrRxELzmLIVYgSANTvPlDUTGwJf7Ry1qFq/mHEfbgPVDUf9OEU/FwiHjMr3vialwI9U+r8+uTXpZaWShK5CjFYRIUADbXBUklCdnvJHIHu5+1RkCW5Y9rMSs9qhyGEOQJBO0LQjsAcYZ2lbzTZ4jHDYB2AOQLcq27Z9KqJ75tVU1najsE6QO/iBgAgh9sM/FwmGVs+8AgA0lZO80r8Tznmjd2npNygDcSLCHwUWuRYrMatRG589JKSAgByFe6xWjagKa2kh1NaQWMnOG75UIs5GmpjswoA1Ksjb28upF4dU1qB9ZFNgAFkb/9xWO2CjbSOqYcUmXB5k+4LCXHPPa24MKoAAAAASUVORK5CYII="},walkDown3:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABeklEQVR42p1UIU/DQBh910wgK4/9g5Ot2xKyZHJkYpujCYagsBUIfgCiyCk2gpksCELFRJOZ1bXy/kF3jiUY3E2UK72228q+5NLm+r1+73vfuwNKYVEmLcokjoRRBgXUREBNHAOTMnBfYiI4qf2gKM6WvpTfG23Nlr6sbcGiTF7ZnxVAeXl3XzmYWJRJ1vawWNloEk4vBk/dTJz+4w+ahso1cGKcDGzVbYqL8V7AJYCpAob3Z7hZ/YHo8znsIUf8wTSQPeQIqJlRTQQnPHUxj9aNKA7EFongxFCumF4/wOnFWdXbjZ79wvI95aDGlitbzyiCVE+s7cGZrOFMMvoBNRGPxpr5jXLzAGB3uloV2ulrz8o44lE2Btvv5ooufEBEIWinDxGFugHUOVQRUDOvrpS0398wENuqc4o01PvT6xzOZA3W9iritA4pGP/OlqcuAmpqFQ8Ceerm1IvqJ4ITouQNqJlTFFGo/b32dCjOxcRjoERw8i/nFC+sHSx90I3EuUDEAAAAAElFTkSuQmCC"},walkRight0:{width:16,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAABZ0lEQVR42p2UPU8CMRyHnxIHRsdy36Cb53YkLIw4CZskxoTBOOtAoh/A4VYmwM2RyejAwAgbN943gG6SuLjVRbB3XMvhL2ly7eX//rSCAoVSmaLzRKcifyZsg0SnIpTKqCCm+fwNQC+qAzBezBlcP+07CqUy5u7RrM8iE0plrs7fzWg6MeZrXbhG04mxM6wA6MWMlt5gR3apF9VRQbzLupLoVLT0BmAvbZfsICd27T4j3Wjvvi+AgV3CIelGGzms0dIb5LCGHNbA52C8mFNWGQezfpVjJfIAFTGQ7wFAS29IdCqEi0LXSGf9KunqYQeTcKXmm4pNoncKKogBWL4pALqdub+JZdTtzNlD2aV09ZDZv07q3N/0/pHBi2J52T7MgasHmRJue24ODk1CBXFmhKVK2E5g25P8q1RxRd5GH392vVkJ388PeYqMmn84/z48NlAVH3m2cdE+lMqIsvi6kBbH3oP8XfgBu12xmgbSwmIAAAAASUVORK5CYII="},walkRight1:{width:16,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAABdklEQVR42p1UIW/CQBh9RyaQyGv/wbm1riQYZJcJihvJsqRqegiS7QdM1KKAuUk2QYZAIIuj8v4BnGwyM3cTW7truWvLXtKkvfS+733vvTsCDRzKpG49EZyU14i6IRGcOJRJZkfoP38BAEKvCwBY7GJMb59OCzmUSXn/KI+XnnQokzfuh5xvllJ+HrXPfLOUKsMWAIjdFr5IoXY2IfS6YHaUs24lghNfpABwQtsEtcmFOnvVJtEL8vcrAFN1hDqIXgA6s+CLFHRmgc4soKrAYhejKQoFtpM2zgUpB0iXgbIGAOCLFInghJhSaLJ0O2mDH8Z5mIiJWpUrahIrXWB2BADYrxgAYDSMq0VsgtEwxkmUTeCHceH7ddnFw134DwYvDPtBUJ8DnQbMjuC+v/1oMQjgXnNzDuqcYHZUsLDRCJkDOk2MDLLO+xUrUF7TTiGF2iirP1Ov/xfl30tnTTvI7o9ClMvz6lTPxKw8TOeESnuYmhRSXfgGrX26OKISwJ0AAAAASUVORK5CYII="},walkRight2:{width:15,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAXCAYAAADUUxW8AAABgElEQVR42qVULW/DMBB9jgoGC93+A7MlLJVKClsFNHBgpOovWDQN9AcMlA5MbcYG24JqBQWFDUug/0FiGGlkzAOZXTcfSqU9yVLs0927e/cUAgA2ZRIAEsGJ+i4jEZyU34hNmYynPkR0wljkYP0lRq8/AICZOwAAhNEZb4+LahGbMpndu9KmTD44X3J93Ej5ndWe9XEjzc6sRHBSZmzCzB2A9Zd6TEsFyq02wSSwcCPC6Awx9DF5Xuq3TluSGPoAgAkAuuoVj17eziyGPuiqh7HIL4kGdPLp5U63dysstTueBrpAYyfzDGKeXUxiBtUKzLWZAj1ZC/A00EapWK7JnnU2tZqCrF8wxnsG814rWBOz43HEe4bP97ASr8x8oF2MRV7bcjwtdu7stkgEJzc7rA6NgqkZnT+vx9EZPA2utOnUJRYihXA8DkRFEZ4GONAuAOixOuV5lQ0dj+skADrRxBUzdUfAhxKH6b+LCfNOyvIrRfWqdtt2wdqcVWemf9nzF67Fws06Dc9qAAAAAElFTkSuQmCC"},walkRight3:{width:15,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAXCAYAAADUUxW8AAABf0lEQVR42pWUr27CUBjFf20qkJMX3uDK1kEyg2RBgBzJDCE8wCoQyAlEJ6dgjwATyyYQldSBvG8AV5LMTO1OsHb9u3QnadJ70/Pdc77v9ALgCmlcIQ3/hOUKafaDIToK6elz5YcHraz8ngMkRNkK6C4+ARi3OwA8RzsAnu7mpqwArpDm1nszq+3amI9T6bPargvWbFdIkz6xCuN2B9kKSBewgYLUKjx+PWTWdt3O6uthoaFOHRKAWDahX5OcIVXABghnjQJRLJsFme/iKks+aGWpo084ayQzLVUyOdHT50xYnN/0+IZZAIsdNzkSwL09B/xsPPNhAZCtIBlLWWTj0608MY39q0zevb5iP7g00XvZcNDKcmJi3Iw44+ro4/XVn2MsHZU6+pSp8PqbIvmgldWj3v+cKEQap8qvbAV4P1nfRztGUwrddmK/ot1FR2GSqNH0QkpbyYck41m0u+hJfKP4ldLjsNjxQkdhUiB/QpqUnrtV5fkvFEJSp0j+DvsGRtzJVsVjbugAAAAASUVORK5CYII="},walkRight4:{width:15,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAXCAYAAADUUxW8AAABgklEQVR42qVUIW/CQBh9RyqQkwf/4BytK8myZLJLBSBJZpapySEQk4gJJhELdGLJJJsgmUBUtq6V9w/gZJOZqd1E28u1HAS2lzS5fs37vnfveykBAJsyCQCp4KQ815EKTuo1YlMmk14fIg7hiQysPcXl4zcA4MbtAgCCOMLs+mG3iU2Z3HZcue240qZMLtZLKb+2xmexXkpdGdFl371OKhNNGF4k4JsRUsFJoyyy9vQgUZz3EcSRuhIAWOVBL5qIdN7C1W0+YFbUGzgBnshA5y31vkMO4ujoZoocjps4FURfmWnH+r11+angpJKacmV6Ex3huKnWVJlcb7APesIahz4mK4ZkxfJwDKL9htVRkhyfqwANBxFsylREjbKTXm6O8/G+09DxuVLYwB9wlGGsPYXjdpEUweGbUYVsmTp/0jMAwD2AJI7w9hzA8bmqe2AyFZxYh+Q9/UzgiQyOXxj4kpuIwgvLJNcTmZqilBREEYcw/gz2rq1wv/xVGbN9quP/iucv403HnBp4/m8AAAAASUVORK5CYII="},walkRight5:{width:15,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAXCAYAAADUUxW8AAABeUlEQVR42qWUr2/CQBTHPyUIJPLGf3CyOEhmkKBgcglmQc02C2JyghDsxDIwS5AFsWwCUbOEuk72P4BKkhncTZTrrqX8yl5ySXPX9973vt/vPQBsIZUtpOLCsGwhVdDuEPkezWhz8MfvKLSye0WAyPeSDVkZ0RhsuavVAZj4S7x+CXBUXoEE9njhqvHCVepnvbfGC3fvagX9cf/2BJB0zAtZGWEWKNpCKlkZAduDSdF1hxbA0CHsZjo3BtuTzIrXK1oPI3JhnxNZNQr8IwoAz93HZGPiL/chf82Ieuv9ZK1drOVfgWyRj6HDpyinHWZqbZokG16/RLhyUo6zsmY5dU/dvRlt8gkL3mWyAG5vlvkPw+watDsAVOezlKuqO9dN3XoKdvEUzHDlELoxmqmbfmGpZLPjsbCFVCnCbCGVSYYJN9jJFq6cFGFHYeuk6cskfiC9MqLWiA/ns5gwUyKzclYinainjnXu7NJK6MTkzpcOP832RQ7LzrBfnle9zbyp77EAAAAASUVORK5CYII="},walkUp0:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABj0lEQVR42sWUoU/DQBTGf7dMTCIv/Q9Otm7ISZKJDceSmSmCRSwBiUDU4iiCBDm1gEBUtq6TJ/CsbiQzcw8BV67dYKD41PW9e+++970vVTQQaiPswKK0yv9u+QWhNnJ2fwVAMRhSDIYAnN1fVfmtV26fZyLrpch6KaE2IqcXIqcXH+fP+O3z7Ks41EZOoscq6V9oNpT1Uk6iRwm1kTZA73pTYzDpHjJ5SXeNSu96gx17M/4V/1SYTjskebb3cpJnpNMOAMop6/bnxGkWONyML1mUVil/lyaItxR2SKcd7Ot55SC1z2rfWa8mTjE3AJggZnScMTrOMEFcyzm03WvF3JCsRpigQ+TNGHUPIY9JVhuK+QNRH1mUVrX9LjfjSwDsbJuiHcPEe7UVaiPFYAh3Zv+Ad4ZiMKTyqg8TxDWqAEWeYV/PazG1S1EnSEWzUVTboy9S1Lc01Y76tvYXaDX3mKxG21b7jPnMKqpP+gDd7QFQ5ilH5RsAu+KL0qqW6+KSvzmH2oj6i91+FOc3PgV4B9TS3qWPX7w1AAAAAElFTkSuQmCC"},walkUp1:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABgklEQVR42qWUr2/CQBzFP0cQSOSF/+Bk60AilyAARxMMEotATCIQ2DlA4NkEAYGoLO6QJ/AMtyUzuJvY2l1bNiD7JhX9/uh7976vJ8iEJ5XlQuxPRrjvBXfAk8r2FyMAdLOFbrYA6C9GST016Ellg3aEPoT0qrUcWq9aQx9Cgnb0w8iTynb8tbUfr8kz3S5tjDDdLlO1jr+2nlS2CFAfn3MIvUN46ajUx2dM1znjvfH/wdkuutrs9hQBwmGJ+vicFLLKugPhsASAiJWN93ctnrqP7E9GCNcAqjLJKewimeMgcZC4ZrXfrJdSVa8UAKoyIWhHBO0IVZmkajnL6ZXCbxhUZYLviONXa1+5hkGvVMKsmKVijgPM8oY9elLZjSzDXF3vnit0s0XiVTeyVAH0LsIcB6mcuKRoLIhLP6usyP79sUhZtf2GSd0CheweZ29B3qMXcgnVjSwjq3UATruQh9M7AG7ef3n+oRojxfdLsr/vpo0sp/LxB8U9dvtTnFt8CvAJx6DEoCOKVjcAAAAASUVORK5CYII="},walkUp2:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABeUlEQVR42qVULW/DMBS8TAGFhVb+gWHMUjIpsNJAW9ZKJVPRaEBB4UBBaNlKJg12A1ULBiKNJMyFBuNJ4KSSMg9MTu3E/dh2KLLfPd87nwNY4BMqfUIlzsCxkXivDwBgb6/V+q4URq2rE2yd+WeCZZZiMZ7JRgOfUDlkGyn3hZT7QiqpT++rak3uCzlkm2oExydUUi/GywerGi2zFABwH3QaCka3HCKPfqSG84OxaSMohPMDxBi4wR/xf6Ka6xz0GhcAkmkL4fxw0hSdkExbxwD4hMqH58erJC7GM+xK4Tj6XVIvbjisnyTyqAqAcyk5dSii4SpfUwAA9WKMBilGgxTUi409w1WfUMnXFOxOgHoxmGYOCzoGWSlz61JEHkGsmhLLSdt+j+Wk+FUArObU5fIshcgjwxxD6vEBR0AWG/LrcNVpW3KcYUva6GrFvNdHmSXoll/NGUkQwvatGpIgxJa0YTxkVaAI9e4nzdHJAC6SjKxeEzv9R/UNBfy0USHon8MAAAAASUVORK5CYII="},walkUp3:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABTklEQVR42r2Ur27DMBDGP0cDgYFW3sAwZR2ZVFhpoB0snIZKA/IAAwV5hIxMGgyqFBAQaSRlDvQbpGarVDLmgcyRnT9NNLBPOsWK75c7350DdBRQpgLKFCbkdCG+2YJvtpiC725tmnAlBRl1Mi3JU6WuZ6WuZ5XkqRo8gumY5KkFmRbvv1qYBJQp5sf4+FxgjnYPHKIOm+KsDt+YK+3r4I/6H/DtVNp9LCIXOJR4Xt5PAkXkAgCIbsf+/XUyYhG5EHWISgpCzF4yPx6ssAbMCSJjIzYmDTrWgB8ZAID5MXZPZWsAoPcGq7p4FM1zpEj8yNqsrNvBN9sGTPugfDn3IwaUqYx67UtzrbWWF6zlpZ8qXa7QXeszMj/uFefmRea/jRd1iIx6VsSboO6dmXpAmaqkIERXKaNem6I8FdbXB4dc52w6TkHWyM2ZHPOH9QOrJroE5w6VZAAAAABJRU5ErkJggg=="},death0:{width:16,height:21,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAVCAYAAABPPm7SAAABgElEQVR42pWUoW/CQBTGvyMVk8gb/8HJ1ixgliBLEBuSZG4KS8jEJGJZaqfGDAkSEGQIRJOZNjOtvP+AnSSZmTsEveNKr4W9pObye6/93vf1gIpyKZMuZbKKIWWNALCmdQCAL3YAgFTwAu/YGgfTMQCANlsAgEEcAQDeHp5l2SC4lMnJZi7l70/lM9nMc7KIamaNALMvD5dU/zYB3w6RCk5q6rD98odLy2RzO/iII3RGQWXz5+uwfImdUQD6fg2vy5GsWA5UZ53HIDdESwifri6WYLLO0ZahROb7uVILLATJpUyuzwzxxS6XA8cG/Kdq5tuTFdMpZI0A/V6Efi8CaxycGUzHSFYM1iAld/fHoHy34GUxVpXEEWY30dGV5QKp4ERLEHEI2mxDxCG4WIDPoa30ujxj6prJSUgFJ77YQcRh5Q5MRrtgfr63XGj9ALSMJPsb+fYQIJOvmW9QFmowjgrNpzYTm/dlMmyckwpOfBSHnF4ap1eb2gOxAdYbp4TZA9mI4jenPoeaAAAAAElFTkSuQmCC"},death1:{width:16,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAABVElEQVR42qVUMW7CMBR9RhyA8ZcbeEy2VOrCGIkBDtALsGbsyJi1U5nYgQGJgYGlEtnC6BukHiP1AO5kk3w7Lmq/FMX5/u/5++XZAoFISJpQ/qaVQCwSkiYhaTbnnTHfX71nc94ZOz8IDgGHiP4EDpGM8M8Y84R+WUYB9LnvfY84ONct6OPJvbvjXLfeAt4W6qNEOleojzKaGySwhelcRXM2BDfOiSZRDXLd9owlEpLmRBNQNoOuLsh1i9V2HQS/v76B14qEpKkXd2HSwz7aAa8dA4CuLo4VAOS0RJo994HVFaopvFpPAzktoZrCqW9F5HNOg9gJ5AShk+kRhNrn2+gSeD5QTYG6ukbBQR9wdbudWDCvuWkl3GGyqlI2c52gKu9jVjdoZRur7RqqKaCaYtBYnojWxpTNPEPVi6VbPddtX8TBe+6X+zP4Gx8NzwePEvGr/QduTytbQVkpAwAAAABJRU5ErkJggg=="},death2:{width:16,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAABeUlEQVR42qVUsW7CMBB9sfiAjFf+wBvJlkpdGCN1gJF+BhkZGeELyi8AA8IDA0sH1CWM+QPwGKk77kDt2sEOqD0psuO79+w7P18EjyXElW/9KKsIbZYQVwlxtdgtlfo6O99it1TaHwT7gCGiP4F9JJ3mSeTLsDVN+lg5/6wJzmUNen8yoz3PZX2zAWvuUG440tcK5Ya3rgUJbIC2EBgAoua9C4pba5DL2tFFlBBXgmJQ1oc87J0AnzVjOwBAWR9mXF+rzLszB1idCvhiGQDIw/6a63oF3p1BUIzqVGB+mWJ+maI6FRAUg3dnSH820BhHwqN0q869zIjElm5CXJ17mRqlW7+kNUFQ64EYhn8a81XZdwp9W3cJcll73/1RVpHvim+EVA6GptKaSPttn/azpgLfPp+dVOyj2z5vCuVgaAQzZhMIiiEoxphNjJjKgfsanX4gD3sTkK4L5MbzC3QEZBPksoag+CbAJvc9qOheJw6ZLnD0aEsPtfZvVKwyTDYVt1sAAAAASUVORK5CYII="},death3:{width:16,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAABpklEQVR42o1UoW7DMBB9jvYBgV7+wGwJmVqpZDBSQTu2SiODgy0sLEzh0DoyqbAJqBZQUDKp0UgL8wetYaTxZmA6106cbJaiWHfvznfP78xgWT4Xpc1+kDlD2/K5KH0uysVmVZbfJ+NbbFYl+RuDbYFNiSiOUfDz+wxPnS5kb9haJf+M8Zbt8PI4xUHmzNGdsjdEKAvw12v11/ehLGoHONUT9muBoJ9jvxattsYEBAz6eautxgEZUu62chDKwrhW5nNRptwF79xBZluEssDofoflqmsEkq2KZT4X5X5wISZIYgCA8CIjQX6c/PJRwToAILOtMggvUm3MzzPMzzPVmvAidQDFGBwILzJOIrC+1zFK2iTR001HqUwnVrcRhmyqAup5ebtDkMS1wSGuRl9dxUlNiflxYg2mcoMkVuVbhUQE2iaOrrt6OwbgIfhoHtcGTE2JOuPUCvl1H/mdqoSJJGqFSq/6rBzsB0NF0tiZIuUuUu5i7EwVyboSAeDKeA+yrQIEyQSh8lwCSYG1BKEskHK3BtCT2yaS/fUSNy0imP33SW962n8AdCQ0/3wR/FEAAAAASUVORK5CYII="},death4:{width:18,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYCAYAAAD3Va0xAAABYklEQVR42p1VrW7DMBA++wkCrb6BWRyWV8g0MliwFxhsNBRYNHVwrGi8qEpAX2FSA/0GtWGk8d3QWefKzZ+lKInj73zffd85Ah4MozSm5ntvBcwZRmk0SuPxckL8ddF1vJyQvt/jxH2Qt+89PL0fRjdrP2r4em3S2VEWLi/RKI348xLu/NkojS4vQ3aEl6kdr2cNxbOF61mPzo1SgwWDUxOPguhNuk72VieDCQrSqQwqP0QBPv/2UPkBAAA6lcFONlFAwvTeCqDiGaVxW7To8nKSnstL3BYtcqwgSnpzCGlPmS6FkRzUqWx2ofnaQI0oLVGNaBHF4CMq6pLBMZLL3alslpdIZa6w5HIGKWcYsfJD5Cm5ptApTAi0k81iatygkQJrVCNMZEjeEilj8o0oo2BImrS3OqRKinCgURpJWSoF9VvIiF7WNC3hou7nJps6Rvj63lsh1h5qyfNo7q9o7Jf0D3HLEgh0oL3lAAAAAElFTkSuQmCC"}},plunderBomber:{idleDown:{width:16,height:21,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAVCAYAAABPPm7SAAABoElEQVR42qWUoW7DMBCGf3eZFLBJhSkYCBgwdFjLFimgAQPtY3SopQEDHS1aH2AP0MIEVNpYy2YYMBCwSQksNKiUge4SJ3U3sCO2zvf9dz6dzWAw4fDS5JdFyto+ywQO4MJoDsq2kKXDBAohzAKyFiIRS4fPgpSEzmUt0sE/rdED33mq9u60GZgt9JuE1f6kgnHC4U6PgBdweAFHtjgKjhN+UkElsEXWyKZXQIKm2OoKc7sHV3EA6TFTUgNeUGd21Qhze49I5QAAJhxeroYp0jcfABD2u4h3e2PD9DN+94pxwusKIpVjbvcQ7/YI+12jAMGRyrH68bH26M7tXiOjDhKsj/YFDdG98HFZKLwcPuFb140qbm9sfHwpRCqHHnu4sh47+oTRGqm8kTXe1U1rx3YAQMrjkNM6gFuJEEzvpB3Lfnu+f5ksUsaEw8uJGAEAlnKN902KhyA8eVhSSjxvYngBhx7fGOWJGMELOGbDuCqR4NmwCZMx0z+wlGtjyQST+BYZLFmkDA7KAVxIKSuR9vdFfdJhWaSMnfsHzwm0z78BuJnMLUIpRL0AAAAASUVORK5CYII="},walkDown0:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABTklEQVR42p2UoZLCMBCGv3QQSGRPIiOD49wxg6ASHgOHrryzuHsMToLAg2NlZGUrkXU90UknKaHD3apk83+b3WwSRc9MqhsiJpVV/nzUB96ZYowJIRFIafwAykEx4GFXES4USGXV6FUIaDUCpDQJ/7SuxkX6xXQ3LC72IGQhCDBbag4ry+akA8D5Divb+RKAC0UgvJ1tdOxrlUl18zl+AyCvy8FUfV2Q6u1Dc7zeo1A2nwRryjXeRcvmkyjoIJdV4op3juP1HkT253lddgcU9NHB/q5u3K8/kcoqd/xbsyavy4cd87pka9YAbE4aqaxSJtXNYWWZ7to+bs0aESEb1y1YjzHG8C0/3M6WYt/Cyt3VWD/75utGscXYs+oHVbHH68MxSCqr1CuvP/YLJEOi/nfxNFV3oWdLHb30zt+1Y6iuZ/4k+Bb+MFavHEqs/l8uArn/P6LtpgAAAABJRU5ErkJggg=="},walkDown1:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABSUlEQVR42p2UL3PCQBDFf5eJiEQGiTx5OJCdiSCyfIy6aiS1df0YVIKoT1xXRkaCRMalgl64ux6ZTFddLu/t7ts/pwjM5LonYnJplPudhoQ1C4wxPkkEcnrXgbKkGOFPVBEqWuTSqHQqCbhhBMjpE/5pg8an/I3F6zi4fQeh9IkAy0Jz2DRsT9oj2LvDphnuEoCK1gN+fzXRs4tVJtf9PpsDsOvOo6m6uCHVcjWDelxjuZpxrK93jbvuDPUvecSO9XXIKr2Lx4tondgINoAtlNdH682NbM+hfhXOaUXLPpt7EXfdefhn51WZXPe25MtC82KeERHKrLsRuwxjDB/yOfRxe9K3dqxZEOtnaC4uHYYXqKR9uFahUxVbXpccI8mlUWrK9sdegWQMFD4XD1N1qxYb+mWh/Xa4FQu34JHeZNJzETmrKUWJ6f8B6XaqqsKyGRAAAAAASUVORK5CYII="},walkDown2:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABVUlEQVR42p2ULXPCQBBA32UikJWJREYerriKCirhZ+BaWSS6jp8BMojOtA4cKyMjiUTiUkH3uBzXDNOdydzmbt/cftyu4Q6xWdGqLk1lANI+I18OTwXl/sQio5WmMmkIjBlire1AIsLou+rsGYViQCgiwo4aaSqT3gsBFxsBMtqEf0oK8DYpgZLha9yo/risX817FwSYbQvWVMy2RQdaTy5760k3OTeuHj6rqO4nB8DYrGiXg5zF+dgb03KQO31xPl5d9Q9CeXl8AKDcn6511MIvB7kziIlC6lkSO/T/9VNIk5Ro5mIx+h6E5wnQqZ9/q3/TmKErm3vko+fCGWiSQmhH7WAyWmOzop3bKQAr2fSWRMEd9W0/hg/eL7qu0lTGxJpXYYVCjxzY1/1zO0VEXFutZHNNjgJaI/+hKxTqxh8Zvmg8f+2bvgEVy+bdMXba6nc0AvwAu7+3SNwDlHEAAAAASUVORK5CYII="},walkDown3:{width:15,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAXCAYAAADUUxW8AAABSElEQVR42qWUIXPCQBCFv2MikMggIyOvDv4BSPgZOCqLRNflZwQJojOtA9eTkZFEVuJSkdlwt0k6MH0quby3uX377uBJ2DitbZzWANEQYUi8H09Zzia8fFFHfaI5CdbaQOSc40zJ7naFS7NmfGGfSEOKuKow0TNCoOE4IKYe8Q+0Pb8ujiTbY4dQvofvn9VbV7w+peQUrE9pQM4X97V8UQTfgm0n25Dw/VEMGta6beO03o+nzRj+mK+P3e0ahkQTfCxnEwCOl5/2J8YPh4iFqOELB+OpBRpiotE57vu7FNCejCTLG7tiTtIhyFZ3tytzEoTfiiWWOp66RxmRwPi59meosbErADJ3aOZdFcb0nV//kGTu0AoFmTvcT5WriqDImbI5OSpZurWo7/ZoRtEV6ufOtsVJv3dZ08aZR+6tvqKtYY9efr4/AL+K1aQg8bD1tAAAAABJRU5ErkJggg=="},walkRight0:{width:16,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAABgElEQVR42qVUr3PCMBh94SImkZ1ERga3ObirADn+jDl05GZx/BkgQXC3Oer4ZGRlK5F1nei+kKQp425Ptbm8l/f9FEhAZ6pNnVNtRXwmfQLVVuhMta+Y3MS07shEQIY2FhI6U+1lpnAorjBNBSYzseeCCGeUTkQC6JHvQWsNEIAMLdVWSKqtML/WYtuPQPqxn1F2AugLzLNPAMBk3f1PcxUm8XKyAIByA6yOe7zrt4C8OipcTtYRGSN2MM0Vyk33wm5hsaU9iKjLvgd+yFWBHXw8PQMA1OwLk/XNIp8DgGmqXl9Itl9uLOz3PLjgk5cvYywxdv+H4gqToZUc9184FNdALKjCENgyO/GJQRK5NDG4sUxTwTRV4MIJcAXi+FNifhJNU4FqK1wZTVO5CnBOuLH879jFQCOFzcJNtaV956JItPI0v+0Af6x9F7F910iDk5dYLPFSGd0TiC+nNpJ4dJ0NicgUcbewbh78qUyttVHqVb+UQ4uGOeJR60Oh/DsHPyw/15lZ2SzeAAAAAElFTkSuQmCC"},walkRight1:{width:15,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAABoklEQVR42o2UL3PjMBDFf8oYHCz0QUPBDWuYMxPgzhy5fILiY8WGVxp2H8MHE5CZwphZ4IBYDWMYGKYDrhQ7Vpq+GY+lHb23f6RdRQSSahezm86q4T4ZHjadVZJqtyC7CIn0RGMgxQ1FlKTaNblmW58oz0c80ZMm3o3hQIvprEqACfEziAgYIMUlprOq/AjnOtR7ULEi/ZKfo0PL9DWss5f+P1/pniypds3eAtBuYL3TQWCZvrLeaarCst7pkejML7Y/lrSbXrkqLH/M377CA49VYadhS6rd72/fAdD5G9lLHxaAtwOU5+PYsw9Z52+TggyJT48PNLmmyXWwz/gitvWJbX2K5xxDeT6OQn16fGDyPO8hCNRjgcR0Vs1Xl4LdwoKM8txCfSNsX+l20++rwtLsLVVhOdB+CBynV3X9SLw3EQnNsCDjQBvaM/GL+eryPP0h/8ZFhINpJ32tPhsG156vB4K62XqRaXI9SaIk/70/49w/3PszwXa3JYd534LprFIxYrO3zFc65BxmGIwEZ7Fc/D0PJ4qIjPbB81fGbqxo/wGMrdCob5yBZgAAAABJRU5ErkJggg=="},walkRight4:{width:15,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAABnElEQVR42p2UK5PjMBCEP6UMDi7UQUPBCdswpyrAW3Xk8jOOLTbcpWH7M3wwAalaGDMLChrGMDDMBxwpcuzs44boUeqeVmtGiokQbbqpfds6Fa+T+LBtnRJtugXplUikB1oLmi4mUaJNV2eGbXWiOB/xQA8aZbeWAw22dSoBRsCPQkTAApousa1TxUXOrdTPQk2Z9Ed+Dw4t9WuYp8/9OF+ZHizadPXeAdBsYL0zgWCpX1nvDGXuWO/MgHTmJ9tfS5pNz1zmjjf7t3c4yljmbixbtOlefvwEwGTvpM+9LAC/D1Ccj8PMXrLJ3keGxMCnxwfqzFBnJuzP+GJsqxPb6jR956kozseB1KfHB0bl+VkEgmpIkNjWqfnqati9WJBSnBuo7sj2Tjebfl3mjnrvKHPHgeZCcBw/1W2R+GwiEpphQcqBJrRn4ifz1bU8/SFf4yLCwTajvk4mG933rbUhMxCyjhrjf36T2RRItOlis77VkveeKpZuW6dUDKz3jvnKBJfD33UBxW4H2f4e/n3jn0REwjoGhsxflX5r2D+I3dBkXCAzPQAAAABJRU5ErkJggg=="},walkRight2:{width:16,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAXCAYAAAAC9s/ZAAABj0lEQVR42o1UoXKDQBB9xyAqI6lEnlxccGSmgsjkM+KiK1sb18+gshHMBJe6O7kSWWRlHRXMXg64hq67W97bt++WVQgEJboP3duO1fQu9gG2Y0WJ7nOkNzKiAWwtkKCfEilKdG8KDQDIGoaABThTYS2uaB1JLImPz2/8J4gIsAAS9LZjFduOVdYM0paqhyL2e7+iHQgwJ9gkrwCA9Dics6eh7UhMrEqGqRlVyXiz7zPw/qwdUMAAEAmYmw3a01BBSKy1IyLJ+aFEwcvDIwBAFxekR4yqSO7552s2FxElujc1QxeXUVIqCRgATKFhCj26i3x5SxF66mgJJLK36xW269XfBO3pPknWcDA3M9E3qip5ZqgpNLKG3Si7ZxRwjhQH2iFHiv1ZO2UypVMlavr7HmjnkjJQcjf9kRyBvwdypCAi9/HSXlD3lomQiZoD7Zwq58EUXJW3neC3YuphvMUjKaSmlX2wtFCVjP1ZzxQFTfRJfA98sO9PFFqWV7QjsKnZnX2w7Vip/2xkmRPZCX7RX/h93PRAPh11AAAAAElFTkSuQmCC"},walkRight3:{width:16,height:22,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAWCAYAAADJqhx8AAABj0lEQVR42pWUoXPCMBjFf+EQyMkiKyNTN1y5Q7C7GfgTJnHMIplkjj+DSRDcDTdcIyMrqUTiOlES2jTHxnfXuzbte3l97/siCJSKZBla14UR/lo3BBoQ38iUqsBaQ0TpEwkLzlIJQHIwDIgdsKVCa37IHUmXB0spBRqIKHVhRNdKSg6VvHu7h6ql4IccRZhgGH0A8LaHZFT9csd5sDdke8NmbFjrryB4urv6dAUDdFQky83YsH0dkn9CPMeRaK1bRPZ9MIXt8YxMv4nnzV2WvT4Ai8up1RcdKz/vNWXbXSwYIEslWSoba526NJl+Yw5D9+zX9nj+OwXfJCt72evz8vzU+tYpyD9hupMsLic24yqRei0up7ACXRiRjGSjiVY7zTtb/NlYXHI4VmS2lV2M9cFRSrnM/c70kxD1SbQf24Hxwf4gOYJ7Z8C90oURrpXr3WVrpibuApyxA2JmaoKKZOlSWO1eGgdJ/X6tv9iMDclINn4z6IGdyFD5Hj3kQba/KbBgXRgh/nugWo9svDaJX3TfzZjLJgbWAAAAAElFTkSuQmCC"},walkRight5:{width:16,height:22,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAWCAYAAADJqhx8AAABh0lEQVR42pWUoZLCMBCGv3QQyJOprIwM7nAwg4CZM8djnOMsEuTxJmepYAYcOCIjK0EicT1RElKawtzOdJrsZnf/3X8TQUS0VGVMb85WPOo6Mac+2T2Y1pWzMSApHwOJNmfn2EBhDHsKH6QTGsPMbaK1BgNISnO2IonV1pY9JjUEe4oGiqFc+nU2u+t7I3UPoKUqjxt7MwCmQjGUS6a54ndsmeYK8iYCX0JvpChWcNzYqknG1DL/jm17CVqqctFNsbuUbLYFYNK9Ms0Vi27K+iO9HT/FEQCowbZhXHRTv568v3EcKI4DVdMnYf0Axar6z68n5td7xvXhwvpwec5CTMIgAPNdfZ+4Bj4T18A+GV/6s0a174HdDWmbSse/G7Bw0DyN8+up0UiXzSF01IYU1y6TG5g+WS2Lu0Cxqy0cC8WKatr+KYmjzjk/Nsx9fTJvCxuZAPzkE6+c5qoxzsYYvsdrX14oQktVhjXH6o0x4850zNkKJCWm/mC0BQmdzdkK8eohffW4/gGdV7r5dAGLnwAAAABJRU5ErkJggg=="},walkUp0:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABkklEQVR42pWUoVLDQBCGv8v0AZCRnDx5dY1rZxBlBtM+QTUuogaegTfgEYqDutYFx4mKcz1JZCXuEOmll0sYYFXy3327m83uChLTufIMmKmtiN9HKVAgqXB8TBUA472lQEKOjx1kASqQ3OtF6/Ht/dSJeK8XFMg2gAiQ1vqSljFUOEIG4cwYA0CFu6Ta+U6t0ehBPcA9MI4WLM2oA8bAZm6RZaO7J1huoTKuKVIKVrgeACBL+Cht6yDAoxRyT2D3M24nV011706o6Q5ZwgbLchtFHILC77idXPG2nwExrPrFCZCa7pqIZ0cuuZelYAwBqOmu1wwAmamtWG5V70CWtIWKbblVmNqKNuL4RvGbde7oXPnjCu8PeJ0rr3PlX69n/rjCH1f41+tZq/tDo+lc+RHArn6ANcALBZLHLwdt+p/txDyvH87ay3Cvxh3yk4mh4U3BtHdNbYX4y/QPbYHsJ8jUVqTrIr7T2QCh/cKkB30zt5fxOsNZeAjzNvTTgxbu6Fz5XnE286aJY0u1XnH+sx6/Ad95zsZS3ogEAAAAAElFTkSuQmCC"},walkUp1:{width:14,height:24,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABeElEQVR42qWUsW7CMBCGP0d5AMaMzejRbLAlUocidSFPwMzGg7DxGLABQyXY0g0PDN7wmpE3cIfUqUmsFqk3Oef77s5/zhb0TGXSETHdGBF+p31gSk6N5VJIAMZnw5QcMlyYIPXQlBylFFprAA6f94eKSzVv9zKcbowQIdS1pTU1Ft9BbC+NnUcphULxmw3AsJq3ftUBuNE7ALZvhnzV+uwaqiPU2rJU8y62O2ONHQBAL4HsVE+BB8iuwZxLZpNRq+77HVmcyFewxVAdg1ZjkP8ds8mIw7kEQlgOxfGQLE5txe9EtheX9MEQApDFaTAMAIlujKiOcrCRr36ECa06SnRjRFdx/Cr5yx5iVCbdbYFzV5zKpFOZdPuX0t0WuNsCt38pO7+7tj6VSSdUJp0f4HogAdEJ2ujdUNXYeMWSitjlDeEYpBsjxDO3P/YKJM9C/ZgkfAH8+Pm1b/vyYbpXwMNJmCUEYqKFlRPfd43tRAjFCH3+vv5LnC/VmdRLkE3HiAAAAABJRU5ErkJggg=="},walkUp2:{width:14,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAXCAYAAAA7kX6CAAABcUlEQVR42o2UrZLCMBDH/+n0AU7WRkYGd3XtDAJmzpTHwJVnuHOH4zFAUsEMOHCsjKytRJ7ric6mm7Zwt6bTzf72O1EYiE1Miwmhxin5H08B98wAAGYXhxS6UyZopYOYoRQa1lrs6IDj7dFnYG33hQURAQlaapxSEmLZ0QEAsLZFmC4RAOCKuk9VyhCQ0RkegUSEK2r/zzXKjAKQgf3CYSMMVhUbYBpkSJehwb10XYfnfXQAUDwGCR0/cm9gsrPXz+YGKTSuqBFJqN4C+Aobo38K7+h+cr7+aGR0e8BkZ5js3EW/PbB8f+ucCglAhmSarB9KNDUvXWLUpOHeRtQ4taoMXgk3aDbv7SKbmHZtC690lxz1tmuUu+QBNBoHrxjv6CvhccRyeflguPD7hcOwnJgap/iu8QaBwt3UJYCqP6fGKfXX7V/bAnnyie9q6e+rBxlIobFZHIO0ZENkxEhCz4yn3iX16oEaOuI9/VeNz166XyietEPwUZThAAAAAElFTkSuQmCC"},walkUp3:{width:15,height:22,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAWCAYAAAAfD8YZAAABcElEQVR42pWULXfCMBSGn3AqJpGdjKwMjrpyDqLI8jOYqp6cntp+BkgQOwdccURG1lbyD5iApJeWj+11afJ+9N6bKDowcXLiDmzjlFxHt4iHLAFgtHMApOjzgZiTFIkkMUVTUbPeH4PgwhStOAZrLcScbONUJInGGAyGd7vqESVSNMScolub90gAxlzcu/8MYK2lou47XYh3C/ZtVyxzx1fZfqs/Yb7xytdGSlZ5mTt0eSZ46FKKJCFFRd2SJdHtJgAk2bYnMpqeBSpqBjKGJM7GQ9xuEtY+zeHHhZoMuspJtiXJtqz3R2bjYRCRAh6BPJomQUSXBIFHGPgBSdHMN0nvwCOBSPavsnWI5qNK6LJNCKDkaMoB+Xh5DTXoJvLVVs+uoccyd0HkqlW2cUre1RTNwhRhxhemCN1YmIKKGts4NbjlUlGH4fd4m87aey3H81n0LunKWRJTNMvc9Qi3nqs/OUt33w3bOKX+8wB2H8FfO7ur+BAfa5QAAAAASUVORK5CYII="},death0:{width:16,height:22,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAWCAYAAADJqhx8AAABfUlEQVR42oWULXfCMBiFn3AqJic7GRkZ3OrgHMQ4ZwZ+BlPVyGnU/gYWxM4B1zkiIyOpROI6AQkpTeGq5uPe9+b9qADQuWq4wtRWxOsY92emtiLTuWoKJAAVDr+ucBxGCoDh3lIgIacB8PfJaQZercJRIFnoWYi4+Tux+TuF9ULP8OIewVKBRGt9s2tMuPjoLKMHWms0mmfIUkmLI3jcuwhJ7COuPyyyvOy7Fcy3UBl3S6B3EC8qXIcIIEs4lDYIxSJZiuxWYPdjpu+vl2p8nlCjHbKENZb5NuEgRfYlnL6/stmPgVhE9VfBk9Vod3FwFXSJu4OUQEwGUKNdq6E6Aqa2wluKIUtCQmPMtwpTW9FyYGorhhP1tHGGkxsZQLS6L2qo75e38Ay7H7M8H0Og3j6Iu255dhCedewMUSeJOleNn8Sf302YygLZIt+3fZaK/jWR+LavksXrKaMxJvndmdTIxSBlK+Vq/WFbM+A54n4j/r09gq+GeGTvEdHjH7yMv10HhrOYAAAAAElFTkSuQmCC"},death1:{width:16,height:22,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAWCAYAAADJqhx8AAABjUlEQVR42p2ULW/DMBCGn0QBhYUda6ChxxbWSAPLNNKgweEOFe837J8UtgGTWpayGgyY1WMrHCzzQObWSVxt2klRTme/9/X6LiIgciRsyK4OOurakhAwI6XGsJsIAK43mowURtiuo8QHZ6RIKVFKAbDafrWizeS0ORthnZN2BlKe/wpejgaXkX9WK9MuwUXvOpPIUCtO5aiDjpJgs5SixvRALouLTfSBiztNOm/s5hXKCmpl6GYaASzHuV0dB9SYHhDoOBJkpBSDI/cf63MJPti8gt7kFDfDho2HL8RkTTqHBZqygoKrNv/7J6x9x+6fsMtxbu3j1C7HeUv377g3k5wZ0CeHxc2Q1baJCrD6ycYEmIhDLPhgADFZ9x6Vk9hxXlaid5jOzw30pazEidJWBte3gt+keycKTd/iTqM3+amMshLs3nQPrA46ip3iPgeAhsqyEszktDVQ/kQmoZmXI2Ffjp8t+/NtQXapib8tEzfeXb23D/iHxP8FO0x8adf54o+20x0m+utCvbRYvwEe6M6uyA/L8wAAAABJRU5ErkJggg=="},death2:{width:16,height:21,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAVCAYAAABPPm7SAAABb0lEQVR42o2UIZPCMBCFv3QQSCTIyMjgwJUZBMxg2p9R17Mn0bj7GZxhhjpwPUdkZeQhkec4UVLSEo57qrOb97LdvF1BAHqorqG4OVeiG4u6RD1U1ykSgHV/xClWAEyRTT4o4IiZTlo37L8uzXemk0bIxYRP1lrfyzWGEnu/PZAz50r0eAKtNRrNKwQF/NsdulUEBXzidlEh8zpuN5AWUBqLa3BQoMQ+EAFkDqe8aoR8kV6IbDdQHWcsJ4P6JVYXVHxA5rClIi0CFYTI7gmXkwH74wzwRdTzJjqyig91BTdBGzgbhWzrkwFUfGgZyjdf5BzmSvIhc5qG+kgL1Tg28m06nquXxhnPVcvu4tn0rfsjlrtbD1Yz3n++g9Mpuv/k1D/MZ+uwH/fHWnSnscQGbetc6s44kQcnArwt9qRF+9G2i4qyUA8zEvk9yHRCphNk3rbrFInM73mfE3VXlTGmmQEfdlPnuutN/GcX/rUbfwEjELpZrMKARgAAAABJRU5ErkJggg=="},death3:{width:20,height:23,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAABpElEQVR42q2Vr1rDMBTFf9lXUYkscnLy4tgjTO4VkPUYJsEgcJO8wiQWV+QViMrKVSLrgtgSbrJu419M2iT3fPeee07iODKkmnlODO1bN7ZeHAOaM0VEuHl8SPafb+9QVajwp4ATwLpaeP+Ol2oWZ/vt3/F1tfBjVRQ52Jwpi3KIa90To9+LcoBhChXeZulywPvyktWwBeC+vNwFX1/w8vYBEPfC/mrYJmVP8pRtwMtQJv+rYcuc6ejZg5Klmvlalqx1E4NEBEG4et0AUMty3+Ld1NCxj4llTyx3AUxEaOgAWOsG7VunfevWuolAIkISs2+Qy6USgLRvnVQzn8sirB2LiRyGzGJZRzRm12pZxkwPmiIiSYmcGZaCEAtQBP7+OubsNJnI5rvZjWUZhZ3b5yeAY5dIYRuyz9J/FzRoF0BVaeiYaN+60PbYuTNXVw4WtJnIRlV/3eUQm1ivoQMlWukUn6GCWpax1APAqHj98mwObIEsb9YtRSJs/crUuiYAJy4yYCJCo116HwaS7cHcBZYvC2Z5d+ceptxFlq8x7br/fvU+Af65JJ4LToNfAAAAAElFTkSuQmCC"}},explosions:{bombs:{fuse0:{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABSUlEQVR42qWTLU/DQBjH/y0VfIEm9wVIOMdhIHWbrEMRJqmYaLIEvWUJScMHIAyHxdWQgCzuMkwrIDkxUdmGIOpGgjjEdtfXEQY/dS/P/3n+9/IY6IARJrvWkzwxqjHhyS6MTiFxQCkFAAghVps5ryWbTV3Q/Qg7NTFx4J4PceoN8flVoHgvYNs2Pt4e4I4C7B31sXiJMJu6yBYFvMu0FLMDX46vHmWWxTLLYhlGSzk4u5GMML3OCJP8dizDC18qt5ZyoCwr4nmkx4fHfXABTO45/IFTizOVdQUXFFxQpK9pK1k8j+COAtCep51b1eorUVSrQHsenq4nAAIdI57vAOIAOS+PoKhW1hBnnaScKyz1VM07UOhnJE7nvtkK7BL/gLWtoOUgyROj+ct+Rc6R5Ilh4p+Yukm2cbGuDmBzM20SNrvS+Gs7K74B0DebyxOmawAAAAAASUVORK5CYII="}},blast:{center:[{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA4UlEQVR4nJWTMRLCIBBFFyaFpWXSmdLSjrHzErmEbY5hGcc7cIl0tl7BDktvEGcTlllgmcTfkADvswu7qjUDkJ7QTzjWlz1A10Ak6+AzfufPM9wUTWsO8oU1EaM5SJOiumaJzAsZ3K/F8DeejibKmV04NcCUv3XxP5uj+1BkUIRZCqkJqqofxxyQTi5ITa9TfnFoQPDhCvC+Fw30KszHNFLR4E/p4Mjzpm8KXUoB91gnvAKZSEpfBi+xNUNUgdlzCjDVwJKCr6isD3yIqTiMTMUX5/oe+0nsRgYXu3GL0sb7AY0rZ6H0/Kl6AAAAAElFTkSuQmCC"},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA40lEQVR4nJVTMQ7CMAx0LAZGxnYrIz+o2PhEP9G1z2AE8Yd8go13sIWRH4DsxpHjEgInVVEa3/nsOG7bn0Bwg+lFa3PYAAwtQDemM7ifAXyAx/XJ2z0cHa0oxIz8AyR+pX8uyJS1IuJCv84zk/USfOBFyiA4Esgyi4CuX7uJIgJsLruZZDOX7Ou4oZ2b+PHQOrD7GIt8IJ8NrrnoRuWgFFy5CeSASlAGM1zIXTWdTYK2NAsfVAlWyLqiPYmZ63R/DZJOFgcK5VGk6bLlfCETuISFiED3QJWoXyTKqxKRmgtNJu4bNDhsjAJJPuoAAAAASUVORK5CYII="},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA6ElEQVR4nI1TMRKCMBC8ZCgsKaXDXzB2foIPWNLa+AdLLf0An7DzHXRY8oM4F1zmcjlGdoYhhNu9vbC4Q3MnxpsuYX8qidqKqO4ow/CY7/1In9cUl0e6OQ9yzjDICswrQF66byByLVy4cN3P3UG27BtjAC4KaHJ5TonT03bVjxTPIIEm6z3psK3Ir566JQIh1Ncd+fjAL6SItPwH3rS8ReTX2IUQQlbMonJPNlG1RXbCW75EIjAYYUGxNZ6qd0kO5HwWrCCNzW49ylJIBQhR9vxH8SJuCOWFBOKKq5hEiCz2cDEJOTHAvC/Ks2ZmjZsORQAAAABJRU5ErkJggg=="},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA0UlEQVR4nJWTwRWCMAyG0z4G4Ig3V9ANXIIFPDqBg/SGC7CEI+gIveENNojvLy220NryXfJo8/8JkAi+N0ygPdDC8UZJtJpjP9DnOVEViP8JfbGludQk+HXijbi+xg2mx6YLYQycOCWM8T6bIHjseLfY60buFSzYgrK4OnLWJoB9xo6z+Dljx+WvkEBG29plAJxJ7lsgb5Ujg8scvnj5jToczyIghk4rEmaZsAslo+ywU4hRrrBRDR5a9TNJDE1w1w8mzNvoDmDiiO2Ha92KUfwLuFCLiprjDJwAAAAASUVORK5CYII="}],segment:[{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAnklEQVR4nGNUtJjCQAlgokg31Q04xlDyHxsbGx8GGJ9bcPy3YuhhxKUAJgeiYQYhsxlBBiBrkHAUgLNf7P9A0AuM/yslMG0Ok2RgWPUcr0aY4Yz/zxtCDABpAGlEBsiG4JBjhBuAC2AzGEmOEWwALpuI8AYj1jBAU4QPMKLHAi6AHtWwqGSEpQOYBEwRshg+wIScKGAa0cXwemHAcyMA0fpTGHx5ENQAAAAASUVORK5CYII="},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAyUlEQVR4nGNUtJjCQAlgQuYcYyj5j42N14BjUIXINLoYNgNhfCZ0SQlHATBGV2zF0MOIrBbEB7EZ/1dKgAVe7P8ANwAZwMSxAZBaxv/nDf8zrHqOKhMmCaHRxdHlGRigBhACMIOQNDIoZEMNeD8HYsCDqSgScAATxyYHj8YHRGjGBh5MRQoDZOdh8wJMHmYJ1HBGWCxg+BFZMx55RhQDcEQdetQiq2N8bsFBVJJFT0gwMbABuCSJMZgJWTOIDcPoBsIAuhgjpdkZAKAMboGGprwiAAAAAElFTkSuQmCC"},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA20lEQVR4nGNUtJjCcIyh5L8VQw8jAwMDCpsYwARjgDSiG4RLE7Ic43MLDjBHwlEALPBi/wcMDSBDkTUhW8KIbgA6wGYgMmD8XykBMTlMElVm1XO8GhEGnDf8z6CQjSnzYCrCIGTD0dQy/n8/BxFYAskImQ9zEYbANKHLgw34/x9naBMEH+YiohGXAkKABUURshNBAOQFBSxySHoYwYEIAugBCfM/NjkkNYxgA9BDGjka0cXR1DDC0wEaIJSA4F6ApURcAFcmg/HhsQCTRFaEnAfQMxlMjhE9O5MKALs5b2JBrTeQAAAAAElFTkSuQmCC"},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA5klEQVR4nGN8bsHx34qhh5GBgYHhGEPJfwYogIkRAowgA2AcCUcBFMkX+z8wIBuIzQLG/5US/xnCJBG6Vj2H0DAxGB+HwYz/zxvCTQUDhWwGhgdTMd0KMgiLRYz/38/5D9dgcA5CXzBCGIYNIFnAAlcokIyqCJsYHExFGP7//Zz/GACbGLo8VA0jiGCgADBRohm7AR/mQjAugCbPhCEJC2F8hoDUQOVZUBTCND+AhjJMDhYbyBbgTEgMSAAWVTBNyKkSmqggSRkdYEvaaEkYlm9QMhO6JLpG9FwLUgc3ADn7EputQeoAjl+lvfd2ynAAAAAASUVORK5CYII="}],end:[{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAkklEQVR4nGNUtJjCQAlgokg3LgOOMZT8J9qAY0iKYWwrhh5GYg1kgSmGKSLFdhBgfG7BAdcg4SiAoeDF/g9wNrrL4AZIoGsMk0Tlr3oONwzdEBawZnQN6AAkDzUEHbDg1YykCdkrqAaswlQE8xK6JpxhwEAAYNOIcAGaQlA04tOADphAipE1oKcLQoBxcGYmUgAA3+c5XtE+f2cAAAAASUVORK5CYII="},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwUlEQVR4nGNUtJjCQAlgOsZQ8h9dEF0Mmxq4AVYMPYzoCtHFYHxsBjE+t+DAaTo6QDYYxQAJRwEMxS/2fwDTIDkYG5shLGDNYZKoulc9B2sEgzBJBgk0Q1EMYEDXDNWEwV/1HKu3WBgUshkYHkyF8EBsZAATxwNYYE4G24JNA9RmbM6HGPAAhy1IToZpxhoL/yslcEYjeugjpwmMaHyBw4m4bIYBJmxOBNEwjNNUmAHoCtGTLSFDGCnOjRTpZmBgAAAhQ1I1DprO7gAAAABJRU5ErkJggg=="},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA6ElEQVR4nGNUtJjCQAlggjGOMZT8x8ZG5qOLgwDjcwsODEFcwIqhhxHDgP+VEjgNeLH/A4OEowCcjc0Qxv/nDSEGrHqOEA2TRDUJKofNEBYUTQrZELZAMgPDh7kMDA+mohgogWQIKDxABjGCXQDTCAMgA0DgghHCUJhhq56DDYG5ggnFVphGGADJwcTQLYECJrjJyADkfBBGdxEWwIJVFNlQBSxiWGMBGcBiBE9swMKAET0dwEIZFv9gQ5CiGFkzySmRAQpABsCikQlmGjYaPdUhi8G9gCs3wmxAZ6MDeG7E5kx0J2NTBwB7YGzn02LE2QAAAABJRU5ErkJggg=="},{width:16,height:16,data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA/0lEQVR4nI2TMRKCQAxFswyFJSV2eASsGDsvwQUsbW28g6V2cgEuYWeLR7DDTm6wzl/Iml0W5c0wG0LyyWwStSrOdKeDJsGGTgon/LD5lD6OVW2xMMnpNrECr1sn9RxhX1TpY+r8ncqlm1W3QWGuQhkBPwlke6LnZewfBCHWV/C+9hUkO6LH+psMIMC2BP667SvSkibXEDQP4DNkN7nG/cWjslEJI+0JIudtRoIEnYtmRXZV+EKdCrqqv0Scv4S875H94AeG/B7oQuyUhx6XQ+vYn9FkG4FCO+S0GXiwjGBgyMQw2VGemn8g98SPtcs0tW3+pjJ2F7DO/2ARKcx8ABLLsb2vKrzPAAAAAElFTkSuQmCC"}]}}},W=[{dx:0,dy:-1,direction:"up"},{dx:0,dy:1,direction:"down"},{dx:-1,dy:0,direction:"left"},{dx:1,dy:0,direction:"right"}],X=W.map((({dx:t,dy:e,direction:n})=>({x:t,y:e,direction:n})));class Z{static from(t){return t instanceof Z?t:new Z(t.x,t.y)}constructor(t,e){this.x=t,this.y=e}key(){return`${this.x}:${this.y}`}equals(t){return this.x===t.x&&this.y===t.y}manhattanTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}translate(t,e=1){return new Z(this.x+t.dx*e,this.y+t.dy*e)}inBounds(){return this.x>=0&&this.x<i&&this.y>=0&&this.y<7}adjacent(){return W.map((t=>Object.assign(Object.assign({},this.translate(t).toPlain()),{direction:t.direction}))).filter((t=>Z.from(t).inBounds()))}toPlain(){return{x:this.x,y:this.y}}}const q=t=>Z.from(t).key(),$=(t,e)=>Z.from(t).equals(e),_=(t,e)=>Z.from(t).manhattanTo(e),tt=t=>Z.from(t).inBounds(),et=(t,{x:e,y:n})=>tt({x:e,y:n})&&t.grid[e][n].commitsCount>0,nt=(t,{x:e,y:n})=>tt({x:e,y:n})&&0===t.grid[e][n].commitsCount,it=(t,e)=>nt(t,e)&&!t.bombs.some((t=>!t.exploded&&$(t,e)))&&!t.activeExplosions.some((t=>t.contains(e))),ot=t=>Z.from(t).adjacent().map((t=>({x:t.x,y:t.y,direction:t.direction})));class at{static from(t){return new at(t)}constructor(t){this.store=t}reset(){this.store.frameCount=0,this.store.nextBombId=0,this.store.nextItemId=0,this.store.players=[],this.store.bombs=[],this.store.activeExplosions=[],this.store.items=[],this.store.gameHistory=[],this.store.cellEvents=[],this.store.explosionEvents=[]}nextBombId(){return this.store.nextBombId++}nextItemId(){return this.store.nextItemId++}addBomb(t){this.store.bombs.push(t)}addExplosion(t){this.store.activeExplosions.push(t),this.store.explosionEvents.push(Object.assign({frameIndex:this.store.gameHistory.length},t))}activeBombsOwnedBy(t){return this.store.bombs.filter((e=>!e.exploded&&e.ownerId===t))}findBombAt(t){const e=Z.from(t);return this.store.bombs.find((t=>!t.exploded&&e.equals(t)))}activeExplosionAt(t,e){return this.store.activeExplosions.some((n=>(void 0===e||n.ownerId===e)&&n.contains(t)))}aliveOpponentOf(t){return this.store.players.find((e=>e.id!==t&&e.alive))}clearContributionCell(t){const e=Z.from(t),n=u(this.store);return this.store.grid[e.x][e.y]={commitsCount:0,level:"NONE",color:n.intensityColors[0]},n.intensityColors[0]}recordCellDestroyed(t,e){const n=Z.from(t);this.store.cellEvents.push({frameIndex:this.store.gameHistory.length,x:n.x,y:n.y,color:e}),this.store.config.pointsIncreasedCallback(this.store.cellEvents.length)}}const st={"blast-range":{sprite:L.blastRange,powerUp:new class{applyTo(t){t.increaseBlastRange()}}},speed:{sprite:L.speed,powerUp:new class{applyTo(t){t.increaseSpeed(5)}}},"bomb-capacity":{sprite:L.bombCapacity,powerUp:new class{applyTo(t){t.increaseBombCapacity()}}},"bomb-kick":{sprite:L.bombKick,powerUp:new class{applyTo(t){t.enableBombKick()}}}},rt={"blast-range":3,speed:3,"bomb-capacity":3,"bomb-kick":1};class lt{static createHiddenItems(t){t.items=[];const e=lt.calculateSparseDropMultiplier(t);for(let n=0;n<t.grid.length;n++)for(let i=0;i<t.grid[n].length;i++){const o=t.grid[n][i],a=o.commitsCount>0?J[o.level]:0,s=Math.min(1,a*e);s<=0||Math.random()>=s||t.items.push(lt.create(t,{x:n,y:i},lt.selectRandomType()))}}static revealAt(t,e){const n=lt.findAt(t,e);return n&&n.reveal()?n:null}static collectVisibleAt(t,e){const n=lt.findAt(t,e);return(null==n?void 0:n.visible)&&n.collectBy(e)?n:null}static destroyVisibleAt(t,e){const n=lt.findAt(t,e);return n&&n.destroy()?n:null}static hasVisibleAt(t,e){var n;return Boolean(null===(n=lt.findAt(t,e))||void 0===n?void 0:n.visible)}static create(t,e,n){return new lt(at.from(t).nextItemId(),n,e.x,e.y)}static calculateSparseDropMultiplier(t){const e=t.grid.reduce(((t,e)=>t+e.reduce(((t,e)=>t+(e.commitsCount>0?J[e.level]:0)),0)),0);return e<=0||e>=3?1:Math.min(3,3/e)}static selectRandomType(){const t=Object.keys(st),e=t.reduce(((t,e)=>t+rt[e]),0);let n=Math.random()*e;for(const e of t)if(n-=rt[e],n<0)return e;return"blast-range"}static findAt(t,e){const n=Z.from(e);if(n.inBounds())return t.items.find((t=>!t.collected&&!t.destroyed&&n.equals(t)))}constructor(t,e,n,i,o=!0,a=!1,s=!1){this.id=t,this.type=e,this.x=n,this.y=i,this.hidden=o,this.collected=a,this.destroyed=s}get visible(){return!this.hidden&&!this.collected&&!this.destroyed}reveal(){return!this.collected&&!this.destroyed&&(this.hidden=!1,!0)}collectBy(t){return!!this.visible&&(st[this.type].powerUp.applyTo(t),this.collect())}collect(){return!!this.visible&&(this.collected=!0,!0)}destroy(){return!!this.visible&&(this.destroyed=!0,!0)}}const At=t=>{const e=t.length;if(e<=1)return null;const n=[],i=[];let o=null;return t.forEach(((t,a)=>{t!==o&&(ut(n,i,mt(a,e),t),o=t)})),0===n.length?null:(gt(n,i),i.length<=1||i.every((t=>t===i[0]))?null:{keyTimes:n.join(";"),values:i.join(";")})},ct=(t,e,n,i,o="0",a=!1)=>{if(t<=1||a&&0===e&&n>=t)return null;const s=mt(e,t),r=mt(n,t);if(s>=r)return null;const l=0===s?[0]:[0,s],A=0===s?[i]:[o,i];return r<1?(l.push(r,1),A.push(o,o)):(l.push(1),A.push(i)),A.length<=1||A.every((t=>t===A[0]))?null:{keyTimes:l.join(";"),values:A.join(";")}},dt=(t,e,n)=>ct(t,e,n,"1","0",!0),ht=t=>{const e=t.length;if(e<=1)return null;const n=[],i=[];let o=null,a=null;return t.forEach(((t,s)=>{t!==o&&(null!==o&&null!==a&&s-1!==a&&ut(n,i,mt(s-1,e),o),ut(n,i,mt(s,e),t),o=t,a=s)})),gt(n,i),i.length<=1||i.every((t=>t===i[0]))?null:{keyTimes:n.join(";"),values:i.join(";")}},ut=(t,e,n,i)=>{n!==t[t.length-1]?(t.push(n),e.push(i)):e[e.length-1]=i},gt=(t,e)=>{1!==t[t.length-1]&&(t.push(1),e.push(e[e.length-1]))},mt=(t,e)=>Number((Math.min(t,Math.max(e-1,1))/Math.max(e-1,1)).toFixed(4)),ft=[new class{render({store:t,theme:e}){let n="",o="";for(let a=0;a<i;a++)t.monthLabels[a]!==o&&(n+=`<text x="${22*a+10}" y="10" text-anchor="middle" font-size="10" fill="${e.textColor}">${t.monthLabels[a]}</text>`,o=t.monthLabels[a]);return n}},new class{render({store:t,theme:e,cellEventsByPosition:n,totalDurationMs:o}){var a,s;let r="";for(let l=0;l<i;l++)for(let i=0;i<7;i++){const A=kt(t,l,i,n);r+=`<rect id="c-${l}-${i}" x="${wt(l)}" y="${Bt(i)}" width="20" height="20" rx="3" fill="${null!==(s=null===(a=t.initialColors[l])||void 0===a?void 0:a[i])&&void 0!==s?s:e.intensityColors[0]}">`,A&&(r+=`<animate attributeName="fill" calcMode="discrete" dur="${o}ms" repeatCount="indefinite" values="${A.values}" keyTimes="${A.keyTimes}"/>`),r+="</rect>"}return r}},new class{render({store:t,totalDurationMs:e}){let n="";const i=t.gameHistory.length;for(const{bomb:o,startFrame:a,endFrameExclusive:s,positions:r}of Et(t)){const t=dt(i,a,s),l=0===a?"1":"0";n+=`<g id="bomb-${o.id}" opacity="${l}">`,t&&(n+=`<animate attributeName="opacity" calcMode="discrete" dur="${e}ms" repeatCount="indefinite" keyTimes="${t.keyTimes}" values="${t.values}"/>`),n+=Ot(r,e),n+="</g>"}return n}},new class{render({store:t,totalDurationMs:e}){let n="";const i=t.gameHistory.length;for(const{item:o,startFrame:a,endFrameExclusive:s}of St(t)){const t=dt(i,a,s),r=wt(o.x)+2,l=Bt(o.y)+2;n+=`<use id="item-${o.id}" x="${r}" y="${l}" width="16" height="16" href="${ie(o.type)}" opacity="${0===a?"1":"0"}">`,t&&(n+=`<animate attributeName="opacity" calcMode="discrete" dur="${e}ms" repeatCount="indefinite" keyTimes="${t.keyTimes}" values="${t.values}"/>`),n+="</use>"}return n}},new clas