/* ----------------------------------------------- /* author : vincent garreau - vincentgarreau.com /* mit license: http://opensource.org/licenses/mit /* demo / generator : vincentgarreau.com/particles.js /* github : github.com/vincentgarreau/particles.js /* how to use? : check the github readme /* v2.0.0 /* ----------------------------------------------- */ function hextorgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseint(t[1],16),g:parseint(t[2],16),b:parseint(t[3],16)}:null}function clamp(e,a,t){return math.min(math.max(e,a),t)}function isinarray(e,a){return a.indexof(e)>-1}var pjs=function(e,a){var t=document.queryselector("#"+e+" > .particles-js-canvas-el");this.pjs={canvas:{el:t,w:t.offsetwidth,h:t.offsetheight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotatex:3e3,rotatey:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pjs;a&&object.deepextend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinainit=function(){i.retina_detect&&window.devicepixelratio>1?(i.canvas.pxratio=window.devicepixelratio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetwidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetheight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasinit=function(){i.canvas.ctx=i.canvas.el.getcontext("2d")},i.fn.canvassize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addeventlistener("resize",function(){i.canvas.w=i.canvas.el.offsetwidth,i.canvas.h=i.canvas.el.offsetheight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesempty(),i.fn.particlescreate(),i.fn.particlesdraw(),i.fn.vendors.densityautoparticles()),i.fn.vendors.densityautoparticles()})},i.fn.canvaspaint=function(){i.canvas.ctx.fillrect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasclear=function(){i.canvas.ctx.clearrect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*math.random())),this.x=t?t.x:math.random()*i.canvas.w,this.y=t?t.y:math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkoverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof array){var s=e.value[math.floor(math.random()*i.particles.color.value.length)];this.color.rgb=hextorgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:math.floor(256*math.random())+0,g:math.floor(256*math.random())+0,b:math.floor(256*math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hextorgb(this.color.value));this.opacity=(i.particles.opacity.random?math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*math.random(),this.vy=this.vy*math.random())):(this.vx=n.x+math.random()-.5,this.vy=n.y+math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof array){var c=r[math.floor(math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createsvgimg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawimage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillstyle=n,i.canvas.ctx.beginpath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*math.pi,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawshape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawshape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawshape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closepath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokestyle=i.particles.shape.stroke.color,i.canvas.ctx.linewidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlescreate=function(){for(var e=0;e=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isinarray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabparticle(a),(isinarray("bubble",i.interactivity.events.onhover.mode)||isinarray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleparticle(a),(isinarray("repulse",i.interactivity.events.onhover.mode)||isinarray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseparticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokestyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.linewidth=i.particles.line_linked.width,i.canvas.ctx.beginpath(),i.canvas.ctx.moveto(e.x,e.y),i.canvas.ctx.lineto(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closepath()}}},i.fn.interact.attractparticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotatex),c=s/(1e3*i.particles.move.attract.rotatey);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceparticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushparticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:math.random()*i.canvas.w,y:a?a.pos_y:math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesdraw(),i.tmp.pushing=!1)},i.fn.modes.removeparticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesdraw()},i.fn.modes.bubbleparticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isinarray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isinarray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=math.sqrt(s*s+n*n),p=((new date).gettime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseparticle=function(e){function a(){var a=math.atan2(d,p);if(e.vx=u*math.cos(a),e.vy=u*math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isinarray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius0&&v.y+e.radius=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabparticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokestyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.linewidth=i.particles.line_linked.width,i.canvas.ctx.beginpath(),i.canvas.ctx.moveto(e.x,e.y),i.canvas.ctx.lineto(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closepath()}}}},i.fn.vendors.eventslisteners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addeventlistener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientx,t=e.clienty;else var a=e.offsetx||e.clientx,t=e.offsety||e.clienty;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addeventlistener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addeventlistener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new date).gettime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushparticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushparticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushparticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeparticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,settimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityautoparticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushparticles(math.abs(t)):i.fn.modes.removeparticles(t)}},i.fn.vendors.checkoverlap=function(e,a){for(var t=0;tv;v++)e.lineto(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportimg=function(){window.open(i.canvas.el.todataurl("image/png"),"_blank")},i.fn.vendors.loadimg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new xmlhttprequest;a.open("get",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readystate&&(200==a.status?(i.tmp.source_svg=e.currenttarget.response,i.fn.vendors.checkbeforedraw()):(console.log("error pjs - image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new image;t.addeventlistener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkbeforedraw()}),t.src=i.particles.shape.image.src}else console.log("error pjs - no image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesdraw(),i.particles.move.enable?i.fn.drawanimframe=requestanimframe(i.fn.vendors.draw):cancelrequestanimframe(i.fn.drawanimframe)):i.tmp.img_error||(i.fn.drawanimframe=requestanimframe(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesdraw(),i.particles.move.enable?i.fn.drawanimframe=requestanimframe(i.fn.vendors.draw):cancelrequestanimframe(i.fn.drawanimframe)):i.tmp.img_error||(i.fn.drawanimframe=requestanimframe(i.fn.vendors.draw)):(i.fn.particlesdraw(),i.particles.move.enable?i.fn.drawanimframe=requestanimframe(i.fn.vendors.draw):cancelrequestanimframe(i.fn.drawanimframe))},i.fn.vendors.checkbeforedraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkanimframe=requestanimframe(check):(cancelrequestanimframe(i.tmp.checkanimframe),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinainit(),i.fn.canvasinit(),i.fn.canvassize(),i.fn.canvaspaint(),i.fn.particlescreate(),i.fn.vendors.densityautoparticles(),i.particles.line_linked.color_rgb_line=hextorgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isinarray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadimg(i.tmp.img_type)):i.fn.vendors.checkbeforedraw()},i.fn.vendors.eventslisteners(),i.fn.vendors.start()};object.deepextend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestanimframe=function(){return window.requestanimationframe||window.webkitrequestanimationframe||window.mozrequestanimationframe||window.orequestanimationframe||window.msrequestanimationframe||function(e){window.settimeout(e,1e3/60)}}(),window.cancelrequestanimframe=function(){return window.cancelanimationframe||window.webkitcancelrequestanimationframe||window.mozcancelrequestanimationframe||window.ocancelrequestanimationframe||window.mscancelrequestanimationframe||cleartimeout}(),window.pjsdom=[],window.particlesjs=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getelementbyid(e),i="particles-js-canvas-el",s=t.getelementsbyclassname(i);if(s.length)for(;s.length>0;)t.removechild(s[0]);var n=document.createelement("canvas");n.classname=i,n.style.width="100%",n.style.height="100%";var r=document.getelementbyid(e).appendchild(n);null!=r&&pjsdom.push(new pjs(e,a))},window.particlesjs.load=function(e,a,t){var i=new xmlhttprequest;i.open("get",a),i.onreadystatechange=function(a){if(4==i.readystate)if(200==i.status){var s=json.parse(a.currenttarget.response);window.particlesjs(e,s),t&&t()}else console.log("error pjs - xmlhttprequest status: "+i.status),console.log("error pjs - file config not found")},i.send()};