/*! For license information please see LICENSES */
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{1339:function(e,t,n){(function(t){var n;n=function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},n.p="",n(n.s=20)}([function(e,n){var o={};e.exports=o,function(){o._baseDelta=1e3/60,o._nextId=0,o._seed=0,o._nowStartTime=+new Date,o._warnedOnce={},o._decomp=null,o.extend=function(e,t){var n,r;"boolean"==typeof t?(n=2,r=t):(n=1,r=!0);for(var i=n;i<arguments.length;i++){var source=arguments[i];if(source)for(var l in source)r&&source[l]&&source[l].constructor===Object?e[l]&&e[l].constructor!==Object?e[l]=source[l]:(e[l]=e[l]||{},o.extend(e[l],r,source[l])):e[l]=source[l]}return e},o.clone=function(e,t){return o.extend({},t,e)},o.keys=function(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)t.push(n);return t},o.values=function(e){var t=[];if(Object.keys){for(var n=Object.keys(e),i=0;i<n.length;i++)t.push(e[n[i]]);return t}for(var o in e)t.push(e[o]);return t},o.get=function(e,path,t,n){path=path.split(".").slice(t,n);for(var i=0;i<path.length;i+=1)e=e[path[i]];return e},o.set=function(e,path,t,n,r){var l=path.split(".").slice(n,r);return o.get(e,path,0,-1)[l[l.length-1]]=t,t},o.shuffle=function(e){for(var i=e.length-1;i>0;i--){var t=Math.floor(o.random()*(i+1)),n=e[i];e[i]=e[t],e[t]=n}return e},o.choose=function(e){return e[Math.floor(o.random()*e.length)]},o.isElement=function(e){return"undefined"!=typeof HTMLElement?e instanceof HTMLElement:!!(e&&e.nodeType&&e.nodeName)},o.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},o.isFunction=function(e){return"function"==typeof e},o.isPlainObject=function(e){return"object"==typeof e&&e.constructor===Object},o.isString=function(e){return"[object String]"===toString.call(e)},o.clamp=function(e,t,n){return e<t?t:e>n?n:e},o.sign=function(e){return e<0?-1:1},o.now=function(){if("undefined"!=typeof window&&window.performance){if(window.performance.now)return window.performance.now();if(window.performance.webkitNow)return window.performance.webkitNow()}return Date.now?Date.now():new Date-o._nowStartTime},o.random=function(t,n){return n=void 0!==n?n:1,(t=void 0!==t?t:0)+e()*(n-t)};var e=function(){return o._seed=(9301*o._seed+49297)%233280,o._seed/233280};o.colorToNumber=function(e){return 3==(e=e.replace("#","")).length&&(e=e.charAt(0)+e.charAt(0)+e.charAt(1)+e.charAt(1)+e.charAt(2)+e.charAt(2)),parseInt(e,16)},o.logLevel=1,o.log=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.log.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.info=function(){console&&o.logLevel>0&&o.logLevel<=2&&console.info.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.warn=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.warn.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.warnOnce=function(){var e=Array.prototype.slice.call(arguments).join(" ");o._warnedOnce[e]||(o.warn(e),o._warnedOnce[e]=!0)},o.deprecated=function(e,t,n){e[t]=o.chain((function(){o.warnOnce("🔅 deprecated 🔅",n)}),e[t])},o.nextId=function(){return o._nextId++},o.indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var i=0;i<e.length;i++)if(e[i]===t)return i;return-1},o.map=function(e,t){if(e.map)return e.map(t);for(var n=[],i=0;i<e.length;i+=1)n.push(t(e[i]));return n},o.topologicalSort=function(e){var t=[],n=[],r=[];for(var l in e)n[l]||r[l]||o._topologicalSort(l,n,r,e,t);return t},o._topologicalSort=function(e,t,n,r,l){var c=r[e]||[];n[e]=!0;for(var i=0;i<c.length;i+=1){var d=c[i];n[d]||t[d]||o._topologicalSort(d,t,n,r,l)}n[e]=!1,t[e]=!0,l.push(e)},o.chain=function(){for(var e=[],i=0;i<arguments.length;i+=1){var t=arguments[i];t._chained?e.push.apply(e,t._chained):e.push(t)}var n=function(){for(var t,n=new Array(arguments.length),i=0,o=arguments.length;i<o;i++)n[i]=arguments[i];for(i=0;i<e.length;i+=1){var r=e[i].apply(t,n);void 0!==r&&(t=r)}return t};return n._chained=e,n},o.chainPathBefore=function(base,path,e){return o.set(base,path,o.chain(e,o.get(base,path)))},o.chainPathAfter=function(base,path,e){return o.set(base,path,o.chain(o.get(base,path),e))},o.setDecomp=function(e){o._decomp=e},o.getDecomp=function(){var e=o._decomp;try{e||"undefined"==typeof window||(e=window.decomp),e||void 0===t||(e=t.decomp)}catch(t){e=null}return e}}()},function(e,t){var n={};e.exports=n,n.create=function(e){var t={min:{x:0,y:0},max:{x:0,y:0}};return e&&n.update(t,e),t},n.update=function(e,t,n){e.min.x=1/0,e.max.x=-1/0,e.min.y=1/0,e.max.y=-1/0;for(var i=0;i<t.length;i++){var o=t[i];o.x>e.max.x&&(e.max.x=o.x),o.x<e.min.x&&(e.min.x=o.x),o.y>e.max.y&&(e.max.y=o.y),o.y<e.min.y&&(e.min.y=o.y)}n&&(n.x>0?e.max.x+=n.x:e.min.x+=n.x,n.y>0?e.max.y+=n.y:e.min.y+=n.y)},n.contains=function(e,t){return t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y},n.overlaps=function(e,t){return e.min.x<=t.max.x&&e.max.x>=t.min.x&&e.max.y>=t.min.y&&e.min.y<=t.max.y},n.translate=function(e,t){e.min.x+=t.x,e.max.x+=t.x,e.min.y+=t.y,e.max.y+=t.y},n.shift=function(e,t){var n=e.max.x-e.min.x,o=e.max.y-e.min.y;e.min.x=t.x,e.max.x=t.x+n,e.min.y=t.y,e.max.y=t.y+o}},function(e,t){var n={};e.exports=n,n.create=function(e,t){return{x:e||0,y:t||0}},n.clone=function(e){return{x:e.x,y:e.y}},n.magnitude=function(e){return Math.sqrt(e.x*e.x+e.y*e.y)},n.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},n.rotate=function(e,t,output){var n=Math.cos(t),o=Math.sin(t);output||(output={});var r=e.x*n-e.y*o;return output.y=e.x*o+e.y*n,output.x=r,output},n.rotateAbout=function(e,t,n,output){var o=Math.cos(t),r=Math.sin(t);output||(output={});var l=n.x+((e.x-n.x)*o-(e.y-n.y)*r);return output.y=n.y+((e.x-n.x)*r+(e.y-n.y)*o),output.x=l,output},n.normalise=function(e){var t=n.magnitude(e);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},n.dot=function(e,t){return e.x*t.x+e.y*t.y},n.cross=function(e,t){return e.x*t.y-e.y*t.x},n.cross3=function(e,t,n){return(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)},n.add=function(e,t,output){return output||(output={}),output.x=e.x+t.x,output.y=e.y+t.y,output},n.sub=function(e,t,output){return output||(output={}),output.x=e.x-t.x,output.y=e.y-t.y,output},n.mult=function(e,t){return{x:e.x*t,y:e.y*t}},n.div=function(e,t){return{x:e.x/t,y:e.y/t}},n.perp=function(e,t){return{x:(t=!0===t?-1:1)*-e.y,y:t*e.x}},n.neg=function(e){return{x:-e.x,y:-e.y}},n.angle=function(e,t){return Math.atan2(t.y-e.y,t.x-e.x)},n._temp=[n.create(),n.create(),n.create(),n.create(),n.create(),n.create()]},function(e,t,n){var o={};e.exports=o;var r=n(2),l=n(0);o.create=function(e,body){for(var t=[],i=0;i<e.length;i++){var n=e[i],o={x:n.x,y:n.y,index:i,body:body,isInternal:!1};t.push(o)}return t},o.fromPath=function(path,body){var e=[];return path.replace(/L?\s*([-\d.e]+)[\s,]*([-\d.e]+)*/gi,(function(t,n,o){e.push({x:parseFloat(n),y:parseFloat(o)})})),o.create(e,body)},o.centre=function(e){for(var t,n,l,area=o.area(e,!0),c={x:0,y:0},i=0;i<e.length;i++)l=(i+1)%e.length,t=r.cross(e[i],e[l]),n=r.mult(r.add(e[i],e[l]),t),c=r.add(c,n);return r.div(c,6*area)},o.mean=function(e){for(var t={x:0,y:0},i=0;i<e.length;i++)t.x+=e[i].x,t.y+=e[i].y;return r.div(t,e.length)},o.area=function(e,t){for(var area=0,n=e.length-1,i=0;i<e.length;i++)area+=(e[n].x-e[i].x)*(e[n].y+e[i].y),n=i;return t?area/2:Math.abs(area)/2},o.inertia=function(e,t){for(var n,o,l=0,c=0,d=e,f=0;f<d.length;f++)o=(f+1)%d.length,l+=(n=Math.abs(r.cross(d[o],d[f])))*(r.dot(d[o],d[o])+r.dot(d[o],d[f])+r.dot(d[f],d[f])),c+=n;return t/6*(l/c)},o.translate=function(e,t,n){n=void 0!==n?n:1;var i,o=e.length,r=t.x*n,l=t.y*n;for(i=0;i<o;i++)e[i].x+=r,e[i].y+=l;return e},o.rotate=function(e,t,n){if(0!==t){var o,r,l,i,c=Math.cos(t),d=Math.sin(t),f=n.x,v=n.y,y=e.length;for(i=0;i<y;i++)r=(o=e[i]).x-f,l=o.y-v,o.x=f+(r*c-l*d),o.y=v+(r*d+l*c);return e}},o.contains=function(e,t){for(var n,o=t.x,r=t.y,l=e.length,c=e[l-1],i=0;i<l;i++){if(n=e[i],(o-c.x)*(n.y-c.y)+(r-c.y)*(c.x-n.x)>0)return!1;c=n}return!0},o.scale=function(e,t,n,l){if(1===t&&1===n)return e;var c,d;l=l||o.centre(e);for(var i=0;i<e.length;i++)c=e[i],d=r.sub(c,l),e[i].x=l.x+d.x*t,e[i].y=l.y+d.y*n;return e},o.chamfer=function(e,t,n,o,c){t="number"==typeof t?[t]:t||[8],n=void 0!==n?n:-1,o=o||2,c=c||14;for(var d=[],i=0;i<e.length;i++){var f=e[i-1>=0?i-1:e.length-1],v=e[i],y=e[(i+1)%e.length],m=t[i<t.length?i:t.length-1];if(0!==m){var x=r.normalise({x:v.y-f.y,y:f.x-v.x}),h=r.normalise({x:y.y-v.y,y:v.x-y.x}),S=Math.sqrt(2*Math.pow(m,2)),w=r.mult(l.clone(x),m),A=r.normalise(r.mult(r.add(x,h),.5)),P=r.sub(v,r.mult(A,S)),C=n;-1===n&&(C=1.75*Math.pow(m,.32)),(C=l.clamp(C,o,c))%2==1&&(C+=1);for(var B=Math.acos(r.dot(x,h))/C,M=0;M<C;M++)d.push(r.add(r.rotate(w,B*M),P))}else d.push(v)}return d},o.clockwiseSort=function(e){var t=o.mean(e);return e.sort((function(e,n){return r.angle(t,e)-r.angle(t,n)})),e},o.isConvex=function(e){var i,t,n,o,r=0,l=e.length;if(l<3)return null;for(i=0;i<l;i++)if(n=(i+2)%l,o=(e[t=(i+1)%l].x-e[i].x)*(e[n].y-e[t].y),(o-=(e[t].y-e[i].y)*(e[n].x-e[t].x))<0?r|=1:o>0&&(r|=2),3===r)return!1;return 0!==r||null},o.hull=function(e){var t,i,n=[],o=[];for((e=e.slice(0)).sort((function(e,t){var n=e.x-t.x;return 0!==n?n:e.y-t.y})),i=0;i<e.length;i+=1){for(t=e[i];o.length>=2&&r.cross3(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}for(i=e.length-1;i>=0;i-=1){for(t=e[i];n.length>=2&&r.cross3(n[n.length-2],n[n.length-1],t)<=0;)n.pop();n.push(t)}return n.pop(),o.pop(),n.concat(o)}},function(e,t,n){var o={};e.exports=o;var r=n(3),l=n(2),c=n(7),d=n(0),f=n(1),v=n(11);!function(){o._timeCorrection=!0,o._inertiaScale=4,o._nextCollidingGroupId=1,o._nextNonCollidingGroupId=-1,o._nextCategory=1,o._baseDelta=1e3/60,o.create=function(t){var n={id:d.nextId(),type:"body",label:"Body",parts:[],plugin:{},angle:0,vertices:r.fromPath("L 0 0 L 40 0 L 40 40 L 0 40"),position:{x:0,y:0},force:{x:0,y:0},torque:0,positionImpulse:{x:0,y:0},constraintImpulse:{x:0,y:0,angle:0},totalContacts:0,speed:0,angularSpeed:0,velocity:{x:0,y:0},angularVelocity:0,isSensor:!1,isStatic:!1,isSleeping:!1,motion:0,sleepThreshold:60,density:.001,restitution:0,friction:.1,frictionStatic:.5,frictionAir:.01,collisionFilter:{category:1,mask:4294967295,group:0},slop:.05,timeScale:1,render:{visible:!0,opacity:1,strokeStyle:null,fillStyle:null,lineWidth:null,sprite:{xScale:1,yScale:1,xOffset:0,yOffset:0}},events:null,bounds:null,chamfer:null,circleRadius:0,positionPrev:null,anglePrev:0,parent:null,axes:null,area:0,mass:0,inertia:0,deltaTime:1e3/60,_original:null},body=d.extend(n,t);return e(body,t),body},o.nextGroup=function(e){return e?o._nextNonCollidingGroupId--:o._nextCollidingGroupId++},o.nextCategory=function(){return o._nextCategory=o._nextCategory<<1,o._nextCategory};var e=function(body,e){e=e||{},o.set(body,{bounds:body.bounds||f.create(body.vertices),positionPrev:body.positionPrev||l.clone(body.position),anglePrev:body.anglePrev||body.angle,vertices:body.vertices,parts:body.parts||[body],isStatic:body.isStatic,isSleeping:body.isSleeping,parent:body.parent||body}),r.rotate(body.vertices,body.angle,body.position),v.rotate(body.axes,body.angle),f.update(body.bounds,body.vertices,body.velocity),o.set(body,{axes:e.axes||body.axes,area:e.area||body.area,mass:e.mass||body.mass,inertia:e.inertia||body.inertia});var t=body.isStatic?"#14151f":d.choose(["#f19648","#f5d259","#f55a3c","#063e7b","#ececd1"]),n=body.isStatic?"#555":"#ccc",c=body.isStatic&&null===body.render.fillStyle?1:0;body.render.fillStyle=body.render.fillStyle||t,body.render.strokeStyle=body.render.strokeStyle||n,body.render.lineWidth=body.render.lineWidth||c,body.render.sprite.xOffset+=-(body.bounds.min.x-body.position.x)/(body.bounds.max.x-body.bounds.min.x),body.render.sprite.yOffset+=-(body.bounds.min.y-body.position.y)/(body.bounds.max.y-body.bounds.min.y)};o.set=function(body,e,t){var n;for(n in"string"==typeof e&&(n=e,(e={})[n]=t),e)if(Object.prototype.hasOwnProperty.call(e,n))switch(t=e[n],n){case"isStatic":o.setStatic(body,t);break;case"isSleeping":c.set(body,t);break;case"mass":o.setMass(body,t);break;case"density":o.setDensity(body,t);break;case"inertia":o.setInertia(body,t);break;case"vertices":o.setVertices(body,t);break;case"position":o.setPosition(body,t);break;case"angle":o.setAngle(body,t);break;case"velocity":o.setVelocity(body,t);break;case"angularVelocity":o.setAngularVelocity(body,t);break;case"speed":o.setSpeed(body,t);break;case"angularSpeed":o.setAngularSpeed(body,t);break;case"parts":o.setParts(body,t);break;case"centre":o.setCentre(body,t);break;default:body[n]=t}},o.setStatic=function(body,e){for(var i=0;i<body.parts.length;i++){var t=body.parts[i];t.isStatic=e,e?(t._original={restitution:t.restitution,friction:t.friction,mass:t.mass,inertia:t.inertia,density:t.density,inverseMass:t.inverseMass,inverseInertia:t.inverseInertia},t.restitution=0,t.friction=1,t.mass=t.inertia=t.density=1/0,t.inverseMass=t.inverseInertia=0,t.positionPrev.x=t.position.x,t.positionPrev.y=t.position.y,t.anglePrev=t.angle,t.angularVelocity=0,t.speed=0,t.angularSpeed=0,t.motion=0):t._original&&(t.restitution=t._original.restitution,t.friction=t._original.friction,t.mass=t._original.mass,t.inertia=t._original.inertia,t.density=t._original.density,t.inverseMass=t._original.inverseMass,t.inverseInertia=t._original.inverseInertia,t._original=null)}},o.setMass=function(body,e){var t=body.inertia/(body.mass/6);body.inertia=t*(e/6),body.inverseInertia=1/body.inertia,body.mass=e,body.inverseMass=1/body.mass,body.density=body.mass/body.area},o.setDensity=function(body,e){o.setMass(body,e*body.area),body.density=e},o.setInertia=function(body,e){body.inertia=e,body.inverseInertia=1/body.inertia},o.setVertices=function(body,e){e[0].body===body?body.vertices=e:body.vertices=r.create(e,body),body.axes=v.fromVertices(body.vertices),body.area=r.area(body.vertices),o.setMass(body,body.density*body.area);var t=r.centre(body.vertices);r.translate(body.vertices,t,-1),o.setInertia(body,o._inertiaScale*r.inertia(body.vertices,body.mass)),r.translate(body.vertices,body.position),f.update(body.bounds,body.vertices,body.velocity)},o.setParts=function(body,e,t){var i;for(e=e.slice(0),body.parts.length=0,body.parts.push(body),body.parent=body,i=0;i<e.length;i++){var n=e[i];n!==body&&(n.parent=body,body.parts.push(n))}if(1!==body.parts.length){if(t=void 0===t||t){var l=[];for(i=0;i<e.length;i++)l=l.concat(e[i].vertices);r.clockwiseSort(l);var c=r.hull(l),d=r.centre(c);o.setVertices(body,c),r.translate(body.vertices,d)}var f=o._totalProperties(body);body.area=f.area,body.parent=body,body.position.x=f.centre.x,body.position.y=f.centre.y,body.positionPrev.x=f.centre.x,body.positionPrev.y=f.centre.y,o.setMass(body,f.mass),o.setInertia(body,f.inertia),o.setPosition(body,f.centre)}},o.setCentre=function(body,e,t){t?(body.positionPrev.x+=e.x,body.positionPrev.y+=e.y,body.position.x+=e.x,body.position.y+=e.y):(body.positionPrev.x=e.x-(body.position.x-body.positionPrev.x),body.positionPrev.y=e.y-(body.position.y-body.positionPrev.y),body.position.x=e.x,body.position.y=e.y)},o.setPosition=function(body,e,t){var n=l.sub(e,body.position);t?(body.positionPrev.x=body.position.x,body.positionPrev.y=body.position.y,body.velocity.x=n.x,body.velocity.y=n.y,body.speed=l.magnitude(n)):(body.positionPrev.x+=n.x,body.positionPrev.y+=n.y);for(var i=0;i<body.parts.length;i++){var o=body.parts[i];o.position.x+=n.x,o.position.y+=n.y,r.translate(o.vertices,n),f.update(o.bounds,o.vertices,body.velocity)}},o.setAngle=function(body,e,t){var n=e-body.angle;t?(body.anglePrev=body.angle,body.angularVelocity=n,body.angularSpeed=Math.abs(n)):body.anglePrev+=n;for(var i=0;i<body.parts.length;i++){var o=body.parts[i];o.angle+=n,r.rotate(o.vertices,n,body.position),v.rotate(o.axes,n),f.update(o.bounds,o.vertices,body.velocity),i>0&&l.rotateAbout(o.position,n,body.position,o.position)}},o.setVelocity=function(body,e){var t=body.deltaTime/o._baseDelta;body.positionPrev.x=body.position.x-e.x*t,body.positionPrev.y=body.position.y-e.y*t,body.velocity.x=(body.position.x-body.positionPrev.x)/t,body.velocity.y=(body.position.y-body.positionPrev.y)/t,body.speed=l.magnitude(body.velocity)},o.getVelocity=function(body){var e=o._baseDelta/body.deltaTime;return{x:(body.position.x-body.positionPrev.x)*e,y:(body.position.y-body.positionPrev.y)*e}},o.getSpeed=function(body){return l.magnitude(o.getVelocity(body))},o.setSpeed=function(body,e){o.setVelocity(body,l.mult(l.normalise(o.getVelocity(body)),e))},o.setAngularVelocity=function(body,e){var t=body.deltaTime/o._baseDelta;body.anglePrev=body.angle-e*t,body.angularVelocity=(body.angle-body.anglePrev)/t,body.angularSpeed=Math.abs(body.angularVelocity)},o.getAngularVelocity=function(body){return(body.angle-body.anglePrev)*o._baseDelta/body.deltaTime},o.getAngularSpeed=function(body){return Math.abs(o.getAngularVelocity(body))},o.setAngularSpeed=function(body,e){o.setAngularVelocity(body,d.sign(o.getAngularVelocity(body))*e)},o.translate=function(body,e,t){o.setPosition(body,l.add(body.position,e),t)},o.rotate=function(body,e,t,n){if(t){var r=Math.cos(e),l=Math.sin(e),c=body.position.x-t.x,d=body.position.y-t.y;o.setPosition(body,{x:t.x+(c*r-d*l),y:t.y+(c*l+d*r)},n),o.setAngle(body,body.angle+e,n)}else o.setAngle(body,body.angle+e,n)},o.scale=function(body,e,t,n){var l=0,c=0;n=n||body.position;for(var i=0;i<body.parts.length;i++){var d=body.parts[i];r.scale(d.vertices,e,t,n),d.axes=v.fromVertices(d.vertices),d.area=r.area(d.vertices),o.setMass(d,body.density*d.area),r.translate(d.vertices,{x:-d.position.x,y:-d.position.y}),o.setInertia(d,o._inertiaScale*r.inertia(d.vertices,d.mass)),r.translate(d.vertices,{x:d.position.x,y:d.position.y}),i>0&&(l+=d.area,c+=d.inertia),d.position.x=n.x+(d.position.x-n.x)*e,d.position.y=n.y+(d.position.y-n.y)*t,f.update(d.bounds,d.vertices,body.velocity)}body.parts.length>1&&(body.area=l,body.isStatic||(o.setMass(body,body.density*l),o.setInertia(body,c))),body.circleRadius&&(e===t?body.circleRadius*=e:body.circleRadius=null)},o.update=function(body,e){var t=(e=(void 0!==e?e:1e3/60)*body.timeScale)*e,n=o._timeCorrection?e/(body.deltaTime||e):1,c=1-body.frictionAir*(e/d._baseDelta),y=(body.position.x-body.positionPrev.x)*n,m=(body.position.y-body.positionPrev.y)*n;body.velocity.x=y*c+body.force.x/body.mass*t,body.velocity.y=m*c+body.force.y/body.mass*t,body.positionPrev.x=body.position.x,body.positionPrev.y=body.position.y,body.position.x+=body.velocity.x,body.position.y+=body.velocity.y,body.deltaTime=e,body.angularVelocity=(body.angle-body.anglePrev)*c*n+body.torque/body.inertia*t,body.anglePrev=body.angle,body.angle+=body.angularVelocity;for(var i=0;i<body.parts.length;i++){var x=body.parts[i];r.translate(x.vertices,body.velocity),i>0&&(x.position.x+=body.velocity.x,x.position.y+=body.velocity.y),0!==body.angularVelocity&&(r.rotate(x.vertices,body.angularVelocity,body.position),v.rotate(x.axes,body.angularVelocity),i>0&&l.rotateAbout(x.position,body.angularVelocity,body.position,x.position)),f.update(x.bounds,x.vertices,body.velocity)}},o.updateVelocities=function(body){var e=o._baseDelta/body.deltaTime,t=body.velocity;t.x=(body.position.x-body.positionPrev.x)*e,t.y=(body.position.y-body.positionPrev.y)*e,body.speed=Math.sqrt(t.x*t.x+t.y*t.y),body.angularVelocity=(body.angle-body.anglePrev)*e,body.angularSpeed=Math.abs(body.angularVelocity)},o.applyForce=function(body,e,t){var n=e.x-body.position.x,o=e.y-body.position.y;body.force.x+=t.x,body.force.y+=t.y,body.torque+=n*t.y-o*t.x},o._totalProperties=function(body){for(var e={mass:0,area:0,inertia:0,centre:{x:0,y:0}},i=1===body.parts.length?0:1;i<body.parts.length;i++){var t=body.parts[i],n=t.mass!==1/0?t.mass:1;e.mass+=n,e.area+=t.area,e.inertia+=t.inertia,e.centre=l.add(e.centre,l.mult(t.position,n))}return e.centre=l.div(e.centre,e.mass),e}}()},function(e,t,n){var o={};e.exports=o;var r=n(0);o.on=function(object,e,t){for(var n,o=e.split(" "),i=0;i<o.length;i++)n=o[i],object.events=object.events||{},object.events[n]=object.events[n]||[],object.events[n].push(t);return t},o.off=function(object,e,t){if(e){"function"==typeof e&&(t=e,e=r.keys(object.events).join(" "));for(var n=e.split(" "),i=0;i<n.length;i++){var o=object.events[n[i]],l=[];if(t&&o)for(var c=0;c<o.length;c++)o[c]!==t&&l.push(o[c]);object.events[n[i]]=l}}else object.events={}},o.trigger=function(object,e,t){var n,o,l,c,d=object.events;if(d&&r.keys(d).length>0){t||(t={}),n=e.split(" ");for(var i=0;i<n.length;i++)if(l=d[o=n[i]]){(c=r.clone(t,!1)).name=o,c.source=object;for(var f=0;f<l.length;f++)l[f].apply(object,[c])}}}},function(e,t,n){var o={};e.exports=o;var r=n(5),l=n(0),c=n(1),d=n(4);o.create=function(e){return l.extend({id:l.nextId(),type:"composite",parent:null,isModified:!1,bodies:[],constraints:[],composites:[],label:"Composite",plugin:{},cache:{allBodies:null,allConstraints:null,allComposites:null}},e)},o.setModified=function(e,t,n,r){if(e.isModified=t,t&&e.cache&&(e.cache.allBodies=null,e.cache.allConstraints=null,e.cache.allComposites=null),n&&e.parent&&o.setModified(e.parent,t,n,r),r)for(var i=0;i<e.composites.length;i++){var l=e.composites[i];o.setModified(l,t,n,r)}},o.add=function(e,object){var t=[].concat(object);r.trigger(e,"beforeAdd",{object:object});for(var i=0;i<t.length;i++){var n=t[i];switch(n.type){case"body":if(n.parent!==n){l.warn("Composite.add: skipped adding a compound body part (you must add its parent instead)");break}o.addBody(e,n);break;case"constraint":o.addConstraint(e,n);break;case"composite":o.addComposite(e,n);break;case"mouseConstraint":o.addConstraint(e,n.constraint)}}return r.trigger(e,"afterAdd",{object:object}),e},o.remove=function(e,object,t){var n=[].concat(object);r.trigger(e,"beforeRemove",{object:object});for(var i=0;i<n.length;i++){var l=n[i];switch(l.type){case"body":o.removeBody(e,l,t);break;case"constraint":o.removeConstraint(e,l,t);break;case"composite":o.removeComposite(e,l,t);break;case"mouseConstraint":o.removeConstraint(e,l.constraint)}}return r.trigger(e,"afterRemove",{object:object}),e},o.addComposite=function(e,t){return e.composites.push(t),t.parent=e,o.setModified(e,!0,!0,!1),e},o.removeComposite=function(e,t,n){var r=l.indexOf(e.composites,t);if(-1!==r&&o.removeCompositeAt(e,r),n)for(var i=0;i<e.composites.length;i++)o.removeComposite(e.composites[i],t,!0);return e},o.removeCompositeAt=function(e,t){return e.composites.splice(t,1),o.setModified(e,!0,!0,!1),e},o.addBody=function(e,body){return e.bodies.push(body),o.setModified(e,!0,!0,!1),e},o.removeBody=function(e,body,t){var n=l.indexOf(e.bodies,body);if(-1!==n&&o.removeBodyAt(e,n),t)for(var i=0;i<e.composites.length;i++)o.removeBody(e.composites[i],body,!0);return e},o.removeBodyAt=function(e,t){return e.bodies.splice(t,1),o.setModified(e,!0,!0,!1),e},o.addConstraint=function(e,t){return e.constraints.push(t),o.setModified(e,!0,!0,!1),e},o.removeConstraint=function(e,t,n){var r=l.indexOf(e.constraints,t);if(-1!==r&&o.removeConstraintAt(e,r),n)for(var i=0;i<e.composites.length;i++)o.removeConstraint(e.composites[i],t,!0);return e},o.removeConstraintAt=function(e,t){return e.constraints.splice(t,1),o.setModified(e,!0,!0,!1),e},o.clear=function(e,t,n){if(n)for(var i=0;i<e.composites.length;i++)o.clear(e.composites[i],t,!0);return t?e.bodies=e.bodies.filter((function(body){return body.isStatic})):e.bodies.length=0,e.constraints.length=0,e.composites.length=0,o.setModified(e,!0,!0,!1),e},o.allBodies=function(e){if(e.cache&&e.cache.allBodies)return e.cache.allBodies;for(var t=[].concat(e.bodies),i=0;i<e.composites.length;i++)t=t.concat(o.allBodies(e.composites[i]));return e.cache&&(e.cache.allBodies=t),t},o.allConstraints=function(e){if(e.cache&&e.cache.allConstraints)return e.cache.allConstraints;for(var t=[].concat(e.constraints),i=0;i<e.composites.length;i++)t=t.concat(o.allConstraints(e.composites[i]));return e.cache&&(e.cache.allConstraints=t),t},o.allComposites=function(e){if(e.cache&&e.cache.allComposites)return e.cache.allComposites;for(var t=[].concat(e.composites),i=0;i<e.composites.length;i++)t=t.concat(o.allComposites(e.composites[i]));return e.cache&&(e.cache.allComposites=t),t},o.get=function(e,t,n){var r,object;switch(n){case"body":r=o.allBodies(e);break;case"constraint":r=o.allConstraints(e);break;case"composite":r=o.allComposites(e).concat(e)}return r?0===(object=r.filter((function(object){return object.id.toString()===t.toString()}))).length?null:object[0]:null},o.move=function(e,t,n){return o.remove(e,t),o.add(n,t),e},o.rebase=function(e){for(var t=o.allBodies(e).concat(o.allConstraints(e)).concat(o.allComposites(e)),i=0;i<t.length;i++)t[i].id=l.nextId();return e},o.translate=function(e,t,n){for(var r=n?o.allBodies(e):e.bodies,i=0;i<r.length;i++)d.translate(r[i],t);return e},o.rotate=function(e,t,n,r){for(var l=Math.cos(t),c=Math.sin(t),f=r?o.allBodies(e):e.bodies,i=0;i<f.length;i++){var body=f[i],v=body.position.x-n.x,y=body.position.y-n.y;d.setPosition(body,{x:n.x+(v*l-y*c),y:n.y+(v*c+y*l)}),d.rotate(body,t)}return e},o.scale=function(e,t,n,r,l){for(var c=l?o.allBodies(e):e.bodies,i=0;i<c.length;i++){var body=c[i],f=body.position.x-r.x,v=body.position.y-r.y;d.setPosition(body,{x:r.x+f*t,y:r.y+v*n}),d.scale(body,t,n)}return e},o.bounds=function(e){for(var t=o.allBodies(e),n=[],i=0;i<t.length;i+=1){var body=t[i];n.push(body.bounds.min,body.bounds.max)}return c.create(n)}},function(e,t,n){var o={};e.exports=o;var r=n(4),l=n(5),c=n(0);o._motionWakeThreshold=.18,o._motionSleepThreshold=.08,o._minBias=.9,o.update=function(e,t){for(var n=t/c._baseDelta,l=o._motionSleepThreshold,i=0;i<e.length;i++){var body=e[i],d=r.getSpeed(body),f=r.getAngularSpeed(body),v=d*d+f*f;if(0===body.force.x&&0===body.force.y){var y=Math.min(body.motion,v),m=Math.max(body.motion,v);body.motion=o._minBias*y+(1-o._minBias)*m,body.sleepThreshold>0&&body.motion<l?(body.sleepCounter+=1,body.sleepCounter>=body.sleepThreshold/n&&o.set(body,!0)):body.sleepCounter>0&&(body.sleepCounter-=1)}else o.set(body,!1)}},o.afterCollisions=function(e){for(var t=o._motionSleepThreshold,i=0;i<e.length;i++){var n=e[i];if(n.isActive){var r=n.collision,l=r.bodyA.parent,c=r.bodyB.parent;if(!(l.isSleeping&&c.isSleeping||l.isStatic||c.isStatic)&&(l.isSleeping||c.isSleeping)){var d=l.isSleeping&&!l.isStatic?l:c,f=d===l?c:l;!d.isStatic&&f.motion>t&&o.set(d,!1)}}}},o.set=function(body,e){var t=body.isSleeping;e?(body.isSleeping=!0,body.sleepCounter=body.sleepThreshold,body.positionImpulse.x=0,body.positionImpulse.y=0,body.positionPrev.x=body.position.x,body.positionPrev.y=body.position.y,body.anglePrev=body.angle,body.speed=0,body.angularSpeed=0,body.motion=0,t||l.trigger(body,"sleepStart")):(body.isSleeping=!1,body.sleepCounter=0,t&&l.trigger(body,"sleepEnd"))}},function(e,t,n){var o={};e.exports=o;var r,l,c,d=n(3),f=n(9);r=[],l={overlap:0,axis:null},c={overlap:0,axis:null},o.create=function(e,t){return{pair:null,collided:!1,bodyA:e,bodyB:t,parentA:e.parent,parentB:t.parent,depth:0,normal:{x:0,y:0},tangent:{x:0,y:0},penetration:{x:0,y:0},supports:[]}},o.collides=function(e,t,n){if(o._overlapAxes(l,e.vertices,t.vertices,e.axes),l.overlap<=0)return null;if(o._overlapAxes(c,t.vertices,e.vertices,t.axes),c.overlap<=0)return null;var r,v,y=n&&n.table[f.id(e,t)];y?r=y.collision:((r=o.create(e,t)).collided=!0,r.bodyA=e.id<t.id?e:t,r.bodyB=e.id<t.id?t:e,r.parentA=r.bodyA.parent,r.parentB=r.bodyB.parent),e=r.bodyA,t=r.bodyB,v=l.overlap<c.overlap?l:c;var m=r.normal,x=r.supports,h=v.axis,S=h.x,w=h.y;S*(t.position.x-e.position.x)+w*(t.position.y-e.position.y)<0?(m.x=S,m.y=w):(m.x=-S,m.y=-w),r.tangent.x=-m.y,r.tangent.y=m.x,r.depth=v.overlap,r.penetration.x=m.x*r.depth,r.penetration.y=m.y*r.depth;var A=o._findSupports(e,t,m,1),P=0;if(d.contains(e.vertices,A[0])&&(x[P++]=A[0]),d.contains(e.vertices,A[1])&&(x[P++]=A[1]),P<2){var C=o._findSupports(t,e,m,-1);d.contains(t.vertices,C[0])&&(x[P++]=C[0]),P<2&&d.contains(t.vertices,C[1])&&(x[P++]=C[1])}return 0===P&&(x[P++]=A[0]),x.length=P,r},o._overlapAxes=function(e,t,n,o){var r,l,c,d,i,f,v=t.length,y=n.length,m=t[0].x,x=t[0].y,h=n[0].x,S=n[0].y,w=o.length,A=Number.MAX_VALUE,P=0;for(i=0;i<w;i++){var C=o[i],B=C.x,M=C.y,_=m*B+x*M,k=h*B+S*M,I=_,T=k;for(f=1;f<v;f+=1)(d=t[f].x*B+t[f].y*M)>I?I=d:d<_&&(_=d);for(f=1;f<y;f+=1)(d=n[f].x*B+n[f].y*M)>T?T=d:d<k&&(k=d);if((r=(l=I-k)<(c=T-_)?l:c)<A&&(A=r,P=i,r<=0))break}e.axis=o[P],e.overlap=A},o._projectToAxis=function(e,t,n){for(var o=t[0].x*n.x+t[0].y*n.y,r=o,i=1;i<t.length;i+=1){var l=t[i].x*n.x+t[i].y*n.y;l>r?r=l:l<o&&(o=l)}e.min=o,e.max=r},o._findSupports=function(e,t,n,o){var l,c,d,f,v,y=t.vertices,m=y.length,x=e.position.x,h=e.position.y,S=n.x*o,w=n.y*o,A=Number.MAX_VALUE;for(v=0;v<m;v+=1)(f=S*(x-(c=y[v]).x)+w*(h-c.y))<A&&(A=f,l=c);return A=S*(x-(d=y[(m+l.index-1)%m]).x)+w*(h-d.y),S*(x-(c=y[(l.index+1)%m]).x)+w*(h-c.y)<A?(r[0]=l,r[1]=c,r):(r[0]=l,r[1]=d,r)}},function(e,t,n){var o={};e.exports=o;var r=n(16);o.create=function(e,t){var n=e.bodyA,r=e.bodyB,l={id:o.id(n,r),bodyA:n,bodyB:r,collision:e,contacts:[],activeContacts:[],separation:0,isActive:!0,confirmedActive:!0,isSensor:n.isSensor||r.isSensor,timeCreated:t,timeUpdated:t,inverseMass:0,friction:0,frictionStatic:0,restitution:0,slop:0};return o.update(l,e,t),l},o.update=function(e,t,n){var o=e.contacts,l=t.supports,c=e.activeContacts,d=t.parentA,f=t.parentB,v=d.vertices.length;e.isActive=!0,e.timeUpdated=n,e.collision=t,e.separation=t.depth,e.inverseMass=d.inverseMass+f.inverseMass,e.friction=d.friction<f.friction?d.friction:f.friction,e.frictionStatic=d.frictionStatic>f.frictionStatic?d.frictionStatic:f.frictionStatic,e.restitution=d.restitution>f.restitution?d.restitution:f.restitution,e.slop=d.slop>f.slop?d.slop:f.slop,t.pair=e,c.length=0;for(var i=0;i<l.length;i++){var y=l[i],m=y.body===d?y.index:v+y.index,x=o[m];x?c.push(x):c.push(o[m]=r.create(y))}},o.setActive=function(e,t,n){t?(e.isActive=!0,e.timeUpdated=n):(e.isActive=!1,e.activeContacts.length=0)},o.id=function(e,t){return e.id<t.id?"A"+e.id+"B"+t.id:"A"+t.id+"B"+e.id}},function(e,t,n){var o={};e.exports=o;var r=n(3),l=n(2),c=n(7),d=n(1),f=n(11),v=n(0);o._warming=.4,o._torqueDampen=1,o._minLength=1e-6,o.create=function(e){var t=e;t.bodyA&&!t.pointA&&(t.pointA={x:0,y:0}),t.bodyB&&!t.pointB&&(t.pointB={x:0,y:0});var n=t.bodyA?l.add(t.bodyA.position,t.pointA):t.pointA,o=t.bodyB?l.add(t.bodyB.position,t.pointB):t.pointB,r=l.magnitude(l.sub(n,o));t.length=void 0!==t.length?t.length:r,t.id=t.id||v.nextId(),t.label=t.label||"Constraint",t.type="constraint",t.stiffness=t.stiffness||(t.length>0?1:.7),t.damping=t.damping||0,t.angularStiffness=t.angularStiffness||0,t.angleA=t.bodyA?t.bodyA.angle:t.angleA,t.angleB=t.bodyB?t.bodyB.angle:t.angleB,t.plugin={};var c={visible:!0,lineWidth:2,strokeStyle:"#ffffff",type:"line",anchors:!0};return 0===t.length&&t.stiffness>.1?(c.type="pin",c.anchors=!1):t.stiffness<.9&&(c.type="spring"),t.render=v.extend(c,t.render),t},o.preSolveAll=function(e){for(var i=0;i<e.length;i+=1){var body=e[i],t=body.constraintImpulse;body.isStatic||0===t.x&&0===t.y&&0===t.angle||(body.position.x+=t.x,body.position.y+=t.y,body.angle+=t.angle)}},o.solveAll=function(e,t){for(var n=v.clamp(t/v._baseDelta,0,1),i=0;i<e.length;i+=1){var r=e[i],l=!r.bodyA||r.bodyA&&r.bodyA.isStatic,c=!r.bodyB||r.bodyB&&r.bodyB.isStatic;(l||c)&&o.solve(e[i],n)}for(i=0;i<e.length;i+=1)l=!(r=e[i]).bodyA||r.bodyA&&r.bodyA.isStatic,c=!r.bodyB||r.bodyB&&r.bodyB.isStatic,l||c||o.solve(e[i],n)},o.solve=function(e,t){var n=e.bodyA,r=e.bodyB,c=e.pointA,d=e.pointB;if(n||r){n&&!n.isStatic&&(l.rotate(c,n.angle-e.angleA,c),e.angleA=n.angle),r&&!r.isStatic&&(l.rotate(d,r.angle-e.angleB,d),e.angleB=r.angle);var f=c,v=d;if(n&&(f=l.add(n.position,c)),r&&(v=l.add(r.position,d)),f&&v){var y=l.sub(f,v),m=l.magnitude(y);m<o._minLength&&(m=o._minLength);var x,h,S,w,A,P=(m-e.length)/m,C=e.stiffness>=1||0===e.length?e.stiffness*t:e.stiffness*t*t,B=e.damping*t,M=l.mult(y,P*C),_=(n?n.inverseMass:0)+(r?r.inverseMass:0),k=_+((n?n.inverseInertia:0)+(r?r.inverseInertia:0));if(B>0){var I=l.create();S=l.div(y,m),A=l.sub(r&&l.sub(r.position,r.positionPrev)||I,n&&l.sub(n.position,n.positionPrev)||I),w=l.dot(S,A)}n&&!n.isStatic&&(h=n.inverseMass/_,n.constraintImpulse.x-=M.x*h,n.constraintImpulse.y-=M.y*h,n.position.x-=M.x*h,n.position.y-=M.y*h,B>0&&(n.positionPrev.x-=B*S.x*w*h,n.positionPrev.y-=B*S.y*w*h),x=l.cross(c,M)/k*o._torqueDampen*n.inverseInertia*(1-e.angularStiffness),n.constraintImpulse.angle-=x,n.angle-=x),r&&!r.isStatic&&(h=r.inverseMass/_,r.constraintImpulse.x+=M.x*h,r.constraintImpulse.y+=M.y*h,r.position.x+=M.x*h,r.position.y+=M.y*h,B>0&&(r.positionPrev.x+=B*S.x*w*h,r.positionPrev.y+=B*S.y*w*h),x=l.cross(d,M)/k*o._torqueDampen*r.inverseInertia*(1-e.angularStiffness),r.constraintImpulse.angle+=x,r.angle+=x)}}},o.postSolveAll=function(e){for(var i=0;i<e.length;i++){var body=e[i],t=body.constraintImpulse;if(!(body.isStatic||0===t.x&&0===t.y&&0===t.angle)){c.set(body,!1);for(var n=0;n<body.parts.length;n++){var v=body.parts[n];r.translate(v.vertices,t),n>0&&(v.position.x+=t.x,v.position.y+=t.y),0!==t.angle&&(r.rotate(v.vertices,t.angle,body.position),f.rotate(v.axes,t.angle),n>0&&l.rotateAbout(v.position,t.angle,body.position,v.position)),d.update(v.bounds,v.vertices,body.velocity)}t.angle*=o._warming,t.x*=o._warming,t.y*=o._warming}}},o.pointAWorld=function(e){return{x:(e.bodyA?e.bodyA.position.x:0)+(e.pointA?e.pointA.x:0),y:(e.bodyA?e.bodyA.position.y:0)+(e.pointA?e.pointA.y:0)}},o.pointBWorld=function(e){return{x:(e.bodyB?e.bodyB.position.x:0)+(e.pointB?e.pointB.x:0),y:(e.bodyB?e.bodyB.position.y:0)+(e.pointB?e.pointB.y:0)}}},function(e,t,n){var o={};e.exports=o;var r=n(2),l=n(0);o.fromVertices=function(e){for(var t={},i=0;i<e.length;i++){var n=(i+1)%e.length,o=r.normalise({x:e[n].y-e[i].y,y:e[i].x-e[n].x}),c=0===o.y?1/0:o.x/o.y;t[c=c.toFixed(3).toString()]=o}return l.values(t)},o.rotate=function(e,t){if(0!==t)for(var n=Math.cos(t),o=Math.sin(t),i=0;i<e.length;i++){var r,l=e[i];r=l.x*n-l.y*o,l.y=l.x*o+l.y*n,l.x=r}}},function(e,t,n){var o={};e.exports=o;var r=n(3),l=n(0),c=n(4),d=n(1),f=n(2);o.rectangle=function(e,t,n,o,d){d=d||{};var f={label:"Rectangle Body",position:{x:e,y:t},vertices:r.fromPath("L 0 0 L "+n+" 0 L "+n+" "+o+" L 0 "+o)};if(d.chamfer){var v=d.chamfer;f.vertices=r.chamfer(f.vertices,v.radius,v.quality,v.qualityMin,v.qualityMax),delete d.chamfer}return c.create(l.extend({},f,d))},o.trapezoid=function(e,t,n,o,d,f){f=f||{};var v,y=n*(d*=.5),m=y+(1-2*d)*n,x=m+y;v=d<.5?"L 0 0 L "+y+" "+-o+" L "+m+" "+-o+" L "+x+" 0":"L 0 0 L "+m+" "+-o+" L "+x+" 0";var h={label:"Trapezoid Body",position:{x:e,y:t},vertices:r.fromPath(v)};if(f.chamfer){var S=f.chamfer;h.vertices=r.chamfer(h.vertices,S.radius,S.quality,S.qualityMin,S.qualityMax),delete f.chamfer}return c.create(l.extend({},h,f))},o.circle=function(e,t,n,r,c){r=r||{};var circle={label:"Circle Body",circleRadius:n};c=c||25;var d=Math.ceil(Math.max(10,Math.min(c,n)));return d%2==1&&(d+=1),o.polygon(e,t,d,n,l.extend({},circle,r))},o.polygon=function(e,t,n,d,f){if(f=f||{},n<3)return o.circle(e,t,d,f);for(var v=2*Math.PI/n,path="",y=.5*v,i=0;i<n;i+=1){var m=y+i*v,x=Math.cos(m)*d,h=Math.sin(m)*d;path+="L "+x.toFixed(3)+" "+h.toFixed(3)+" "}var polygon={label:"Polygon Body",position:{x:e,y:t},vertices:r.fromPath(path)};if(f.chamfer){var S=f.chamfer;polygon.vertices=r.chamfer(polygon.vertices,S.radius,S.quality,S.qualityMin,S.qualityMax),delete f.chamfer}return c.create(l.extend({},polygon,f))},o.fromVertices=function(e,t,n,o,v,y,m,x){var h,body,S,w,A,i,P,C,B,M,_=l.getDecomp();for(h=Boolean(_&&_.quickDecomp),o=o||{},S=[],v=void 0!==v&&v,y=void 0!==y?y:.01,m=void 0!==m?m:10,x=void 0!==x?x:.01,l.isArray(n[0])||(n=[n]),B=0;B<n.length;B+=1)if(A=n[B],!(w=r.isConvex(A))&&!h&&l.warnOnce("Bodies.fromVertices: Install the 'poly-decomp' library and use Common.setDecomp or provide 'decomp' as a global to decompose concave vertices."),w||!h)A=w?r.clockwiseSort(A):r.hull(A),S.push({position:{x:e,y:t},vertices:A});else{var k=A.map((function(e){return[e.x,e.y]}));_.makeCCW(k),!1!==y&&_.removeCollinearPoints(k,y),!1!==x&&_.removeDuplicatePoints&&_.removeDuplicatePoints(k,x);var I=_.quickDecomp(k);for(i=0;i<I.length;i++){var T=I[i].map((function(e){return{x:e[0],y:e[1]}}));m>0&&r.area(T)<m||S.push({position:r.centre(T),vertices:T})}}for(i=0;i<S.length;i++)S[i]=c.create(l.extend(S[i],o));if(v)for(i=0;i<S.length;i++){var R=S[i];for(P=i+1;P<S.length;P++){var V=S[P];if(d.overlaps(R.bounds,V.bounds)){var E=R.vertices,L=V.vertices;for(C=0;C<R.vertices.length;C++)for(M=0;M<V.vertices.length;M++){var D=f.magnitudeSquared(f.sub(E[(C+1)%E.length],L[M])),O=f.magnitudeSquared(f.sub(E[C],L[(M+1)%L.length]));D<5&&O<5&&(E[C].isInternal=!0,L[M].isInternal=!0)}}}}return S.length>1?(body=c.create(l.extend({parts:S.slice(0)},o)),c.setPosition(body,{x:e,y:t}),body):S[0]}},function(e,t,n){var o={};e.exports=o;var r=n(0),l=n(8);o.create=function(e){return r.extend({bodies:[],pairs:null},e)},o.setBodies=function(e,t){e.bodies=t.slice(0)},o.clear=function(e){e.bodies=[]},o.collisions=function(e){var i,t,n=[],r=e.pairs,c=e.bodies,d=c.length,f=o.canCollide,v=l.collides;for(c.sort(o._compareBoundsX),i=0;i<d;i++){var y=c[i],m=y.bounds,x=y.bounds.max.x,h=y.bounds.max.y,S=y.bounds.min.y,w=y.isStatic||y.isSleeping,A=y.parts.length,P=1===A;for(t=i+1;t<d;t++){var C=c[t];if((V=C.bounds).min.x>x)break;if(!(h<V.min.y||S>V.max.y)&&(!w||!C.isStatic&&!C.isSleeping)&&f(y.collisionFilter,C.collisionFilter)){var B=C.parts.length;if(P&&1===B)(T=v(y,C,r))&&n.push(T);else for(var M=B>1?1:0,_=A>1?1:0;_<A;_++)for(var k=y.parts[_],I=(m=k.bounds,M);I<B;I++){var T,R=C.parts[I],V=R.bounds;m.min.x>V.max.x||m.max.x<V.min.x||m.max.y<V.min.y||m.min.y>V.max.y||(T=v(k,R,r))&&n.push(T)}}}}return n},o.canCollide=function(e,t){return e.group===t.group&&0!==e.group?e.group>0:!!(e.mask&t.category)&&!!(t.mask&e.category)},o._compareBoundsX=function(e,t){return e.bounds.min.x-t.bounds.min.x}},function(e,t,n){var o={};e.exports=o;var r=n(0);o.create=function(element){var e={};return element||r.log("Mouse.create: element was undefined, defaulting to document.body","warn"),e.element=element||document.body,e.absolute={x:0,y:0},e.position={x:0,y:0},e.mousedownPosition={x:0,y:0},e.mouseupPosition={x:0,y:0},e.offset={x:0,y:0},e.scale={x:1,y:1},e.wheelDelta=0,e.button=-1,e.pixelRatio=parseInt(e.element.getAttribute("data-pixel-ratio"),10)||1,e.sourceEvents={mousemove:null,mousedown:null,mouseup:null,mousewheel:null},e.mousemove=function(t){var n=o._getRelativeMousePosition(t,e.element,e.pixelRatio);t.changedTouches&&(e.button=0,t.preventDefault()),e.absolute.x=n.x,e.absolute.y=n.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y,e.sourceEvents.mousemove=t},e.mousedown=function(t){var n=o._getRelativeMousePosition(t,e.element,e.pixelRatio);t.changedTouches?(e.button=0,t.preventDefault()):e.button=t.button,e.absolute.x=n.x,e.absolute.y=n.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y,e.mousedownPosition.x=e.position.x,e.mousedownPosition.y=e.position.y,e.sourceEvents.mousedown=t},e.mouseup=function(t){var n=o._getRelativeMousePosition(t,e.element,e.pixelRatio);t.changedTouches&&t.preventDefault(),e.button=-1,e.absolute.x=n.x,e.absolute.y=n.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y,e.mouseupPosition.x=e.position.x,e.mouseupPosition.y=e.position.y,e.sourceEvents.mouseup=t},e.mousewheel=function(t){e.wheelDelta=Math.max(-1,Math.min(1,t.wheelDelta||-t.detail)),t.preventDefault()},o.setElement(e,e.element),e},o.setElement=function(e,element){e.element=element,element.addEventListener("mousemove",e.mousemove),element.addEventListener("mousedown",e.mousedown),element.addEventListener("mouseup",e.mouseup),element.addEventListener("mousewheel",e.mousewheel),element.addEventListener("DOMMouseScroll",e.mousewheel),element.addEventListener("touchmove",e.mousemove),element.addEventListener("touchstart",e.mousedown),element.addEventListener("touchend",e.mouseup)},o.clearSourceEvents=function(e){e.sourceEvents.mousemove=null,e.sourceEvents.mousedown=null,e.sourceEvents.mouseup=null,e.sourceEvents.mousewheel=null,e.wheelDelta=0},o.setOffset=function(e,t){e.offset.x=t.x,e.offset.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o.setScale=function(e,t){e.scale.x=t.x,e.scale.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o._getRelativeMousePosition=function(e,element,t){var n,o,r=element.getBoundingClientRect(),l=document.documentElement||document.body.parentNode||document.body,c=void 0!==window.pageXOffset?window.pageXOffset:l.scrollLeft,d=void 0!==window.pageYOffset?window.pageYOffset:l.scrollTop,f=e.changedTouches;return f?(n=f[0].pageX-r.left-c,o=f[0].pageY-r.top-d):(n=e.pageX-r.left-c,o=e.pageY-r.top-d),{x:n/(element.clientWidth/(element.width||element.clientWidth)*t),y:o/(element.clientHeight/(element.height||element.clientHeight)*t)}}},function(e,t,n){var o={};e.exports=o;var r=n(0);o._registry={},o.register=function(e){if(o.isPlugin(e)||r.warn("Plugin.register:",o.toString(e),"does not implement all required fields."),e.name in o._registry){var t=o._registry[e.name],n=o.versionParse(e.version).number,l=o.versionParse(t.version).number;n>l?(r.warn("Plugin.register:",o.toString(t),"was upgraded to",o.toString(e)),o._registry[e.name]=e):n<l?r.warn("Plugin.register:",o.toString(t),"can not be downgraded to",o.toString(e)):e!==t&&r.warn("Plugin.register:",o.toString(e),"is already registered to different plugin object")}else o._registry[e.name]=e;return e},o.resolve=function(e){return o._registry[o.dependencyParse(e).name]},o.toString=function(e){return"string"==typeof e?e:(e.name||"anonymous")+"@"+(e.version||e.range||"0.0.0")},o.isPlugin=function(e){return e&&e.name&&e.version&&e.install},o.isUsed=function(e,t){return e.used.indexOf(t)>-1},o.isFor=function(e,t){var n=e.for&&o.dependencyParse(e.for);return!e.for||t.name===n.name&&o.versionSatisfies(t.version,n.range)},o.use=function(e,t){if(e.uses=(e.uses||[]).concat(t||[]),0!==e.uses.length){for(var n=o.dependencies(e),l=r.topologicalSort(n),c=[],i=0;i<l.length;i+=1)if(l[i]!==e.name){var d=o.resolve(l[i]);d?o.isUsed(e,d.name)||(o.isFor(d,e)||(r.warn("Plugin.use:",o.toString(d),"is for",d.for,"but installed on",o.toString(e)+"."),d._warned=!0),d.install?d.install(e):(r.warn("Plugin.use:",o.toString(d),"does not specify an install function."),d._warned=!0),d._warned?(c.push("🔶 "+o.toString(d)),delete d._warned):c.push("✅ "+o.toString(d)),e.used.push(d.name)):c.push("❌ "+l[i])}c.length>0&&r.info(c.join("  "))}else r.warn("Plugin.use:",o.toString(e),"does not specify any dependencies to install.")},o.dependencies=function(e,t){var n=o.dependencyParse(e),l=n.name;if(!(l in(t=t||{}))){e=o.resolve(e)||e,t[l]=r.map(e.uses||[],(function(t){o.isPlugin(t)&&o.register(t);var l=o.dependencyParse(t),c=o.resolve(t);return c&&!o.versionSatisfies(c.version,l.range)?(r.warn("Plugin.dependencies:",o.toString(c),"does not satisfy",o.toString(l),"used by",o.toString(n)+"."),c._warned=!0,e._warned=!0):c||(r.warn("Plugin.dependencies:",o.toString(t),"used by",o.toString(n),"could not be resolved."),e._warned=!0),l.name}));for(var i=0;i<t[l].length;i+=1)o.dependencies(t[l][i],t);return t}},o.dependencyParse=function(e){return r.isString(e)?(/^[\w-]+(@(\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-+]+)?))?$/.test(e)||r.warn("Plugin.dependencyParse:",e,"is not a valid dependency string."),{name:e.split("@")[0],range:e.split("@")[1]||"*"}):{name:e.name,range:e.range||e.version}},o.versionParse=function(e){var pattern=/^(\*)|(\^|~|>=|>)?\s*((\d+)\.(\d+)\.(\d+))(-[0-9A-Za-z-+]+)?$/;pattern.test(e)||r.warn("Plugin.versionParse:",e,"is not a valid version or range.");var t=pattern.exec(e),n=Number(t[4]),o=Number(t[5]),l=Number(t[6]);return{isRange:Boolean(t[1]||t[2]),version:t[3],range:e,operator:t[1]||t[2]||"",major:n,minor:o,patch:l,parts:[n,o,l],prerelease:t[7],number:1e8*n+1e4*o+l}},o.versionSatisfies=function(e,t){t=t||"*";var n=o.versionParse(t),r=o.versionParse(e);if(n.isRange){if("*"===n.operator||"*"===e)return!0;if(">"===n.operator)return r.number>n.number;if(">="===n.operator)return r.number>=n.number;if("~"===n.operator)return r.major===n.major&&r.minor===n.minor&&r.patch>=n.patch;if("^"===n.operator)return n.major>0?r.major===n.major&&r.number>=n.number:n.minor>0?r.minor===n.minor&&r.patch>=n.patch:r.patch===n.patch}return e===t||"*"===e}},function(e,t){var n={};e.exports=n,n.create=function(e){return{vertex:e,normalImpulse:0,tangentImpulse:0}}},function(e,t,n){var o={};e.exports=o;var r=n(7),l=n(18),c=n(13),d=n(19),f=n(5),v=n(6),y=n(10),m=n(0),x=n(4);o.create=function(e){e=e||{};var t=m.extend({positionIterations:6,velocityIterations:4,constraintIterations:2,enableSleeping:!1,events:[],plugin:{},gravity:{x:0,y:1,scale:.001},timing:{timestamp:0,timeScale:1,lastDelta:0,lastElapsed:0}},e);return t.world=e.world||v.create({label:"World"}),t.pairs=e.pairs||d.create(),t.detector=e.detector||c.create(),t.grid={buckets:[]},t.world.gravity=t.gravity,t.broadphase=t.grid,t.metrics={},t},o.update=function(e,t){var i,n=m.now(),x=e.world,h=e.detector,S=e.pairs,w=e.timing,A=w.timestamp;t=void 0!==t?t:m._baseDelta,t*=w.timeScale,w.timestamp+=t,w.lastDelta=t;var P={timestamp:w.timestamp,delta:t};f.trigger(e,"beforeUpdate",P);var C=v.allBodies(x),B=v.allConstraints(x);for(x.isModified&&(c.setBodies(h,C),v.setModified(x,!1,!1,!0)),e.enableSleeping&&r.update(C,t),o._bodiesApplyGravity(C,e.gravity),t>0&&o._bodiesUpdate(C,t),y.preSolveAll(C),i=0;i<e.constraintIterations;i++)y.solveAll(B,t);y.postSolveAll(C),h.pairs=e.pairs;var M=c.collisions(h);d.update(S,M,A),e.enableSleeping&&r.afterCollisions(S.list),S.collisionStart.length>0&&f.trigger(e,"collisionStart",{pairs:S.collisionStart});var _=m.clamp(20/e.positionIterations,0,1);for(l.preSolvePosition(S.list),i=0;i<e.positionIterations;i++)l.solvePosition(S.list,t,_);for(l.postSolvePosition(C),y.preSolveAll(C),i=0;i<e.constraintIterations;i++)y.solveAll(B,t);for(y.postSolveAll(C),l.preSolveVelocity(S.list),i=0;i<e.velocityIterations;i++)l.solveVelocity(S.list,t);return o._bodiesUpdateVelocities(C),S.collisionActive.length>0&&f.trigger(e,"collisionActive",{pairs:S.collisionActive}),S.collisionEnd.length>0&&f.trigger(e,"collisionEnd",{pairs:S.collisionEnd}),o._bodiesClearForces(C),f.trigger(e,"afterUpdate",P),e.timing.lastElapsed=m.now()-n,e},o.merge=function(e,t){if(m.extend(e,t),t.world){e.world=t.world,o.clear(e);for(var n=v.allBodies(e.world),i=0;i<n.length;i++){var body=n[i];r.set(body,!1),body.id=m.nextId()}}},o.clear=function(e){d.clear(e.pairs),c.clear(e.detector)},o._bodiesClearForces=function(e){for(var t=e.length,i=0;i<t;i++){var body=e[i];body.force.x=0,body.force.y=0,body.torque=0}},o._bodiesApplyGravity=function(e,t){var n=void 0!==t.scale?t.scale:.001,o=e.length;if((0!==t.x||0!==t.y)&&0!==n)for(var i=0;i<o;i++){var body=e[i];body.isStatic||body.isSleeping||(body.force.y+=body.mass*t.y*n,body.force.x+=body.mass*t.x*n)}},o._bodiesUpdate=function(e,t){for(var n=e.length,i=0;i<n;i++){var body=e[i];body.isStatic||body.isSleeping||x.update(body,t)}},o._bodiesUpdateVelocities=function(e){for(var t=e.length,i=0;i<t;i++)x.updateVelocities(e[i])}},function(e,t,n){var o={};e.exports=o;var r=n(3),l=n(0),c=n(1);o._restingThresh=2,o._restingThreshTangent=Math.sqrt(6),o._positionDampen=.9,o._positionWarming=.8,o._frictionNormalMultiplier=5,o._frictionMaxStatic=Number.MAX_VALUE,o.preSolvePosition=function(e){var i,t,n,o=e.length;for(i=0;i<o;i++)(t=e[i]).isActive&&(n=t.activeContacts.length,t.collision.parentA.totalContacts+=n,t.collision.parentB.totalContacts+=n)},o.solvePosition=function(e,t,n){var i,r,c,d,f,v,y,m,x=o._positionDampen*(n||1),h=l.clamp(t/l._baseDelta,0,1),S=e.length;for(i=0;i<S;i++)(r=e[i]).isActive&&!r.isSensor&&(d=(c=r.collision).parentA,f=c.parentB,v=c.normal,r.separation=v.x*(f.positionImpulse.x+c.penetration.x-d.positionImpulse.x)+v.y*(f.positionImpulse.y+c.penetration.y-d.positionImpulse.y));for(i=0;i<S;i++)(r=e[i]).isActive&&!r.isSensor&&(d=(c=r.collision).parentA,f=c.parentB,v=c.normal,m=r.separation-r.slop*h,(d.isStatic||f.isStatic)&&(m*=2),d.isStatic||d.isSleeping||(y=x/d.totalContacts,d.positionImpulse.x+=v.x*m*y,d.positionImpulse.y+=v.y*m*y),f.isStatic||f.isSleeping||(y=x/f.totalContacts,f.positionImpulse.x-=v.x*m*y,f.positionImpulse.y-=v.y*m*y))},o.postSolvePosition=function(e){for(var t=o._positionWarming,n=e.length,l=r.translate,d=c.update,i=0;i<n;i++){var body=e[i],f=body.positionImpulse,v=f.x,y=f.y,m=body.velocity;if(body.totalContacts=0,0!==v||0!==y){for(var x=0;x<body.parts.length;x++){var h=body.parts[x];l(h.vertices,f),d(h.bounds,h.vertices,m),h.position.x+=v,h.position.y+=y}body.positionPrev.x+=v,body.positionPrev.y+=y,v*m.x+y*m.y<0?(f.x=0,f.y=0):(f.x*=t,f.y*=t)}}},o.preSolveVelocity=function(e){var i,t,n=e.length;for(i=0;i<n;i++){var o=e[i];if(o.isActive&&!o.isSensor){var r=o.activeContacts,l=r.length,c=o.collision,d=c.parentA,f=c.parentB,v=c.normal,y=c.tangent;for(t=0;t<l;t++){var m=r[t],x=m.vertex,h=m.normalImpulse,S=m.tangentImpulse;if(0!==h||0!==S){var w=v.x*h+y.x*S,A=v.y*h+y.y*S;d.isStatic||d.isSleeping||(d.positionPrev.x+=w*d.inverseMass,d.positionPrev.y+=A*d.inverseMass,d.anglePrev+=d.inverseInertia*((x.x-d.position.x)*A-(x.y-d.position.y)*w)),f.isStatic||f.isSleeping||(f.positionPrev.x-=w*f.inverseMass,f.positionPrev.y-=A*f.inverseMass,f.anglePrev-=f.inverseInertia*((x.x-f.position.x)*A-(x.y-f.position.y)*w))}}}}},o.solveVelocity=function(e,t){var n,r,i,c,d=t/l._baseDelta,f=d*d*d,v=-o._restingThresh*d,y=o._restingThreshTangent,m=o._frictionNormalMultiplier*d,x=o._frictionMaxStatic,h=e.length;for(i=0;i<h;i++){var S=e[i];if(S.isActive&&!S.isSensor){var w=S.collision,A=w.parentA,P=w.parentB,C=A.velocity,B=P.velocity,M=w.normal.x,_=w.normal.y,k=w.tangent.x,I=w.tangent.y,T=S.activeContacts,R=T.length,V=1/R,E=A.inverseMass+P.inverseMass,L=S.friction*S.frictionStatic*m;for(C.x=A.position.x-A.positionPrev.x,C.y=A.position.y-A.positionPrev.y,B.x=P.position.x-P.positionPrev.x,B.y=P.position.y-P.positionPrev.y,A.angularVelocity=A.angle-A.anglePrev,P.angularVelocity=P.angle-P.anglePrev,c=0;c<R;c++){var D=T[c],O=D.vertex,F=O.x-A.position.x,H=O.y-A.position.y,j=O.x-P.position.x,W=O.y-P.position.y,G=C.x-H*A.angularVelocity,U=C.y+F*A.angularVelocity,N=G-(B.x-W*P.angularVelocity),z=U-(B.y+j*P.angularVelocity),X=M*N+_*z,Q=k*N+I*z,Y=S.separation+X,Z=Math.min(Y,1),$=(Z=Y<0?0:Z)*L;Q<-$||Q>$?(r=Q>0?Q:-Q,(n=S.friction*(Q>0?1:-1)*f)<-r?n=-r:n>r&&(n=r)):(n=Q,r=x);var J=F*_-H*M,K=j*_-W*M,ee=V/(E+A.inverseInertia*J*J+P.inverseInertia*K*K),te=(1+S.restitution)*X*ee;if(n*=ee,X<v)D.normalImpulse=0;else{var ne=D.normalImpulse;D.normalImpulse+=te,D.normalImpulse>0&&(D.normalImpulse=0),te=D.normalImpulse-ne}if(Q<-y||Q>y)D.tangentImpulse=0;else{var ie=D.tangentImpulse;D.tangentImpulse+=n,D.tangentImpulse<-r&&(D.tangentImpulse=-r),D.tangentImpulse>r&&(D.tangentImpulse=r),n=D.tangentImpulse-ie}var oe=M*te+k*n,re=_*te+I*n;A.isStatic||A.isSleeping||(A.positionPrev.x+=oe*A.inverseMass,A.positionPrev.y+=re*A.inverseMass,A.anglePrev+=(F*re-H*oe)*A.inverseInertia),P.isStatic||P.isSleeping||(P.positionPrev.x-=oe*P.inverseMass,P.positionPrev.y-=re*P.inverseMass,P.anglePrev-=(j*re-W*oe)*P.inverseInertia)}}}}},function(e,t,n){var o={};e.exports=o;var r=n(9),l=n(0);o.create=function(e){return l.extend({table:{},list:[],collisionStart:[],collisionActive:[],collisionEnd:[]},e)},o.update=function(e,t,n){var o,l,c,i,d=e.list,f=d.length,v=e.table,y=t.length,m=e.collisionStart,x=e.collisionEnd,h=e.collisionActive;for(m.length=0,x.length=0,h.length=0,i=0;i<f;i++)d[i].confirmedActive=!1;for(i=0;i<y;i++)(c=(o=t[i]).pair)?(c.isActive?h.push(c):m.push(c),r.update(c,o,n),c.confirmedActive=!0):(v[(c=r.create(o,n)).id]=c,m.push(c),d.push(c));var S=[];for(f=d.length,i=0;i<f;i++)(c=d[i]).confirmedActive||(r.setActive(c,!1,n),x.push(c),c.collision.bodyA.isSleeping||c.collision.bodyB.isSleeping||S.push(i));for(i=0;i<S.length;i++)c=d[l=S[i]-i],d.splice(l,1),delete v[c.id]},o.clear=function(e){return e.table={},e.list.length=0,e.collisionStart.length=0,e.collisionActive.length=0,e.collisionEnd.length=0,e}},function(e,t,n){var o=e.exports=n(21);o.Axes=n(11),o.Bodies=n(12),o.Body=n(4),o.Bounds=n(1),o.Collision=n(8),o.Common=n(0),o.Composite=n(6),o.Composites=n(22),o.Constraint=n(10),o.Contact=n(16),o.Detector=n(13),o.Engine=n(17),o.Events=n(5),o.Grid=n(23),o.Mouse=n(14),o.MouseConstraint=n(24),o.Pair=n(9),o.Pairs=n(19),o.Plugin=n(15),o.Query=n(25),o.Render=n(26),o.Resolver=n(18),o.Runner=n(27),o.SAT=n(28),o.Sleeping=n(7),o.Svg=n(29),o.Vector=n(2),o.Vertices=n(3),o.World=n(30),o.Engine.run=o.Runner.run,o.Common.deprecated(o.Engine,"run","Engine.run ➤ use Matter.Runner.run(engine) instead")},function(e,t,n){var o={};e.exports=o;var r=n(15),l=n(0);o.name="matter-js",o.version="0.19.0",o.uses=[],o.used=[],o.use=function(){r.use(o,Array.prototype.slice.call(arguments))},o.before=function(path,e){return path=path.replace(/^Matter./,""),l.chainPathBefore(o,path,e)},o.after=function(path,e){return path=path.replace(/^Matter./,""),l.chainPathAfter(o,path,e)}},function(e,t,n){var o={};e.exports=o;var r=n(6),l=n(10),c=n(0),d=n(4),f=n(12),v=c.deprecated;o.stack=function(e,t,n,o,l,c,f){for(var v,y=r.create({label:"Stack"}),m=e,x=t,i=0,h=0;h<o;h++){for(var S=0,w=0;w<n;w++){var body=f(m,x,w,h,v,i);if(body){var A=body.bounds.max.y-body.bounds.min.y,P=body.bounds.max.x-body.bounds.min.x;A>S&&(S=A),d.translate(body,{x:.5*P,y:.5*A}),m=body.bounds.max.x+l,r.addBody(y,body),v=body,i+=1}else m+=l}x+=S+c,m=e}return y},o.chain=function(e,t,n,o,d,f){for(var v=e.bodies,i=1;i<v.length;i++){var y=v[i-1],m=v[i],x=y.bounds.max.y-y.bounds.min.y,h=y.bounds.max.x-y.bounds.min.x,S=m.bounds.max.y-m.bounds.min.y,w={bodyA:y,pointA:{x:h*t,y:x*n},bodyB:m,pointB:{x:(m.bounds.max.x-m.bounds.min.x)*o,y:S*d}},A=c.extend(w,f);r.addConstraint(e,l.create(A))}return e.label+=" Chain",e},o.mesh=function(e,t,n,o,d){var f,col,v,y,m,x=e.bodies;for(f=0;f<n;f++){for(col=1;col<t;col++)v=x[col-1+f*t],y=x[col+f*t],r.addConstraint(e,l.create(c.extend({bodyA:v,bodyB:y},d)));if(f>0)for(col=0;col<t;col++)v=x[col+(f-1)*t],y=x[col+f*t],r.addConstraint(e,l.create(c.extend({bodyA:v,bodyB:y},d))),o&&col>0&&(m=x[col-1+(f-1)*t],r.addConstraint(e,l.create(c.extend({bodyA:m,bodyB:y},d)))),o&&col<t-1&&(m=x[col+1+(f-1)*t],r.addConstraint(e,l.create(c.extend({bodyA:m,bodyB:y},d))))}return e.label+=" Mesh",e},o.pyramid=function(e,t,n,r,l,c,f){return o.stack(e,t,n,r,l,c,(function(t,o,c,v,y,i){var m=Math.min(r,Math.ceil(n/2)),x=y?y.bounds.max.x-y.bounds.min.x:0;if(!(v>m||c<(v=m-v)||c>n-1-v))return 1===i&&d.translate(y,{x:(c+(n%2==1?1:-1))*x,y:0}),f(e+(y?c*x:0)+c*l,o,c,v,y,i)}))},o.newtonsCradle=function(e,t,n,o,c){for(var d=r.create({label:"Newtons Cradle"}),i=0;i<n;i++){var circle=f.circle(e+i*(1.9*o),t+c,o,{inertia:1/0,restitution:1,friction:0,frictionAir:1e-4,slop:1}),v=l.create({pointA:{x:e+i*(1.9*o),y:t},bodyB:circle});r.addBody(d,circle),r.addConstraint(d,v)}return d},v(o,"newtonsCradle","Composites.newtonsCradle ➤ moved to newtonsCradle example"),o.car=function(e,t,n,o,c){var v=d.nextGroup(!0),y=.5*-n+20,m=.5*n-20,x=r.create({label:"Car"}),body=f.rectangle(e,t,n,o,{collisionFilter:{group:v},chamfer:{radius:.5*o},density:2e-4}),h=f.circle(e+y,t+0,c,{collisionFilter:{group:v},friction:.8}),S=f.circle(e+m,t+0,c,{collisionFilter:{group:v},friction:.8}),w=l.create({bodyB:body,pointB:{x:y,y:0},bodyA:h,stiffness:1,length:0}),A=l.create({bodyB:body,pointB:{x:m,y:0},bodyA:S,stiffness:1,length:0});return r.addBody(x,body),r.addBody(x,h),r.addBody(x,S),r.addConstraint(x,w),r.addConstraint(x,A),x},v(o,"car","Composites.car ➤ moved to car example"),o.softBody=function(e,t,n,r,l,d,v,y,m,x){m=c.extend({inertia:1/0},m),x=c.extend({stiffness:.2,render:{type:"line",anchors:!1}},x);var h=o.stack(e,t,n,r,l,d,(function(e,t){return f.circle(e,t,y,m)}));return o.mesh(h,n,r,v,x),h.label="Soft Body",h},v(o,"softBody","Composites.softBody ➤ moved to softBody and cloth examples")},function(e,t,n){var o={};e.exports=o;var r=n(9),l=n(0),c=l.deprecated;o.create=function(e){return l.extend({buckets:{},pairs:{},pairsList:[],bucketWidth:48,bucketHeight:48},e)},o.update=function(e,t,n,r){var i,col,l,c,d,f=n.world,v=e.buckets,y=!1;for(i=0;i<t.length;i++){var body=t[i];if((!body.isSleeping||r)&&(!f.bounds||!(body.bounds.max.x<f.bounds.min.x||body.bounds.min.x>f.bounds.max.x||body.bounds.max.y<f.bounds.min.y||body.bounds.min.y>f.bounds.max.y))){var m=o._getRegion(e,body);if(!body.region||m.id!==body.region.id||r){body.region&&!r||(body.region=m);var x=o._regionUnion(m,body.region);for(col=x.startCol;col<=x.endCol;col++)for(l=x.startRow;l<=x.endRow;l++){c=v[d=o._getBucketId(col,l)];var h=col>=m.startCol&&col<=m.endCol&&l>=m.startRow&&l<=m.endRow,S=col>=body.region.startCol&&col<=body.region.endCol&&l>=body.region.startRow&&l<=body.region.endRow;!h&&S&&S&&c&&o._bucketRemoveBody(e,c,body),(body.region===m||h&&!S||r)&&(c||(c=o._createBucket(v,d)),o._bucketAddBody(e,c,body))}body.region=m,y=!0}}}y&&(e.pairsList=o._createActivePairsList(e))},c(o,"update","Grid.update ➤ replaced by Matter.Detector"),o.clear=function(e){e.buckets={},e.pairs={},e.pairsList=[]},c(o,"clear","Grid.clear ➤ replaced by Matter.Detector"),o._regionUnion=function(e,t){var n=Math.min(e.startCol,t.startCol),r=Math.max(e.endCol,t.endCol),l=Math.min(e.startRow,t.startRow),c=Math.max(e.endRow,t.endRow);return o._createRegion(n,r,l,c)},o._getRegion=function(e,body){var t=body.bounds,n=Math.floor(t.min.x/e.bucketWidth),r=Math.floor(t.max.x/e.bucketWidth),l=Math.floor(t.min.y/e.bucketHeight),c=Math.floor(t.max.y/e.bucketHeight);return o._createRegion(n,r,l,c)},o._createRegion=function(e,t,n,o){return{id:e+","+t+","+n+","+o,startCol:e,endCol:t,startRow:n,endRow:o}},o._getBucketId=function(e,t){return"C"+e+"R"+t},o._createBucket=function(e,t){return e[t]=[]},o._bucketAddBody=function(e,t,body){var i,n=e.pairs,o=r.id,l=t.length;for(i=0;i<l;i++){var c=t[i];if(!(body.id===c.id||body.isStatic&&c.isStatic)){var d=o(body,c),f=n[d];f?f[2]+=1:n[d]=[body,c,1]}}t.push(body)},o._bucketRemoveBody=function(e,t,body){var i,n=e.pairs,o=r.id;t.splice(l.indexOf(t,body),1);var c=t.length;for(i=0;i<c;i++){var d=n[o(body,t[i])];d&&(d[2]-=1)}},o._createActivePairsList=function(e){var t,n,o=e.pairs,r=l.keys(o),c=r.length,d=[];for(n=0;n<c;n++)(t=o[r[n]])[2]>0?d.push(t):delete o[r[n]];return d}},function(e,t,n){var o={};e.exports=o;var r=n(3),l=n(7),c=n(14),d=n(5),f=n(13),v=n(10),y=n(6),m=n(0),x=n(1);o.create=function(e,t){var n=(e?e.mouse:null)||(t?t.mouse:null);n||(e&&e.render&&e.render.canvas?n=c.create(e.render.canvas):t&&t.element?n=c.create(t.element):(n=c.create(),m.warn("MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected")));var r={type:"mouseConstraint",mouse:n,element:null,body:null,constraint:v.create({label:"Mouse Constraint",pointA:n.position,pointB:{x:0,y:0},length:.01,stiffness:.1,angularStiffness:1,render:{strokeStyle:"#90EE90",lineWidth:3}}),collisionFilter:{category:1,mask:4294967295,group:0}},l=m.extend(r,t);return d.on(e,"beforeUpdate",(function(){var t=y.allBodies(e.world);o.update(l,t),o._triggerEvents(l)})),l},o.update=function(e,t){var n=e.mouse,o=e.constraint,body=e.body;if(0===n.button){if(o.bodyB)l.set(o.bodyB,!1),o.pointA=n.position;else for(var i=0;i<t.length;i++)if(body=t[i],x.contains(body.bounds,n.position)&&f.canCollide(body.collisionFilter,e.collisionFilter))for(var c=body.parts.length>1?1:0;c<body.parts.length;c++){var v=body.parts[c];if(r.contains(v.vertices,n.position)){o.pointA=n.position,o.bodyB=e.body=body,o.pointB={x:n.position.x-body.position.x,y:n.position.y-body.position.y},o.angleB=body.angle,l.set(body,!1),d.trigger(e,"startdrag",{mouse:n,body:body});break}}}else o.bodyB=e.body=null,o.pointB=null,body&&d.trigger(e,"enddrag",{mouse:n,body:body})},o._triggerEvents=function(e){var t=e.mouse,n=t.sourceEvents;n.mousemove&&d.trigger(e,"mousemove",{mouse:t}),n.mousedown&&d.trigger(e,"mousedown",{mouse:t}),n.mouseup&&d.trigger(e,"mouseup",{mouse:t}),c.clearSourceEvents(t)}},function(e,t,n){var o={};e.exports=o;var r=n(2),l=n(8),c=n(1),d=n(12),f=n(3);o.collides=function(body,e){for(var t=[],n=e.length,o=body.bounds,r=l.collides,d=c.overlaps,i=0;i<n;i++){var f=e[i],v=f.parts.length,y=1===v?0:1;if(d(f.bounds,o))for(var m=y;m<v;m++){var x=f.parts[m];if(d(x.bounds,o)){var h=r(x,body);if(h){t.push(h);break}}}}return t},o.ray=function(e,t,n,l){l=l||1e-100;for(var c=r.angle(t,n),f=r.magnitude(r.sub(t,n)),v=.5*(n.x+t.x),y=.5*(n.y+t.y),m=d.rectangle(v,y,f,l,{angle:c}),x=o.collides(m,e),i=0;i<x.length;i+=1){var h=x[i];h.body=h.bodyB=h.bodyA}return x},o.region=function(e,t,n){for(var o=[],i=0;i<e.length;i++){var body=e[i],r=c.overlaps(body.bounds,t);(r&&!n||!r&&n)&&o.push(body)}return o},o.point=function(e,t){for(var n=[],i=0;i<e.length;i++){var body=e[i];if(c.contains(body.bounds,t))for(var o=1===body.parts.length?0:1;o<body.parts.length;o++){var r=body.parts[o];if(c.contains(r.bounds,t)&&f.contains(r.vertices,t)){n.push(body);break}}}return n}},function(e,t,n){var o={};e.exports=o;var r=n(4),l=n(0),c=n(6),d=n(1),f=n(5),v=n(2),y=n(14);!function(){var e,t;"undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout((function(){e(l.now())}),1e3/60)},t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),o._goodFps=30,o._goodDelta=1e3/60,o.create=function(e){var t={engine:null,element:null,canvas:null,mouse:null,frameRequestId:null,timing:{historySize:60,delta:0,deltaHistory:[],lastTime:0,lastTimestamp:0,lastElapsed:0,timestampElapsed:0,timestampElapsedHistory:[],engineDeltaHistory:[],engineElapsedHistory:[],elapsedHistory:[]},options:{width:800,height:600,pixelRatio:1,background:"#14151f",wireframeBackground:"#14151f",hasBounds:!!e.bounds,enabled:!0,wireframes:!0,showSleeping:!0,showDebug:!1,showStats:!1,showPerformance:!1,showBounds:!1,showVelocity:!1,showCollisions:!1,showSeparations:!1,showAxes:!1,showPositions:!1,showAngleIndicator:!1,showIds:!1,showVertexNumbers:!1,showConvexHulls:!1,showInternalEdges:!1,showMousePosition:!1}},n=l.extend(t,e);return n.canvas&&(n.canvas.width=n.options.width||n.canvas.width,n.canvas.height=n.options.height||n.canvas.height),n.mouse=e.mouse,n.engine=e.engine,n.canvas=n.canvas||x(n.options.width,n.options.height),n.context=n.canvas.getContext("2d"),n.textures={},n.bounds=n.bounds||{min:{x:0,y:0},max:{x:n.canvas.width,y:n.canvas.height}},n.controller=o,n.options.showBroadphase=!1,1!==n.options.pixelRatio&&o.setPixelRatio(n,n.options.pixelRatio),l.isElement(n.element)&&n.element.appendChild(n.canvas),n},o.run=function(t){!function r(time){t.frameRequestId=e(r),n(t,time),o.world(t,time),(t.options.showStats||t.options.showDebug)&&o.stats(t,t.context,time),(t.options.showPerformance||t.options.showDebug)&&o.performance(t,t.context,time)}()},o.stop=function(e){t(e.frameRequestId)},o.setPixelRatio=function(e,t){var n=e.options,canvas=e.canvas;"auto"===t&&(t=h(canvas)),n.pixelRatio=t,canvas.setAttribute("data-pixel-ratio",t),canvas.width=n.width*t,canvas.height=n.height*t,canvas.style.width=n.width+"px",canvas.style.height=n.height+"px"},o.lookAt=function(e,t,n,o){o=void 0===o||o,t=l.isArray(t)?t:[t],n=n||{x:0,y:0};for(var r={min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}},i=0;i<t.length;i+=1){var object=t[i],c=object.bounds?object.bounds.min:object.min||object.position||object,d=object.bounds?object.bounds.max:object.max||object.position||object;c&&d&&(c.x<r.min.x&&(r.min.x=c.x),d.x>r.max.x&&(r.max.x=d.x),c.y<r.min.y&&(r.min.y=c.y),d.y>r.max.y&&(r.max.y=d.y))}var f=r.max.x-r.min.x+2*n.x,v=r.max.y-r.min.y+2*n.y,m=e.canvas.height,x=e.canvas.width/m,h=f/v,S=1,w=1;h>x?w=h/x:S=x/h,e.options.hasBounds=!0,e.bounds.min.x=r.min.x,e.bounds.max.x=r.min.x+f*S,e.bounds.min.y=r.min.y,e.bounds.max.y=r.min.y+v*w,o&&(e.bounds.min.x+=.5*f-f*S*.5,e.bounds.max.x+=.5*f-f*S*.5,e.bounds.min.y+=.5*v-v*w*.5,e.bounds.max.y+=.5*v-v*w*.5),e.bounds.min.x-=n.x,e.bounds.max.x-=n.x,e.bounds.min.y-=n.y,e.bounds.max.y-=n.y,e.mouse&&(y.setScale(e.mouse,{x:(e.bounds.max.x-e.bounds.min.x)/e.canvas.width,y:(e.bounds.max.y-e.bounds.min.y)/e.canvas.height}),y.setOffset(e.mouse,e.bounds.min))},o.startViewTransform=function(e){var t=e.bounds.max.x-e.bounds.min.x,n=e.bounds.max.y-e.bounds.min.y,o=t/e.options.width,r=n/e.options.height;e.context.setTransform(e.options.pixelRatio/o,0,0,e.options.pixelRatio/r,0,0),e.context.translate(-e.bounds.min.x,-e.bounds.min.y)},o.endViewTransform=function(e){e.context.setTransform(e.options.pixelRatio,0,0,e.options.pixelRatio,0,0)},o.world=function(e,time){var i,t=l.now(),n=e.engine,r=n.world,canvas=e.canvas,m=e.context,x=e.options,h=e.timing,S=c.allBodies(r),A=c.allConstraints(r),P=x.wireframes?x.wireframeBackground:x.background,C=[],B=[],M={timestamp:n.timing.timestamp};if(f.trigger(e,"beforeRender",M),e.currentBackground!==P&&w(e,P),m.globalCompositeOperation="source-in",m.fillStyle="transparent",m.fillRect(0,0,canvas.width,canvas.height),m.globalCompositeOperation="source-over",x.hasBounds){for(i=0;i<S.length;i++){var body=S[i];d.overlaps(body.bounds,e.bounds)&&C.push(body)}for(i=0;i<A.length;i++){var _=A[i],k=_.bodyA,I=_.bodyB,T=_.pointA,R=_.pointB;k&&(T=v.add(k.position,_.pointA)),I&&(R=v.add(I.position,_.pointB)),T&&R&&(d.contains(e.bounds,T)||d.contains(e.bounds,R))&&B.push(_)}o.startViewTransform(e),e.mouse&&(y.setScale(e.mouse,{x:(e.bounds.max.x-e.bounds.min.x)/e.options.width,y:(e.bounds.max.y-e.bounds.min.y)/e.options.height}),y.setOffset(e.mouse,e.bounds.min))}else B=A,C=S,1!==e.options.pixelRatio&&e.context.setTransform(e.options.pixelRatio,0,0,e.options.pixelRatio,0,0);!x.wireframes||n.enableSleeping&&x.showSleeping?o.bodies(e,C,m):(x.showConvexHulls&&o.bodyConvexHulls(e,C,m),o.bodyWireframes(e,C,m)),x.showBounds&&o.bodyBounds(e,C,m),(x.showAxes||x.showAngleIndicator)&&o.bodyAxes(e,C,m),x.showPositions&&o.bodyPositions(e,C,m),x.showVelocity&&o.bodyVelocity(e,C,m),x.showIds&&o.bodyIds(e,C,m),x.showSeparations&&o.separations(e,n.pairs.list,m),x.showCollisions&&o.collisions(e,n.pairs.list,m),x.showVertexNumbers&&o.vertexNumbers(e,C,m),x.showMousePosition&&o.mousePosition(e,e.mouse,m),o.constraints(B,m),x.hasBounds&&o.endViewTransform(e),f.trigger(e,"afterRender",M),h.lastElapsed=l.now()-t},o.stats=function(e,t,time){for(var n=e.engine,o=n.world,r=c.allBodies(o),l=0,d=0,i=0;i<r.length;i+=1)l+=r[i].parts.length;var f={Part:l,Body:r.length,Cons:c.allConstraints(o).length,Comp:c.allComposites(o).length,Pair:n.pairs.list.length};for(var v in t.fillStyle="#0e0f19",t.fillRect(d,0,302.5,44),t.font="12px Arial",t.textBaseline="top",t.textAlign="right",f){var section=f[v];t.fillStyle="#aaa",t.fillText(v,d+55,8),t.fillStyle="#eee",t.fillText(section,d+55,26),d+=55}},o.performance=function(e,t){var n=e.engine,r=e.timing,l=r.deltaHistory,c=r.elapsedHistory,d=r.timestampElapsedHistory,f=r.engineDeltaHistory,v=r.engineElapsedHistory,y=n.timing.lastDelta,x=m(l),h=m(c),S=m(f),w=m(v),A=m(d)/x||0,P=1e3/x||0,C=60;t.fillStyle="#0e0f19",t.fillRect(0,50,370,34),o.status(t,10,69,C,4,l.length,Math.round(P)+" fps",P/o._goodFps,(function(i){return l[i]/x-1})),o.status(t,82,69,C,4,f.length,y.toFixed(2)+" dt",o._goodDelta/y,(function(i){return f[i]/S-1})),o.status(t,154,69,C,4,v.length,w.toFixed(2)+" ut",1-w/o._goodFps,(function(i){return v[i]/w-1})),o.status(t,226,69,C,4,c.length,h.toFixed(2)+" rt",1-h/o._goodFps,(function(i){return c[i]/h-1})),o.status(t,298,69,C,4,d.length,A.toFixed(2)+" x",A*A*A,(function(i){return(d[i]/l[i]/A||0)-1}))},o.status=function(e,t,n,o,r,c,label,d,f){e.strokeStyle="#888",e.fillStyle="#444",e.lineWidth=1,e.fillRect(t,n+7,o,1),e.beginPath(),e.moveTo(t,n+7-r*l.clamp(.4*f(0),-2,2));for(var i=0;i<o;i+=1)e.lineTo(t+i,n+7-(i<c?r*l.clamp(.4*f(i),-2,2):0));e.stroke(),e.fillStyle="hsl("+l.clamp(25+95*d,0,120)+",100%,60%)",e.fillRect(t,n-7,4,4),e.font="12px Arial",e.textBaseline="middle",e.textAlign="right",e.fillStyle="#eee",e.fillText(label,t+o,n-5)},o.constraints=function(e,t){for(var n=t,i=0;i<e.length;i++){var o=e[i];if(o.render.visible&&o.pointA&&o.pointB){var r,c,d=o.bodyA,f=o.bodyB;if(r=d?v.add(d.position,o.pointA):o.pointA,"pin"===o.render.type)n.beginPath(),n.arc(r.x,r.y,3,0,2*Math.PI),n.closePath();else{if(c=f?v.add(f.position,o.pointB):o.pointB,n.beginPath(),n.moveTo(r.x,r.y),"spring"===o.render.type)for(var y,m=v.sub(c,r),x=v.perp(v.normalise(m)),h=Math.ceil(l.clamp(o.length/5,12,20)),S=1;S<h;S+=1)y=S%2==0?1:-1,n.lineTo(r.x+m.x*(S/h)+x.x*y*4,r.y+m.y*(S/h)+x.y*y*4);n.lineTo(c.x,c.y)}o.render.lineWidth&&(n.lineWidth=o.render.lineWidth,n.strokeStyle=o.render.strokeStyle,n.stroke()),o.render.anchors&&(n.fillStyle=o.render.strokeStyle,n.beginPath(),n.arc(r.x,r.y,3,0,2*Math.PI),n.arc(c.x,c.y,3,0,2*Math.PI),n.closePath(),n.fill())}}},o.bodies=function(e,t,n){var body,o,i,r,l=n,c=(e.engine,e.options),d=c.showInternalEdges||!c.wireframes;for(i=0;i<t.length;i++)if((body=t[i]).render.visible)for(r=body.parts.length>1?1:0;r<body.parts.length;r++)if((o=body.parts[r]).render.visible){if(c.showSleeping&&body.isSleeping?l.globalAlpha=.5*o.render.opacity:1!==o.render.opacity&&(l.globalAlpha=o.render.opacity),o.render.sprite&&o.render.sprite.texture&&!c.wireframes){var f=o.render.sprite,v=S(e,f.texture);l.translate(o.position.x,o.position.y),l.rotate(o.angle),l.drawImage(v,v.width*-f.xOffset*f.xScale,v.height*-f.yOffset*f.yScale,v.width*f.xScale,v.height*f.yScale),l.rotate(-o.angle),l.translate(-o.position.x,-o.position.y)}else{if(o.circleRadius)l.beginPath(),l.arc(o.position.x,o.position.y,o.circleRadius,0,2*Math.PI);else{l.beginPath(),l.moveTo(o.vertices[0].x,o.vertices[0].y);for(var y=1;y<o.vertices.length;y++)!o.vertices[y-1].isInternal||d?l.lineTo(o.vertices[y].x,o.vertices[y].y):l.moveTo(o.vertices[y].x,o.vertices[y].y),o.vertices[y].isInternal&&!d&&l.moveTo(o.vertices[(y+1)%o.vertices.length].x,o.vertices[(y+1)%o.vertices.length].y);l.lineTo(o.vertices[0].x,o.vertices[0].y),l.closePath()}c.wireframes?(l.lineWidth=1,l.strokeStyle="#bbb",l.stroke()):(l.fillStyle=o.render.fillStyle,o.render.lineWidth&&(l.lineWidth=o.render.lineWidth,l.strokeStyle=o.render.strokeStyle,l.stroke()),l.fill())}l.globalAlpha=1}},o.bodyWireframes=function(e,t,n){var body,o,i,r,l,c=n,d=e.options.showInternalEdges;for(c.beginPath(),i=0;i<t.length;i++)if((body=t[i]).render.visible)for(l=body.parts.length>1?1:0;l<body.parts.length;l++){for(o=body.parts[l],c.moveTo(o.vertices[0].x,o.vertices[0].y),r=1;r<o.vertices.length;r++)!o.vertices[r-1].isInternal||d?c.lineTo(o.vertices[r].x,o.vertices[r].y):c.moveTo(o.vertices[r].x,o.vertices[r].y),o.vertices[r].isInternal&&!d&&c.moveTo(o.vertices[(r+1)%o.vertices.length].x,o.vertices[(r+1)%o.vertices.length].y);c.lineTo(o.vertices[0].x,o.vertices[0].y)}c.lineWidth=1,c.strokeStyle="#bbb",c.stroke()},o.bodyConvexHulls=function(e,t,n){var body,i,o,r=n;for(r.beginPath(),i=0;i<t.length;i++)if((body=t[i]).render.visible&&1!==body.parts.length){for(r.moveTo(body.vertices[0].x,body.vertices[0].y),o=1;o<body.vertices.length;o++)r.lineTo(body.vertices[o].x,body.vertices[o].y);r.lineTo(body.vertices[0].x,body.vertices[0].y)}r.lineWidth=1,r.strokeStyle="rgba(255,255,255,0.2)",r.stroke()},o.vertexNumbers=function(e,t,n){var i,o,r,l=n;for(i=0;i<t.length;i++){var c=t[i].parts;for(r=c.length>1?1:0;r<c.length;r++){var d=c[r];for(o=0;o<d.vertices.length;o++)l.fillStyle="rgba(255,255,255,0.2)",l.fillText(i+"_"+o,d.position.x+.8*(d.vertices[o].x-d.position.x),d.position.y+.8*(d.vertices[o].y-d.position.y))}}},o.mousePosition=function(e,t,n){var o=n;o.fillStyle="rgba(255,255,255,0.8)",o.fillText(t.position.x+"  "+t.position.y,t.position.x+5,t.position.y-5)},o.bodyBounds=function(e,t,n){var o=n,r=(e.engine,e.options);o.beginPath();for(var i=0;i<t.length;i++)if(t[i].render.visible)for(var l=t[i].parts,c=l.length>1?1:0;c<l.length;c++){var d=l[c];o.rect(d.bounds.min.x,d.bounds.min.y,d.bounds.max.x-d.bounds.min.x,d.bounds.max.y-d.bounds.min.y)}r.wireframes?o.strokeStyle="rgba(255,255,255,0.08)":o.strokeStyle="rgba(0,0,0,0.1)",o.lineWidth=1,o.stroke()},o.bodyAxes=function(e,t,n){var o,i,r,l,c=n,d=(e.engine,e.options);for(c.beginPath(),i=0;i<t.length;i++){var body=t[i],f=body.parts;if(body.render.visible)if(d.showAxes)for(r=f.length>1?1:0;r<f.length;r++)for(o=f[r],l=0;l<o.axes.length;l++){var v=o.axes[l];c.moveTo(o.position.x,o.position.y),c.lineTo(o.position.x+20*v.x,o.position.y+20*v.y)}else for(r=f.length>1?1:0;r<f.length;r++)for(o=f[r],l=0;l<o.axes.length;l++)c.moveTo(o.position.x,o.position.y),c.lineTo((o.vertices[0].x+o.vertices[o.vertices.length-1].x)/2,(o.vertices[0].y+o.vertices[o.vertices.length-1].y)/2)}d.wireframes?(c.strokeStyle="indianred",c.lineWidth=1):(c.strokeStyle="rgba(255, 255, 255, 0.4)",c.globalCompositeOperation="overlay",c.lineWidth=2),c.stroke(),c.globalCompositeOperation="source-over"},o.bodyPositions=function(e,t,n){var body,o,i,r,l=n,c=(e.engine,e.options);for(l.beginPath(),i=0;i<t.length;i++)if((body=t[i]).render.visible)for(r=0;r<body.parts.length;r++)o=body.parts[r],l.arc(o.position.x,o.position.y,3,0,2*Math.PI,!1),l.closePath();for(c.wireframes?l.fillStyle="indianred":l.fillStyle="rgba(0,0,0,0.5)",l.fill(),l.beginPath(),i=0;i<t.length;i++)(body=t[i]).render.visible&&(l.arc(body.positionPrev.x,body.positionPrev.y,2,0,2*Math.PI,!1),l.closePath());l.fillStyle="rgba(255,165,0,0.8)",l.fill()},o.bodyVelocity=function(e,t,n){var o=n;o.beginPath();for(var i=0;i<t.length;i++){var body=t[i];if(body.render.visible){var l=r.getVelocity(body);o.moveTo(body.position.x,body.position.y),o.lineTo(body.position.x+l.x,body.position.y+l.y)}}o.lineWidth=3,o.strokeStyle="cornflowerblue",o.stroke()},o.bodyIds=function(e,t,n){var i,o,r=n;for(i=0;i<t.length;i++)if(t[i].render.visible){var l=t[i].parts;for(o=l.length>1?1:0;o<l.length;o++){var c=l[o];r.font="12px Arial",r.fillStyle="rgba(255,255,255,0.5)",r.fillText(c.id,c.position.x+10,c.position.y-10)}}},o.collisions=function(e,t,n){var o,r,i,l,c=n,d=e.options;for(c.beginPath(),i=0;i<t.length;i++)if((o=t[i]).isActive)for(r=o.collision,l=0;l<o.activeContacts.length;l++){var f=o.activeContacts[l].vertex;c.rect(f.x-1.5,f.y-1.5,3.5,3.5)}for(d.wireframes?c.fillStyle="rgba(255,255,255,0.7)":c.fillStyle="orange",c.fill(),c.beginPath(),i=0;i<t.length;i++)if((o=t[i]).isActive&&(r=o.collision,o.activeContacts.length>0)){var v=o.activeContacts[0].vertex.x,y=o.activeContacts[0].vertex.y;2===o.activeContacts.length&&(v=(o.activeContacts[0].vertex.x+o.activeContacts[1].vertex.x)/2,y=(o.activeContacts[0].vertex.y+o.activeContacts[1].vertex.y)/2),r.bodyB===r.supports[0].body||!0===r.bodyA.isStatic?c.moveTo(v-8*r.normal.x,y-8*r.normal.y):c.moveTo(v+8*r.normal.x,y+8*r.normal.y),c.lineTo(v,y)}d.wireframes?c.strokeStyle="rgba(255,165,0,0.7)":c.strokeStyle="orange",c.lineWidth=1,c.stroke()},o.separations=function(e,t,n){var o,r,l,c,i,d=n,f=e.options;for(d.beginPath(),i=0;i<t.length;i++)if((o=t[i]).isActive){l=(r=o.collision).bodyA;var v=1;(c=r.bodyB).isStatic||l.isStatic||(v=.5),c.isStatic&&(v=0),d.moveTo(c.position.x,c.position.y),d.lineTo(c.position.x-r.penetration.x*v,c.position.y-r.penetration.y*v),v=1,c.isStatic||l.isStatic||(v=.5),l.isStatic&&(v=0),d.moveTo(l.position.x,l.position.y),d.lineTo(l.position.x+r.penetration.x*v,l.position.y+r.penetration.y*v)}f.wireframes?d.strokeStyle="rgba(255,165,0,0.5)":d.strokeStyle="orange",d.stroke()},o.inspector=function(e,t){e.engine;var n,o=e.selected,r=e.render,l=r.options;if(l.hasBounds){var c=r.bounds.max.x-r.bounds.min.x,d=r.bounds.max.y-r.bounds.min.y,f=c/r.options.width,v=d/r.options.height;t.scale(1/f,1/v),t.translate(-r.bounds.min.x,-r.bounds.min.y)}for(var i=0;i<o.length;i++){var y=o[i].data;switch(t.translate(.5,.5),t.lineWidth=1,t.strokeStyle="rgba(255,165,0,0.9)",t.setLineDash([1,2]),y.type){case"body":n=y.bounds,t.beginPath(),t.rect(Math.floor(n.min.x-3),Math.floor(n.min.y-3),Math.floor(n.max.x-n.min.x+6),Math.floor(n.max.y-n.min.y+6)),t.closePath(),t.stroke();break;case"constraint":var m=y.pointA;y.bodyA&&(m=y.pointB),t.beginPath(),t.arc(m.x,m.y,10,0,2*Math.PI),t.closePath(),t.stroke()}t.setLineDash([]),t.translate(-.5,-.5)}null!==e.selectStart&&(t.translate(.5,.5),t.lineWidth=1,t.strokeStyle="rgba(255,165,0,0.6)",t.fillStyle="rgba(255,165,0,0.1)",n=e.selectBounds,t.beginPath(),t.rect(Math.floor(n.min.x),Math.floor(n.min.y),Math.floor(n.max.x-n.min.x),Math.floor(n.max.y-n.min.y)),t.closePath(),t.stroke(),t.fill(),t.translate(-.5,-.5)),l.hasBounds&&t.setTransform(1,0,0,1,0,0)};var n=function(e,time){var t=e.engine,n=e.timing,r=n.historySize,l=t.timing.timestamp;n.delta=time-n.lastTime||o._goodDelta,n.lastTime=time,n.timestampElapsed=l-n.lastTimestamp||0,n.lastTimestamp=l,n.deltaHistory.unshift(n.delta),n.deltaHistory.length=Math.min(n.deltaHistory.length,r),n.engineDeltaHistory.unshift(t.timing.lastDelta),n.engineDeltaHistory.length=Math.min(n.engineDeltaHistory.length,r),n.timestampElapsedHistory.unshift(n.timestampElapsed),n.timestampElapsedHistory.length=Math.min(n.timestampElapsedHistory.length,r),n.engineElapsedHistory.unshift(t.timing.lastElapsed),n.engineElapsedHistory.length=Math.min(n.engineElapsedHistory.length,r),n.elapsedHistory.unshift(n.lastElapsed),n.elapsedHistory.length=Math.min(n.elapsedHistory.length,r)},m=function(e){for(var t=0,i=0;i<e.length;i+=1)t+=e[i];return t/e.length||0},x=function(e,t){var canvas=document.createElement("canvas");return canvas.width=e,canvas.height=t,canvas.oncontextmenu=function(){return!1},canvas.onselectstart=function(){return!1},canvas},h=function(canvas){var e=canvas.getContext("2d");return(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)},S=function(e,t){var image=e.textures[t];return image||((image=e.textures[t]=new Image).src=t,image)},w=function(e,t){var n=t;/(jpg|gif|png)$/.test(t)&&(n="url("+t+")"),e.canvas.style.background=n,e.canvas.style.backgroundSize="contain",e.currentBackground=t}}()},function(e,t,n){var o={};e.exports=o;var r,l,c,d=n(5),f=n(17),v=n(0);"undefined"!=typeof window&&(r=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,l=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),r||(r=function(e){c=setTimeout((function(){e(v.now())}),1e3/60)},l=function(){clearTimeout(c)}),o.create=function(e){var t=v.extend({fps:60,deltaSampleSize:60,counterTimestamp:0,frameCounter:0,deltaHistory:[],timePrev:null,frameRequestId:null,isFixed:!1,enabled:!0},e);return t.delta=t.delta||1e3/t.fps,t.deltaMin=t.deltaMin||1e3/t.fps,t.deltaMax=t.deltaMax||1e3/(.5*t.fps),t.fps=1e3/t.delta,t},o.run=function(e,t){return void 0!==e.positionIterations&&(t=e,e=o.create()),function n(time){e.frameRequestId=r(n),time&&e.enabled&&o.tick(e,t,time)}(),e},o.tick=function(e,t,time){var n,o=t.timing;e.isFixed?n=e.delta:(n=time-e.timePrev||e.delta,e.timePrev=time,e.deltaHistory.push(n),e.deltaHistory=e.deltaHistory.slice(-e.deltaSampleSize),n=(n=(n=Math.min.apply(null,e.deltaHistory))<e.deltaMin?e.deltaMin:n)>e.deltaMax?e.deltaMax:n,e.delta=n);var r={timestamp:o.timestamp};d.trigger(e,"beforeTick",r),e.frameCounter+=1,time-e.counterTimestamp>=1e3&&(e.fps=e.frameCounter*((time-e.counterTimestamp)/1e3),e.counterTimestamp=time,e.frameCounter=0),d.trigger(e,"tick",r),d.trigger(e,"beforeUpdate",r),f.update(t,n),d.trigger(e,"afterUpdate",r),d.trigger(e,"afterTick",r)},o.stop=function(e){l(e.frameRequestId)},o.start=function(e,t){o.run(e,t)}},function(e,t,n){var o={};e.exports=o;var r=n(8),l=n(0).deprecated;o.collides=function(e,t){return r.collides(e,t)},l(o,"collides","SAT.collides ➤ replaced by Collision.collides")},function(e,t,n){var o={};e.exports=o,n(1);var r=n(0);o.pathToVertices=function(path,e){"undefined"==typeof window||"SVGPathSeg"in window||r.warn("Svg.pathToVertices: SVGPathSeg not defined, a polyfill is required.");var i,t,n,l,c,d,f,v,y,m,x,h=[],S=0,w=0,A=0;e=e||15;var P=function(e,t,n){var o=n%2==1&&n>1;if(!y||e!=y.x||t!=y.y){y&&o?(m=y.x,x=y.y):(m=0,x=0);var r={x:m+e,y:x+t};!o&&y||(y=r),h.push(r),w=m+e,A=x+t}},C=function(e){var t=e.pathSegTypeAsLetter.toUpperCase();if("Z"!==t){switch(t){case"M":case"L":case"T":case"C":case"S":case"Q":w=e.x,A=e.y;break;case"H":w=e.x;break;case"V":A=e.y}P(w,A,e.pathSegType)}};for(o._svgPathToAbsolute(path),n=path.getTotalLength(),d=[],i=0;i<path.pathSegList.numberOfItems;i+=1)d.push(path.pathSegList.getItem(i));for(f=d.concat();S<n;){if((c=d[path.getPathSegAtLength(S)])!=v){for(;f.length&&f[0]!=c;)C(f.shift());v=c}switch(c.pathSegTypeAsLetter.toUpperCase()){case"C":case"T":case"S":case"Q":case"A":l=path.getPointAtLength(S),P(l.x,l.y,0)}S+=e}for(i=0,t=f.length;i<t;++i)C(f[i]);return h},o._svgPathToAbsolute=function(path){for(var e,t,n,o,r,l,c=path.pathSegList,d=0,f=0,v=c.numberOfItems,i=0;i<v;++i){var y=c.getItem(i),m=y.pathSegTypeAsLetter;if(/[MLHVCSQTA]/.test(m))"x"in y&&(d=y.x),"y"in y&&(f=y.y);else switch("x1"in y&&(n=d+y.x1),"x2"in y&&(r=d+y.x2),"y1"in y&&(o=f+y.y1),"y2"in y&&(l=f+y.y2),"x"in y&&(d+=y.x),"y"in y&&(f+=y.y),m){case"m":c.replaceItem(path.createSVGPathSegMovetoAbs(d,f),i);break;case"l":c.replaceItem(path.createSVGPathSegLinetoAbs(d,f),i);break;case"h":c.replaceItem(path.createSVGPathSegLinetoHorizontalAbs(d),i);break;case"v":c.replaceItem(path.createSVGPathSegLinetoVerticalAbs(f),i);break;case"c":c.replaceItem(path.createSVGPathSegCurvetoCubicAbs(d,f,n,o,r,l),i);break;case"s":c.replaceItem(path.createSVGPathSegCurvetoCubicSmoothAbs(d,f,r,l),i);break;case"q":c.replaceItem(path.createSVGPathSegCurvetoQuadraticAbs(d,f,n,o),i);break;case"t":c.replaceItem(path.createSVGPathSegCurvetoQuadraticSmoothAbs(d,f),i);break;case"a":c.replaceItem(path.createSVGPathSegArcAbs(d,f,y.r1,y.r2,y.angle,y.largeArcFlag,y.sweepFlag),i);break;case"z":case"Z":d=e,f=t}"M"!=m&&"m"!=m||(e=d,t=f)}}},function(e,t,n){var o={};e.exports=o;var r=n(6);n(0),o.create=r.create,o.add=r.add,o.remove=r.remove,o.clear=r.clear,o.addComposite=r.addComposite,o.addBody=r.addBody,o.addConstraint=r.addConstraint}])},e.exports=n()}).call(this,n(35))}}]);