UNPKG

tsparticles

Version:

Easily create highly customizable particle, confetti and fireworks animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.

2 lines 143 kB
/*! tsParticles v1.42.2 by Matteo Bruni */ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var o in i)("object"==typeof exports?exports:t)[o]=i[o]}}(window,(function(){return function(){"use strict";var t={d:function(e,i){for(var o in i)t.o(i,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:i[o]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function i(t,e,i){return Math.min(Math.max(t,e),i)}function o(t,e,i,o){return Math.floor((t*i+e*o)/(i+o))}function s(t){const e=r(t);let i=a(t);return e===i&&(i=0),Math.random()*(e-i)+i}function n(t){return"number"==typeof t?t:s(t)}function a(t){return"number"==typeof t?t:t.min}function r(t){return"number"==typeof t?t:t.max}function l(t,e){if(t===e||void 0===e&&"number"==typeof t)return t;const i=a(t),o=r(t);return void 0!==e?{min:Math.min(i,e),max:Math.max(o,e)}:l(i,o)}function c(t){const e=t.random,{enable:i,minimumValue:o}="boolean"==typeof e?{enable:e,minimumValue:0}:e;return n(i?l(t.value,o):t.value)}function d(t,e){const i=t.x-e.x,o=t.y-e.y;return{dx:i,dy:o,distance:Math.sqrt(i*i+o*o)}}function h(t,e){return d(t,e).distance}function u(t){if("number"==typeof t)return t*Math.PI/180;switch(t){case"top":return-Math.PI/2;case"top-right":return-Math.PI/4;case"right":return 0;case"bottom-right":return Math.PI/4;case"bottom":return Math.PI/2;case"bottom-left":return 3*Math.PI/4;case"left":return Math.PI;case"top-left":return-3*Math.PI/4;case"none":default:return Math.random()*Math.PI*2}}function v(t){const e=$t.origin;return e.length=1,e.angle=t,e}function p(t,e,i,o){return $t.create(t.x*(i-o)/(i+o)+2*e.x*o/(i+o),t.y)}function f(t,e){switch(e){case"ease-out-quad":return 1-(1-t)**2;case"ease-out-cubic":return 1-(1-t)**3;case"ease-out-quart":return 1-(1-t)**4;case"ease-out-quint":return 1-(1-t)**5;case"ease-out-expo":return 1===t?1:1-Math.pow(2,-10*t);case"ease-out-sine":return Math.sin(t*Math.PI/2);case"ease-out-back":{const e=1.70158;return 1+(e+1)*Math.pow(t-1,3)+e*Math.pow(t-1,2)}case"ease-out-circ":return Math.sqrt(1-Math.pow(t-1,2));default:return t}}function y(t,e,i,o,s,n){const a={bounced:!1};return e.min>=o.min&&e.min<=o.max&&e.max>=o.min&&e.max<=o.max&&(t.max>=i.min&&t.max<=(i.max+i.min)/2&&s>0||t.min<=i.max&&t.min>(i.max+i.min)/2&&s<0)&&(a.velocity=s*-n,a.bounced=!0),a}function m(t,e){if(e instanceof Array){for(const i of e)if(t.matches(i))return!0;return!1}return t.matches(e)}function b(){return"undefined"==typeof window||!window||void 0===window.document||!window.document}function g(){return b()?t=>setTimeout(t):t=>(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.setTimeout)(t)}function w(){return b()?t=>clearTimeout(t):t=>(window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||window.clearTimeout)(t)}function x(t,e){return t===e||e instanceof Array&&e.indexOf(t)>-1}async function k(t){var e,i;try{await document.fonts.load(`${null!==(e=t.weight)&&void 0!==e?e:"400"} 36px '${null!==(i=t.font)&&void 0!==i?i:"Verdana"}'`)}catch(t){}}function z(t){return Math.floor(Math.random()*t.length)}function M(t,e,i=!0){return t[void 0!==e&&i?e%t.length:z(t)]}function C(t,e,i,o){return P(S(t,null!=i?i:0),e,o)}function P(t,e,i){let o=!0;return i&&"bottom"!==i||(o=t.top<e.height),!o||i&&"left"!==i||(o=t.right>0),!o||i&&"right"!==i||(o=t.left<e.width),!o||i&&"top"!==i||(o=t.bottom>0),o}function S(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function T(t,...e){for(const i of e){if(null==i)continue;if("object"!=typeof i){t=i;continue}const e=Array.isArray(i);!e||"object"==typeof t&&t&&Array.isArray(t)?e||"object"==typeof t&&t&&!Array.isArray(t)||(t={}):t=[];for(const e in i){if("__proto__"===e)continue;const o=i[e],s="object"==typeof o,n=t;n[e]=s&&Array.isArray(o)?o.map((t=>T(n[e],t))):T(n[e],o)}}return t}function O(t,e){return e instanceof Array?!!e.find((e=>e.enable&&x(t,e.mode))):x(t,e.mode)}function R(t,e,i){if(e instanceof Array)for(const o of e){const e=o.mode;o.enable&&x(t,e)&&E(o,i)}else{const o=e.mode;e.enable&&x(t,o)&&E(e,i)}}function E(t,e){const i=t.selectors;if(i instanceof Array)for(const o of i)e(o,t);else e(i,t)}function I(t,e){if(e&&t)return t instanceof Array?t.find((t=>m(e,t.selectors))):m(e,t.selectors)?t:void 0}function D(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:$t.create(c(t.options.bounce.horizontal),c(t.options.bounce.vertical))}}function A(t,e){const{x:i,y:o}=t.velocity.sub(e.velocity),[s,n]=[t.position,e.position],{dx:a,dy:r}=d(n,s);if(i*a+o*r>=0){const i=-Math.atan2(r,a),o=t.mass,s=e.mass,n=t.velocity.rotate(i),l=e.velocity.rotate(i),c=p(n,l,o,s),d=p(l,n,o,s),h=c.rotate(-i),u=d.rotate(-i);t.velocity.x=h.x*t.factor.x,t.velocity.y=h.y*t.factor.y,e.velocity.x=u.x*e.factor.x,e.velocity.y=u.y*e.factor.y}}function L(t,e){const i=S(t.getPosition(),t.getRadius()),o=y({min:i.left,max:i.right},{min:i.top,max:i.bottom},{min:e.left,max:e.right},{min:e.top,max:e.bottom},t.velocity.x,c(t.options.bounce.horizontal));o.bounced&&(void 0!==o.velocity&&(t.velocity.x=o.velocity),void 0!==o.position&&(t.position.x=o.position));const s=y({min:i.top,max:i.bottom},{min:i.left,max:i.right},{min:e.top,max:e.bottom},{min:e.left,max:e.right},t.velocity.y,c(t.options.bounce.vertical));s.bounced&&(void 0!==s.velocity&&(t.velocity.y=s.velocity),void 0!==s.position&&(t.position.y=s.position))}function q(t,e,i){let o=i;return o<0&&(o+=1),o>1&&(o-=1),o<1/6?t+6*(e-t)*o:o<.5?e:o<2/3?t+(e-t)*(2/3-o)*6:t}function H(t){if(t.startsWith("rgb")){const e=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return e?{a:e.length>4?parseFloat(e[5]):1,b:parseInt(e[3],10),g:parseInt(e[2],10),r:parseInt(e[1],10)}:void 0}if(t.startsWith("hsl")){const e=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return e?$({a:e.length>4?parseFloat(e[5]):1,h:parseInt(e[1],10),l:parseInt(e[3],10),s:parseInt(e[2],10)}):void 0}if(t.startsWith("hsv")){const e=/hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return e?Y({a:e.length>4?parseFloat(e[5]):1,h:parseInt(e[1],10),s:parseInt(e[2],10),v:parseInt(e[3],10)}):void 0}{const e=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,i=t.replace(e,((t,e,i,o,s)=>e+e+i+i+o+o+(void 0!==s?s+s:""))),o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(i);return o?{a:void 0!==o[4]?parseInt(o[4],16)/255:1,b:parseInt(o[3],16),g:parseInt(o[2],16),r:parseInt(o[1],16)}:void 0}}function F(t,e,i=!0){var o,s,n;if(void 0===t)return;const a="string"==typeof t?{value:t}:t;let r;if("string"==typeof a.value)r=a.value===Tt.randomColorValue?K():B(a.value);else if(a.value instanceof Array){r=F({value:M(a.value,e,i)})}else{const t=a.value,e=null!==(o=t.rgb)&&void 0!==o?o:a.value;if(void 0!==e.r)r=e;else{const e=null!==(s=t.hsl)&&void 0!==s?s:a.value;if(void 0!==e.h&&void 0!==e.l)r=j(e);else{const e=null!==(n=t.hsv)&&void 0!==n?n:a.value;void 0!==e.h&&void 0!==e.v&&(r=X(e))}}}return r}function V(t,e,i=!0){const o=F(t,e,i);return void 0!==o?W(o):void 0}function W(t){const e=t.r/255,i=t.g/255,o=t.b/255,s=Math.max(e,i,o),n=Math.min(e,i,o),a={h:0,l:(s+n)/2,s:0};return s!=n&&(a.s=a.l<.5?(s-n)/(s+n):(s-n)/(2-s-n),a.h=e===s?(i-o)/(s-n):a.h=i===s?2+(o-e)/(s-n):4+(e-i)/(s-n)),a.l*=100,a.s*=100,a.h*=60,a.h<0&&(a.h+=360),a}function _(t){var e;return null===(e=H(t))||void 0===e?void 0:e.a}function B(t){return H(t)}function j(t){const e={b:0,g:0,r:0},i={h:t.h/360,l:t.l/100,s:t.s/100};if(0===i.s)e.b=i.l,e.g=i.l,e.r=i.l;else{const t=i.l<.5?i.l*(1+i.s):i.l+i.s-i.l*i.s,o=2*i.l-t;e.r=q(o,t,i.h+1/3),e.g=q(o,t,i.h),e.b=q(o,t,i.h-1/3)}return e.r=Math.floor(255*e.r),e.g=Math.floor(255*e.g),e.b=Math.floor(255*e.b),e}function $(t){const e=j(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function G(t){const e=t.l/100,i=e+t.s/100*Math.min(e,1-e),o=i?2*(1-e/i):0;return{h:t.h,s:100*o,v:100*i}}function U(t){const e=G(t);return{a:t.a,h:e.h,s:e.s,v:e.v}}function N(t){const e=t.v/100,i=e*(1-t.s/100/2),o=0===i||1===i?0:(e-i)/Math.min(i,1-i);return{h:t.h,l:100*i,s:100*o}}function J(t){const e=N(t);return{a:t.a,h:e.h,l:e.l,s:e.s}}function X(t){const e={b:0,g:0,r:0},i=t.h/60,o=t.s/100,s=t.v/100,n=s*o,a=n*(1-Math.abs(i%2-1));let r;if(i>=0&&i<=1?r={r:n,g:a,b:0}:i>1&&i<=2?r={r:a,g:n,b:0}:i>2&&i<=3?r={r:0,g:n,b:a}:i>3&&i<=4?r={r:0,g:a,b:n}:i>4&&i<=5?r={r:a,g:0,b:n}:i>5&&i<=6&&(r={r:n,g:0,b:a}),r){const t=s-n;e.r=Math.floor(255*(r.r+t)),e.g=Math.floor(255*(r.g+t)),e.b=Math.floor(255*(r.b+t))}return e}function Y(t){const e=X(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function Q(t){const e={r:t.r/255,g:t.g/255,b:t.b/255},i=Math.max(e.r,e.g,e.b),o=i-Math.min(e.r,e.g,e.b);let s=0;i===e.r?s=(e.g-e.b)/o*60:i===e.g?s=60*(2+(e.b-e.r)/o):i===e.b&&(s=60*(4+(e.r-e.g)/o));return{h:s,s:100*(i?o/i:0),v:100*i}}function Z(t){const e=Q(t);return{a:t.a,h:e.h,s:e.s,v:e.v}}function K(t){const e=null!=t?t:0;return{b:Math.floor(s(l(e,256))),g:Math.floor(s(l(e,256))),r:Math.floor(s(l(e,256)))}}function tt(t,e){return`rgba(${t.r}, ${t.g}, ${t.b}, ${null!=e?e:1})`}function et(t,e){return`hsla(${t.h}, ${t.s}%, ${t.l}%, ${null!=e?e:1})`}function it(t,e){return et(N(t),e)}function ot(t,e,i,s){let n=t,a=e;return void 0===n.r&&(n=j(t)),void 0===a.r&&(a=j(e)),{b:o(n.b,a.b,i,s),g:o(n.g,a.g,i,s),r:o(n.r,a.r,i,s)}}function st(t,e,i){var o,s;if(i===Tt.randomColorValue)return K();if("mid"!==i)return i;{const i=null!==(o=t.getFillColor())&&void 0!==o?o:t.getStrokeColor(),n=null!==(s=null==e?void 0:e.getFillColor())&&void 0!==s?s:null==e?void 0:e.getStrokeColor();if(i&&n&&e)return ot(i,n,t.getRadius(),e.getRadius());{const t=null!=i?i:n;if(t)return j(t)}}}function nt(t,e,i){const o="string"==typeof t?t:t.value;return o===Tt.randomColorValue?i?F({value:o}):e?Tt.randomColorValue:Tt.midColorValue:F({value:o})}function at(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function rt(t,e,i){const o={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(lt(o.h,e.h,i),lt(o.s,e.s,i),lt(o.l,e.l,i)),o}function lt(t,e,i){if(t.enable=e.enable,t.enable){if(t.velocity=n(e.speed)/100*i,e.sync)return;t.status=0,t.velocity*=Math.random(),t.value&&(t.value*=Math.random())}else t.velocity=0}function ct(t,e,i){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.closePath()}function dt(t,e,i){t.save(),t.fillStyle=null!=i?i:"rgba(0,0,0,0)",t.fillRect(0,0,e.width,e.height),t.restore()}function ht(t,e){t.clearRect(0,0,e.width,e.height)}function ut(t,e,i,o,s,n,a,r,l,c,u,v){let p=!1;if(h(i,o)<=s)ct(t,i,o),p=!0;else if(a){let e,a;const r=d(i,{x:o.x-n.width,y:o.y});if(r.distance<=s){const t=i.y-r.dy/r.dx*i.x;e={x:0,y:t},a={x:n.width,y:t}}else{const t=d(i,{x:o.x,y:o.y-n.height});if(t.distance<=s){const o=-(i.y-t.dy/t.dx*i.x)/(t.dy/t.dx);e={x:o,y:0},a={x:o,y:n.height}}else{const t=d(i,{x:o.x-n.width,y:o.y-n.height});if(t.distance<=s){const o=i.y-t.dy/t.dx*i.x;e={x:-o/(t.dy/t.dx),y:o},a={x:e.x+n.width,y:e.y+n.height}}}}e&&a&&(ct(t,i,e),ct(t,o,a),p=!0)}if(p){if(t.lineWidth=e,r&&(t.globalCompositeOperation=l),t.strokeStyle=tt(c,u),v.enable){const e=F(v.color);e&&(t.shadowBlur=v.blur,t.shadowColor=tt(e))}t.stroke()}}function vt(t,e,i,o,s,n,a,r){!function(t,e,i,o){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.lineTo(o.x,o.y),t.closePath()}(t,e,i,o),s&&(t.globalCompositeOperation=n),t.fillStyle=tt(a,r),t.fill()}function pt(t,e,i,o,s){t.save(),ct(t,o,s),t.lineWidth=e,t.strokeStyle=i,t.stroke(),t.restore()}function ft(t,e,i,o){const s=Math.floor(i.getRadius()/e.getRadius()),n=e.getFillColor(),a=i.getFillColor();if(!n||!a)return;const r=e.getPosition(),l=i.getPosition(),c=ot(n,a,e.getRadius(),i.getRadius()),d=t.createLinearGradient(r.x,r.y,l.x,l.y);return d.addColorStop(0,et(n,o)),d.addColorStop(s>1?1:s,tt(c,o)),d.addColorStop(1,et(a,o)),d}function yt(t,e,i,o,s,n){t.save(),ct(t,i,o),t.strokeStyle=tt(s,n),t.lineWidth=e,t.stroke(),t.restore()}function mt(t,e,i,o,s,n,a,r,l,c,d,h){var u,v,p,f,y,m;const b=i.getPosition(),g=i.options.tilt,w=i.options.roll;if(e.save(),g.enable||w.enable){const t=w.enable&&i.roll,o=g.enable&&i.tilt,s=t&&("horizontal"===w.mode||"both"===w.mode),n=t&&("vertical"===w.mode||"both"===w.mode);e.setTransform(s?Math.cos(i.roll.angle):1,o?Math.cos(i.tilt.value)*i.tilt.cosDirection:0,o?Math.sin(i.tilt.value)*i.tilt.sinDirection:0,n?Math.sin(i.roll.angle):1,b.x,b.y)}else e.translate(b.x,b.y);e.beginPath();const x=(null!==(v=null===(u=i.rotate)||void 0===u?void 0:u.value)&&void 0!==v?v:0)+(i.options.rotate.path?i.velocity.angle:0);0!==x&&e.rotate(x),a&&(e.globalCompositeOperation=r);const k=i.shadowColor;if(d.enable&&k&&(e.shadowBlur=d.blur,e.shadowColor=tt(k),e.shadowOffsetX=d.offset.x,e.shadowOffsetY=d.offset.y),h){const t=h.angle.value,i="radial"===h.type?e.createRadialGradient(0,0,0,0,0,l):e.createLinearGradient(Math.cos(t)*-l,Math.sin(t)*-l,Math.cos(t)*l,Math.sin(t)*l);for(const t of h.colors)i.addColorStop(t.stop,et({h:t.value.h.value,s:t.value.s.value,l:t.value.l.value},null!==(f=null===(p=t.opacity)||void 0===p?void 0:p.value)&&void 0!==f?f:c));e.fillStyle=i}else s&&(e.fillStyle=s);const z=i.stroke;e.lineWidth=null!==(y=i.strokeWidth)&&void 0!==y?y:0,n&&(e.strokeStyle=n),bt(t,e,i,l,c,o),(null!==(m=null==z?void 0:z.width)&&void 0!==m?m:0)>0&&e.stroke(),i.close&&e.closePath(),i.fill&&e.fill(),e.restore(),e.save(),g.enable&&i.tilt?e.setTransform(1,Math.cos(i.tilt.value)*i.tilt.cosDirection,Math.sin(i.tilt.value)*i.tilt.sinDirection,1,b.x,b.y):e.translate(b.x,b.y),0!==x&&e.rotate(x),a&&(e.globalCompositeOperation=r),gt(t,e,i,l,c,o),e.restore()}function bt(t,e,i,o,s,n){if(!i.shape)return;const a=t.drawers.get(i.shape);a&&a.draw(e,i,o,s,n,t.retina.pixelRatio)}function gt(t,e,i,o,s,n){if(!i.shape)return;const a=t.drawers.get(i.shape);(null==a?void 0:a.afterEffect)&&a.afterEffect(e,i,o,s,n,t.retina.pixelRatio)}function wt(t,e,i){e.draw&&(t.save(),e.draw(t,i),t.restore())}function xt(t,e,i,o){void 0!==e.drawParticle&&(t.save(),e.drawParticle(t,i,o),t.restore())}function kt(t,e,i,o,s,n,a,r,l){const c=e.getPosition();if(i&&(t.strokeStyle=et(i,s)),0===n)return;t.lineWidth=n;const d=a*Math.PI/180;t.beginPath(),t.ellipse(c.x,c.y,o/2,2*o,d,r,l),t.stroke()}function zt(t,e,i){return{h:t.h,s:t.s,l:t.l+("darken"===e?-1:1)*i}}t.r(e),t.d(e,{Canvas:function(){return Ut},Circle:function(){return Ct},CircleWarp:function(){return St},Constants:function(){return Tt},Container:function(){return to},Engine:function(){return co},EventListeners:function(){return Rt},ExternalInteractorBase:function(){return Et},FrameManager:function(){return It},InteractionManager:function(){return qt},Loader:function(){return so},Main:function(){return co},Particle:function(){return Gi},Particles:function(){return Xi},ParticlesInteractorBase:function(){return Ht},ParticlesMover:function(){return Ft},Plugins:function(){return _t},Point:function(){return Bt},QuadTree:function(){return jt},Range:function(){return Mt},Rectangle:function(){return Pt},Retina:function(){return Yi},Vector:function(){return $t},Vector3d:function(){return Gt},alterHsl:function(){return zt},animate:function(){return g},areBoundsInside:function(){return P},arrayRandomIndex:function(){return z},calcEasing:function(){return f},calculateBounds:function(){return S},cancelAnimation:function(){return w},circleBounce:function(){return A},circleBounceDataFromParticle:function(){return D},clamp:function(){return i},clear:function(){return ht},collisionVelocity:function(){return p},colorMix:function(){return ot},colorToHsl:function(){return V},colorToRgb:function(){return F},deepExtend:function(){return T},divMode:function(){return I},divModeExecute:function(){return R},drawConnectLine:function(){return pt},drawEllipse:function(){return kt},drawGrabLine:function(){return yt},drawLinkLine:function(){return ut},drawLinkTriangle:function(){return vt},drawParticle:function(){return mt},drawParticlePlugin:function(){return xt},drawPlugin:function(){return wt},drawShape:function(){return bt},drawShapeAfterEffect:function(){return gt},getDistance:function(){return h},getDistances:function(){return d},getHslAnimationFromHsl:function(){return rt},getHslFromAnimation:function(){return at},getLinkColor:function(){return st},getLinkRandomColor:function(){return nt},getParticleBaseVelocity:function(){return v},getParticleDirectionAngle:function(){return u},getRandomRgbColor:function(){return K},getRangeMax:function(){return r},getRangeMin:function(){return a},getRangeValue:function(){return n},getStyleFromHsl:function(){return et},getStyleFromHsv:function(){return it},getStyleFromRgb:function(){return tt},getValue:function(){return c},gradient:function(){return ft},hslToHsv:function(){return G},hslToRgb:function(){return j},hslaToHsva:function(){return U},hslaToRgba:function(){return $},hsvToHsl:function(){return N},hsvToRgb:function(){return X},hsvaToHsla:function(){return J},hsvaToRgba:function(){return Y},isDivModeEnabled:function(){return O},isInArray:function(){return x},isPointInside:function(){return C},isSsr:function(){return b},itemFromArray:function(){return M},loadFont:function(){return k},mix:function(){return o},pJSDom:function(){return is},paintBase:function(){return dt},particlesJS:function(){return es},randomInRange:function(){return s},rectBounce:function(){return L},rgbToHsl:function(){return W},rgbToHsv:function(){return Q},rgbaToHsva:function(){return Z},setRangeValue:function(){return l},singleDivModeExecute:function(){return E},stringToAlpha:function(){return _},stringToRgb:function(){return B},tsParticles:function(){return ts}});class Mt{constructor(t,e){this.position={x:t,y:e}}}class Ct extends Mt{constructor(t,e,i){super(t,e),this.radius=i}contains(t){return h(t,this.position)<=this.radius}intersects(t){const e=t,i=t,o=this.position,s=t.position,n=Math.abs(s.x-o.x),a=Math.abs(s.y-o.y),r=this.radius;if(void 0!==i.radius){return r+i.radius>Math.sqrt(n*n+a+a)}if(void 0!==e.size){const t=e.size.width,i=e.size.height,o=Math.pow(n-t,2)+Math.pow(a-i,2);return!(n>r+t||a>r+i)&&(n<=t||a<=i||o<=r*r)}return!1}}class Pt extends Mt{constructor(t,e,i,o){super(t,e),this.size={height:o,width:i}}contains(t){const e=this.size.width,i=this.size.height,o=this.position;return t.x>=o.x&&t.x<=o.x+e&&t.y>=o.y&&t.y<=o.y+i}intersects(t){const e=t,i=t,o=this.size.width,s=this.size.height,n=this.position,a=t.position;if(void 0!==i.radius)return i.intersects(this);if(void 0!==e.size){const t=e.size,i=t.width,r=t.height;return a.x<n.x+o&&a.x+i>n.x&&a.y<n.y+s&&a.y+r>n.y}return!1}}class St extends Ct{constructor(t,e,i,o){super(t,e,i),this.canvasSize=o,this.canvasSize={height:o.height,width:o.width}}contains(t){if(super.contains(t))return!0;const e={x:t.x-this.canvasSize.width,y:t.y};if(super.contains(e))return!0;const i={x:t.x-this.canvasSize.width,y:t.y-this.canvasSize.height};if(super.contains(i))return!0;const o={x:t.x,y:t.y-this.canvasSize.height};return super.contains(o)}intersects(t){if(super.intersects(t))return!0;const e=t,i=t,o={x:t.position.x-this.canvasSize.width,y:t.position.y-this.canvasSize.height};if(void 0!==i.radius){const t=new Ct(o.x,o.y,2*i.radius);return super.intersects(t)}if(void 0!==e.size){const t=new Pt(o.x,o.y,2*e.size.width,2*e.size.height);return super.intersects(t)}return!1}}class Tt{}function Ot(t,e,i,o,s){if(o){let o={passive:!0};"boolean"==typeof s?o.capture=s:void 0!==s&&(o=s),t.addEventListener(e,i,o)}else{const o=s;t.removeEventListener(e,i,o)}}Tt.generatedAttribute="generated",Tt.randomColorValue="random",Tt.midColorValue="mid",Tt.touchEndEvent="touchend",Tt.mouseDownEvent="mousedown",Tt.mouseUpEvent="mouseup",Tt.mouseMoveEvent="mousemove",Tt.touchStartEvent="touchstart",Tt.touchMoveEvent="touchmove",Tt.mouseLeaveEvent="mouseleave",Tt.mouseOutEvent="mouseout",Tt.touchCancelEvent="touchcancel",Tt.resizeEvent="resize",Tt.visibilityChangeEvent="visibilitychange",Tt.noPolygonDataLoaded="No polygon data loaded.",Tt.noPolygonFound="No polygon found, you need to specify SVG url in config.";class Rt{constructor(t){this.container=t,this.canPush=!0,this.mouseMoveHandler=t=>this.mouseTouchMove(t),this.touchStartHandler=t=>this.mouseTouchMove(t),this.touchMoveHandler=t=>this.mouseTouchMove(t),this.touchEndHandler=()=>this.mouseTouchFinish(),this.mouseLeaveHandler=()=>this.mouseTouchFinish(),this.touchCancelHandler=()=>this.mouseTouchFinish(),this.touchEndClickHandler=t=>this.mouseTouchClick(t),this.mouseUpHandler=t=>this.mouseTouchClick(t),this.mouseDownHandler=()=>this.mouseDown(),this.visibilityChangeHandler=()=>this.handleVisibilityChange(),this.themeChangeHandler=t=>this.handleThemeChange(t),this.oldThemeChangeHandler=t=>this.handleThemeChange(t),this.resizeHandler=()=>this.handleWindowResize()}addListeners(){this.manageListeners(!0)}removeListeners(){this.manageListeners(!1)}manageListeners(t){var e;const i=this.container,o=i.actualOptions,s=o.interactivity.detectsOn;let n=Tt.mouseLeaveEvent;if("window"===s)i.interactivity.element=window,n=Tt.mouseOutEvent;else if("parent"===s&&i.canvas.element){const t=i.canvas.element;i.interactivity.element=null!==(e=t.parentElement)&&void 0!==e?e:t.parentNode}else i.interactivity.element=i.canvas.element;const a=!b()&&"undefined"!=typeof matchMedia&&matchMedia("(prefers-color-scheme: dark)");a&&(void 0!==a.addEventListener?Ot(a,"change",this.themeChangeHandler,t):void 0!==a.addListener&&(t?a.addListener(this.oldThemeChangeHandler):a.removeListener(this.oldThemeChangeHandler)));const r=i.interactivity.element;if(!r)return;const l=r;(o.interactivity.events.onHover.enable||o.interactivity.events.onClick.enable)&&(Ot(r,Tt.mouseMoveEvent,this.mouseMoveHandler,t),Ot(r,Tt.touchStartEvent,this.touchStartHandler,t),Ot(r,Tt.touchMoveEvent,this.touchMoveHandler,t),o.interactivity.events.onClick.enable?(Ot(r,Tt.touchEndEvent,this.touchEndClickHandler,t),Ot(r,Tt.mouseUpEvent,this.mouseUpHandler,t),Ot(r,Tt.mouseDownEvent,this.mouseDownHandler,t)):Ot(r,Tt.touchEndEvent,this.touchEndHandler,t),Ot(r,n,this.mouseLeaveHandler,t),Ot(r,Tt.touchCancelEvent,this.touchCancelHandler,t)),i.canvas.element&&(i.canvas.element.style.pointerEvents=l===i.canvas.element?"initial":"none"),o.interactivity.events.resize&&("undefined"!=typeof ResizeObserver?this.resizeObserver&&!t?(i.canvas.element&&this.resizeObserver.unobserve(i.canvas.element),this.resizeObserver.disconnect(),delete this.resizeObserver):!this.resizeObserver&&t&&i.canvas.element&&(this.resizeObserver=new ResizeObserver((t=>{t.find((t=>t.target===i.canvas.element))&&this.handleWindowResize()})),this.resizeObserver.observe(i.canvas.element)):Ot(window,Tt.resizeEvent,this.resizeHandler,t)),document&&Ot(document,Tt.visibilityChangeEvent,this.visibilityChangeHandler,t,!1)}handleWindowResize(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),delete this.resizeTimeout),this.resizeTimeout=setTimeout((async()=>{var t;return await(null===(t=this.container.canvas)||void 0===t?void 0:t.windowResize())}),500)}handleVisibilityChange(){const t=this.container,e=t.actualOptions;this.mouseTouchFinish(),e.pauseOnBlur&&((null===document||void 0===document?void 0:document.hidden)?(t.pageHidden=!0,t.pause()):(t.pageHidden=!1,t.getAnimationStatus()?t.play(!0):t.draw(!0)))}mouseDown(){const t=this.container.interactivity;if(t){const e=t.mouse;e.clicking=!0,e.downPosition=e.position}}mouseTouchMove(t){var e,i,o,s,n,a,r;const l=this.container,c=l.actualOptions;if(void 0===(null===(e=l.interactivity)||void 0===e?void 0:e.element))return;let d;l.interactivity.mouse.inside=!0;const h=l.canvas.element;if(t.type.startsWith("mouse")){this.canPush=!0;const e=t;if(l.interactivity.element===window){if(h){const t=h.getBoundingClientRect();d={x:e.clientX-t.left,y:e.clientY-t.top}}}else if("parent"===c.interactivity.detectsOn){const t=e.target,s=e.currentTarget,n=l.canvas.element;if(t&&s&&n){const i=t.getBoundingClientRect(),o=s.getBoundingClientRect(),a=n.getBoundingClientRect();d={x:e.offsetX+2*i.left-(o.left+a.left),y:e.offsetY+2*i.top-(o.top+a.top)}}else d={x:null!==(i=e.offsetX)&&void 0!==i?i:e.clientX,y:null!==(o=e.offsetY)&&void 0!==o?o:e.clientY}}else e.target===l.canvas.element&&(d={x:null!==(s=e.offsetX)&&void 0!==s?s:e.clientX,y:null!==(n=e.offsetY)&&void 0!==n?n:e.clientY})}else{this.canPush="touchmove"!==t.type;const e=t,i=e.touches[e.touches.length-1],o=null==h?void 0:h.getBoundingClientRect();d={x:i.clientX-(null!==(a=null==o?void 0:o.left)&&void 0!==a?a:0),y:i.clientY-(null!==(r=null==o?void 0:o.top)&&void 0!==r?r:0)}}const u=l.retina.pixelRatio;d&&(d.x*=u,d.y*=u),l.interactivity.mouse.position=d,l.interactivity.status=Tt.mouseMoveEvent}mouseTouchFinish(){const t=this.container.interactivity;if(void 0===t)return;const e=t.mouse;delete e.position,delete e.clickPosition,delete e.downPosition,t.status=Tt.mouseLeaveEvent,e.inside=!1,e.clicking=!1}mouseTouchClick(t){const e=this.container,i=e.actualOptions,o=e.interactivity.mouse;o.inside=!0;let s=!1;const n=o.position;if(void 0!==n&&i.interactivity.events.onClick.enable){for(const[,t]of e.plugins)if(void 0!==t.clickPositionValid&&(s=t.clickPositionValid(n),s))break;s||this.doMouseTouchClick(t),o.clicking=!1}}doMouseTouchClick(t){const e=this.container,i=e.actualOptions;if(this.canPush){const t=e.interactivity.mouse.position;if(!t)return;e.interactivity.mouse.clickPosition={x:t.x,y:t.y},e.interactivity.mouse.clickTime=(new Date).getTime();const o=i.interactivity.events.onClick;if(o.mode instanceof Array)for(const t of o.mode)this.handleClickMode(t);else this.handleClickMode(o.mode)}"touchend"===t.type&&setTimeout((()=>this.mouseTouchFinish()),500)}handleThemeChange(t){const e=t.matches?this.container.options.defaultDarkTheme:this.container.options.defaultLightTheme,i=this.container.options.themes.find((t=>t.name===e));i&&i.default.auto&&this.container.loadTheme(e)}handleClickMode(t){const e=this.container,i=e.actualOptions,o=i.interactivity.modes.push.quantity,s=i.interactivity.modes.remove.quantity;switch(t){case"push":if(o>0){const t=M([void 0,...i.interactivity.modes.push.groups]),s=void 0!==t?e.actualOptions.particles.groups[t]:void 0;e.particles.push(o,e.interactivity.mouse,s,t)}break;case"remove":e.particles.removeQuantity(s);break;case"bubble":e.bubble.clicking=!0;break;case"repulse":e.repulse.clicking=!0,e.repulse.count=0;for(const t of e.repulse.particles)t.velocity.setTo(t.initialVelocity);e.repulse.particles=[],e.repulse.finish=!1,setTimeout((()=>{e.destroyed||(e.repulse.clicking=!1)}),1e3*i.interactivity.modes.repulse.duration);break;case"attract":e.attract.clicking=!0,e.attract.count=0;for(const t of e.attract.particles)t.velocity.setTo(t.initialVelocity);e.attract.particles=[],e.attract.finish=!1,setTimeout((()=>{e.destroyed||(e.attract.clicking=!1)}),1e3*i.interactivity.modes.attract.duration);break;case"pause":e.getAnimationStatus()?e.pause():e.play()}for(const[,i]of e.plugins)i.handleClickMode&&i.handleClickMode(t)}}class Et{constructor(t){this.container=t,this.type=0}}class It{constructor(t){this.container=t}async nextFrame(t){var e;try{const i=this.container;if(void 0!==i.lastFrameTime&&t<i.lastFrameTime+1e3/i.fpsLimit)return void i.draw(!1);null!==(e=i.lastFrameTime)&&void 0!==e||(i.lastFrameTime=t);const o=t-i.lastFrameTime,s={value:o,factor:60*o/1e3};if(i.lifeTime+=s.value,i.lastFrameTime=t,o>1e3)return void i.draw(!1);if(await i.particles.draw(s),i.duration>0&&i.lifeTime>i.duration)return void i.destroy();i.getAnimationStatus()&&i.draw(!1)}catch(t){console.error("tsParticles error in animation loop",t)}}}var Dt,At=function(t,e,i,o,s){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?s.call(t,i):s?s.value=i:e.set(t,i),i},Lt=function(t,e,i,o){if("a"===i&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?o:"a"===i?o.call(t):o?o.value:e.get(t)};class qt{constructor(t,e){this.container=e,Dt.set(this,void 0),At(this,Dt,t,"f"),this.externalInteractors=[],this.particleInteractors=[],this.init()}init(){const t=Lt(this,Dt,"f").plugins.getInteractors(this.container,!0);this.externalInteractors=[],this.particleInteractors=[];for(const e of t)switch(e.type){case 0:this.externalInteractors.push(e);break;case 1:this.particleInteractors.push(e)}}async externalInteract(t){for(const e of this.externalInteractors)e.isEnabled()&&await e.interact(t)}async particlesInteract(t,e){for(const e of this.externalInteractors)e.reset(t);for(const i of this.particleInteractors)i.isEnabled(t)&&await i.interact(t,e)}}Dt=new WeakMap;class Ht{constructor(t){this.container=t,this.type=1}}class Ft{constructor(t){this.container=t}move(t,e){t.destroyed||(this.moveParticle(t,e),this.moveParallax(t))}moveParticle(t,e){var i,o,s,a,l;const c=t.options,h=c.move;if(!h.enable)return;const u=this.container,v=this.getProximitySpeedFactor(t),p=(null!==(i=(a=t.retina).moveSpeed)&&void 0!==i?i:a.moveSpeed=n(h.speed)*u.retina.pixelRatio)*u.retina.reduceFactor,f=null!==(o=(l=t.retina).moveDrift)&&void 0!==o?o:l.moveDrift=n(t.options.move.drift)*u.retina.pixelRatio,y=r(c.size.value)*u.retina.pixelRatio,m=p*((h.size?t.getRadius()/y:1)*v*(e.factor||1)/2);this.applyPath(t,e);const b=t.gravity,g=b.enable&&b.inverse?-1:1;b.enable&&m&&(t.velocity.y+=g*(b.acceleration*e.factor)/(60*m)),f&&m&&(t.velocity.x+=f*e.factor/(60*m));const w=t.moveDecay;1!=w&&t.velocity.multTo(w);const x=t.velocity.mult(m),k=null!==(s=t.retina.maxSpeed)&&void 0!==s?s:u.retina.maxSpeed;b.enable&&k>0&&(!b.inverse&&x.y>=0&&x.y>=k||b.inverse&&x.y<=0&&x.y<=-k)&&(x.y=g*k,m&&(t.velocity.y=x.y/m));const z=t.options.zIndex,M=(1-t.zIndexFactor)**z.velocityRate;h.spin.enable?this.spin(t,m):(1!=M&&x.multTo(M),t.position.addTo(x),h.vibrate&&(t.position.x+=Math.sin(t.position.x*Math.cos(t.position.y)),t.position.y+=Math.cos(t.position.y*Math.sin(t.position.x)))),function(t){const e=t.initialPosition,{dx:i,dy:o}=d(e,t.position),s=Math.abs(i),n=Math.abs(o),a=t.retina.maxDistance.horizontal,r=t.retina.maxDistance.vertical;if(a||r)if((a&&s>=a||r&&n>=r)&&!t.misplaced)t.misplaced=!!a&&s>a||!!r&&n>r,a&&(t.velocity.x=t.velocity.y/2-t.velocity.x),r&&(t.velocity.y=t.velocity.x/2-t.velocity.y);else if((!a||s<a)&&(!r||n<r)&&t.misplaced)t.misplaced=!1;else if(t.misplaced){const i=t.position,o=t.velocity;a&&(i.x<e.x&&o.x<0||i.x>e.x&&o.x>0)&&(o.x*=-Math.random()),r&&(i.y<e.y&&o.y<0||i.y>e.y&&o.y>0)&&(o.y*=-Math.random())}}(t)}spin(t,e){const i=this.container;if(!t.spin)return;const o={x:"clockwise"===t.spin.direction?Math.cos:Math.sin,y:"clockwise"===t.spin.direction?Math.sin:Math.cos};t.position.x=t.spin.center.x+t.spin.radius*o.x(t.spin.angle),t.position.y=t.spin.center.y+t.spin.radius*o.y(t.spin.angle),t.spin.radius+=t.spin.acceleration;const s=Math.max(i.canvas.size.width,i.canvas.size.height);t.spin.radius>s/2?(t.spin.radius=s/2,t.spin.acceleration*=-1):t.spin.radius<0&&(t.spin.radius=0,t.spin.acceleration*=-1),t.spin.angle+=e/100*(1-t.spin.radius/s)}applyPath(t,e){const o=t.options.move.path;if(!o.enable)return;const s=this.container;if(t.lastPathTime<=t.pathDelay)return void(t.lastPathTime+=e.value);const n=s.pathGenerator.generate(t);t.velocity.addTo(n),o.clamp&&(t.velocity.x=i(t.velocity.x,-1,1),t.velocity.y=i(t.velocity.y,-1,1)),t.lastPathTime-=t.pathDelay}moveParallax(t){const e=this.container,i=e.actualOptions;if(b()||!i.interactivity.events.onHover.parallax.enable)return;const o=i.interactivity.events.onHover.parallax.force,s=e.interactivity.mouse.position;if(!s)return;const n=e.canvas.size.width/2,a=e.canvas.size.height/2,r=i.interactivity.events.onHover.parallax.smooth,l=t.getRadius()/o,c=(s.x-n)*l,d=(s.y-a)*l;t.offset.x+=(c-t.offset.x)/r,t.offset.y+=(d-t.offset.y)/r}getProximitySpeedFactor(t){const e=this.container,i=e.actualOptions;if(!x("slow",i.interactivity.events.onHover.mode))return 1;const o=this.container.interactivity.mouse.position;if(!o)return 1;const s=h(o,t.getPosition()),n=e.retina.slowModeRadius;if(s>n)return 1;return(s/n||0)/i.interactivity.modes.slow.factor}}var Vt,Wt=function(t,e,i,o,s){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?s.call(t,i):s?s.value=i:e.set(t,i),i};class _t{constructor(t){Vt.set(this,void 0),Wt(this,Vt,t,"f"),this.plugins=[],this.interactorsInitializers=new Map,this.updatersInitializers=new Map,this.interactors=new Map,this.updaters=new Map,this.presets=new Map,this.drawers=new Map,this.pathGenerators=new Map}getPlugin(t){return this.plugins.find((e=>e.id===t))}addPlugin(t){this.getPlugin(t.id)||this.plugins.push(t)}getAvailablePlugins(t){const e=new Map;for(const i of this.plugins)i.needsPlugin(t.actualOptions)&&e.set(i.id,i.getPlugin(t));return e}loadOptions(t,e){for(const i of this.plugins)i.loadOptions(t,e)}getPreset(t){return this.presets.get(t)}addPreset(t,e,i=!1){!i&&this.getPreset(t)||this.presets.set(t,e)}addShapeDrawer(t,e){this.getShapeDrawer(t)||this.drawers.set(t,e)}getShapeDrawer(t){return this.drawers.get(t)}getSupportedShapes(){return this.drawers.keys()}getPathGenerator(t){return this.pathGenerators.get(t)}addPathGenerator(t,e){this.getPathGenerator(t)||this.pathGenerators.set(t,e)}getInteractors(t,e=!1){let i=this.interactors.get(t);return i&&!e||(i=[...this.interactorsInitializers.values()].map((e=>e(t))),this.interactors.set(t,i)),i}addInteractor(t,e){this.interactorsInitializers.set(t,e)}getUpdaters(t,e=!1){let i=this.updaters.get(t);return i&&!e||(i=[...this.updatersInitializers.values()].map((e=>e(t))),this.updaters.set(t,i)),i}addParticleUpdater(t,e){this.updatersInitializers.set(t,e)}}Vt=new WeakMap;class Bt{constructor(t,e){this.position=t,this.particle=e}}class jt{constructor(t,e){this.rectangle=t,this.capacity=e,this.points=[],this.divided=!1}subdivide(){const t=this.rectangle.position.x,e=this.rectangle.position.y,i=this.rectangle.size.width,o=this.rectangle.size.height,s=this.capacity;this.northEast=new jt(new Pt(t,e,i/2,o/2),s),this.northWest=new jt(new Pt(t+i/2,e,i/2,o/2),s),this.southEast=new jt(new Pt(t,e+o/2,i/2,o/2),s),this.southWest=new jt(new Pt(t+i/2,e+o/2,i/2,o/2),s),this.divided=!0}insert(t){var e,i,o,s,n;return!!this.rectangle.contains(t.position)&&(this.points.length<this.capacity?(this.points.push(t),!0):(this.divided||this.subdivide(),null!==(n=(null===(e=this.northEast)||void 0===e?void 0:e.insert(t))||(null===(i=this.northWest)||void 0===i?void 0:i.insert(t))||(null===(o=this.southEast)||void 0===o?void 0:o.insert(t))||(null===(s=this.southWest)||void 0===s?void 0:s.insert(t)))&&void 0!==n&&n))}queryCircle(t,e){return this.query(new Ct(t.x,t.y,e))}queryCircleWarp(t,e,i){const o=i,s=i;return this.query(new St(t.x,t.y,e,void 0!==o.canvas?o.canvas.size:s))}queryRectangle(t,e){return this.query(new Pt(t.x,t.y,e.width,e.height))}query(t,e){var i,o,s,n;const a=null!=e?e:[];if(!t.intersects(this.rectangle))return[];for(const e of this.points)!t.contains(e.position)&&h(t.position,e.position)>e.particle.getRadius()||a.push(e.particle);return this.divided&&(null===(i=this.northEast)||void 0===i||i.query(t,a),null===(o=this.northWest)||void 0===o||o.query(t,a),null===(s=this.southEast)||void 0===s||s.query(t,a),null===(n=this.southWest)||void 0===n||n.query(t,a)),a}}class $t{constructor(t,e){let i,o;if(void 0===e){if("number"==typeof t)throw new Error("tsParticles - Vector not initialized correctly");const e=t;[i,o]=[e.x,e.y]}else[i,o]=[t,e];this.x=i,this.y=o}static clone(t){return $t.create(t.x,t.y)}static create(t,e){return new $t(t,e)}static get origin(){return $t.create(0,0)}get angle(){return Math.atan2(this.y,this.x)}set angle(t){this.updateFromAngle(t,this.length)}get length(){return Math.sqrt(this.x**2+this.y**2)}set length(t){this.updateFromAngle(this.angle,t)}add(t){return $t.create(this.x+t.x,this.y+t.y)}addTo(t){this.x+=t.x,this.y+=t.y}sub(t){return $t.create(this.x-t.x,this.y-t.y)}subFrom(t){this.x-=t.x,this.y-=t.y}mult(t){return $t.create(this.x*t,this.y*t)}multTo(t){this.x*=t,this.y*=t}div(t){return $t.create(this.x/t,this.y/t)}divTo(t){this.x/=t,this.y/=t}distanceTo(t){return this.sub(t).length}getLengthSq(){return this.x**2+this.y**2}distanceToSq(t){return this.sub(t).getLengthSq()}manhattanDistanceTo(t){return Math.abs(t.x-this.x)+Math.abs(t.y-this.y)}copy(){return $t.clone(this)}setTo(t){this.x=t.x,this.y=t.y}rotate(t){return $t.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t))}updateFromAngle(t,e){this.x=Math.cos(t)*e,this.y=Math.sin(t)*e}}class Gt extends $t{constructor(t,e,i){super(t,e),this.z=void 0===i?t.z:i}static clone(t){return Gt.create(t.x,t.y,t.z)}static create(t,e,i){return new Gt(t,e,i)}add(t){return t instanceof Gt?Gt.create(this.x+t.x,this.y+t.y,this.z+t.z):super.add(t)}addTo(t){super.addTo(t),t instanceof Gt&&(this.z+=t.z)}sub(t){return t instanceof Gt?Gt.create(this.x-t.x,this.y-t.y,this.z-t.z):super.sub(t)}subFrom(t){super.subFrom(t),t instanceof Gt&&(this.z-=t.z)}mult(t){return Gt.create(this.x*t,this.y*t,this.z*t)}multTo(t){super.multTo(t),this.z*=t}div(t){return Gt.create(this.x/t,this.y/t,this.z/t)}divTo(t){super.divTo(t),this.z/=t}copy(){return Gt.clone(this)}setTo(t){super.setTo(t),t instanceof Gt&&(this.z=t.z)}}class Ut{constructor(t){this.container=t,this.size={height:0,width:0},this.context=null,this.generatedCanvas=!1}init(){this.resize(),this.initStyle(),this.initCover(),this.initTrail(),this.initBackground(),this.paint()}loadCanvas(t){var e;this.generatedCanvas&&(null===(e=this.element)||void 0===e||e.remove()),this.generatedCanvas=t.dataset&&Tt.generatedAttribute in t.dataset?"true"===t.dataset[Tt.generatedAttribute]:this.generatedCanvas,this.element=t,this.originalStyle=T({},this.element.style),this.size.height=t.offsetHeight,this.size.width=t.offsetWidth,this.context=this.element.getContext("2d"),this.container.retina.init(),this.initBackground()}destroy(){var t;this.generatedCanvas&&(null===(t=this.element)||void 0===t||t.remove()),this.draw((t=>{ht(t,this.size)}))}paint(){const t=this.container.actualOptions;this.draw((e=>{t.backgroundMask.enable&&t.backgroundMask.cover?(ht(e,this.size),this.paintBase(this.coverColorStyle)):this.paintBase()}))}clear(){const t=this.container.actualOptions,e=t.particles.move.trail;t.backgroundMask.enable?this.paint():e.enable&&e.length>0&&this.trailFillColor?this.paintBase(tt(this.trailFillColor,1/e.length)):this.draw((t=>{ht(t,this.size)}))}async windowResize(){if(!this.element)return;const t=this.container;this.resize();const e=t.updateActualOptions();t.particles.setDensity();for(const[,e]of t.plugins)void 0!==e.resize&&e.resize();e&&await t.refresh()}resize(){if(!this.element)return;const t=this.container,e=t.retina.pixelRatio,i=t.canvas.size,o=Object.assign({},i);i.width=this.element.offsetWidth*e,i.height=this.element.offsetHeight*e,this.element.width=i.width,this.element.height=i.height,this.container.started&&(this.resizeFactor={width:i.width/o.width,height:i.height/o.height})}drawConnectLine(t,e){this.draw((i=>{var o;const s=this.lineStyle(t,e);if(!s)return;const n=t.getPosition(),a=e.getPosition();pt(i,null!==(o=t.retina.linksWidth)&&void 0!==o?o:this.container.retina.linksWidth,s,n,a)}))}drawGrabLine(t,e,i,o){const s=this.container;this.draw((n=>{var a;const r=t.getPosition();yt(n,null!==(a=t.retina.linksWidth)&&void 0!==a?a:s.retina.linksWidth,r,o,e,i)}))}drawParticle(t,e){var i,o,s,a,r,l;if(t.spawning||t.destroyed)return;const c=t.getFillColor(),d=null!==(i=t.getStrokeColor())&&void 0!==i?i:c;if(!c&&!d)return;let[h,u]=this.getPluginParticleColors(t);const v=t.options.twinkle.particles,p=v.enable&&Math.random()<v.frequency;if(!h||!u){const t=V(v.color);h||(h=p&&void 0!==t?t:c||void 0),u||(u=p&&void 0!==t?t:d||void 0)}const f=this.container.actualOptions,y=t.options.zIndex,m=(1-t.zIndexFactor)**y.opacityRate,b=t.getRadius(),g=p?n(v.opacity):null!==(a=null!==(o=t.bubble.opacity)&&void 0!==o?o:null===(s=t.opacity)||void 0===s?void 0:s.value)&&void 0!==a?a:1,w=null!==(l=null===(r=t.stroke)||void 0===r?void 0:r.opacity)&&void 0!==l?l:g,x=g*m,k=h?et(h,x):void 0;(k||u)&&this.draw((i=>{const o=(1-t.zIndexFactor)**y.sizeRate,s=u?et(u,w*m):k;if(b<=0)return;const n=this.container;for(const e of n.particles.updaters)e.beforeDraw&&e.beforeDraw(t);mt(this.container,i,t,e,k,s,f.backgroundMask.enable,f.backgroundMask.composite,b*o,x,t.options.shadow,t.gradient);for(const e of n.particles.updaters)e.afterDraw&&e.afterDraw(t)}))}drawPlugin(t,e){this.draw((i=>{wt(i,t,e)}))}drawParticlePlugin(t,e,i){this.draw((o=>{xt(o,t,e,i)}))}initBackground(){const t=this.container.actualOptions.background,e=this.element,i=null==e?void 0:e.style;if(i){if(t.color){const e=F(t.color);i.backgroundColor=e?tt(e,t.opacity):""}else i.backgroundColor="";i.backgroundImage=t.image||"",i.backgroundPosition=t.position||"",i.backgroundRepeat=t.repeat||"",i.backgroundSize=t.size||""}}draw(t){if(this.context)return t(this.context)}initCover(){const t=this.container.actualOptions.backgroundMask.cover,e=F(t.color);if(e){const i={r:e.r,g:e.g,b:e.b,a:t.opacity};this.coverColorStyle=tt(i,i.a),console.log(this.coverColorStyle)}}initTrail(){const t=this.container.actualOptions,e=F(t.particles.move.trail.fillColor);if(e){const i=t.particles.move.trail;this.trailFillColor={r:e.r,g:e.g,b:e.b,a:1/i.length}}}getPluginParticleColors(t){let e,i;for(const[,o]of this.container.plugins)if(!e&&o.particleFillColor&&(e=V(o.particleFillColor(t))),!i&&o.particleStrokeColor&&(i=V(o.particleStrokeColor(t))),e&&i)break;return[e,i]}initStyle(){const t=this.element,e=this.container.actualOptions;if(!t)return;const i=this.originalStyle;e.fullScreen.enable?(this.originalStyle=T({},t.style),t.style.setProperty("position","fixed","important"),t.style.setProperty("z-index",e.fullScreen.zIndex.toString(10),"important"),t.style.setProperty("top","0","important"),t.style.setProperty("left","0","important"),t.style.setProperty("width","100%","important"),t.style.setProperty("height","100%","important")):i&&(t.style.position=i.position,t.style.zIndex=i.zIndex,t.style.top=i.top,t.style.left=i.left,t.style.width=i.width,t.style.height=i.height);for(const i in e.style){if(!i||!e.style)continue;const o=e.style[i];o&&t.style.setProperty(i,o,"important")}}paintBase(t){this.draw((e=>{dt(e,this.size,t)}))}lineStyle(t,e){return this.draw((i=>{const o=this.container.actualOptions.interactivity.modes.connect;return ft(i,t,e,o.links.opacity)}))}}class Nt{constructor(){this.value="#fff"}static create(t,e){const i=new Nt;return i.load(t),void 0!==e&&("string"==typeof e||e instanceof Array?i.load({value:e}):i.load(e)),i}load(t){void 0!==(null==t?void 0:t.value)&&(this.value=t.value)}}class Jt{constructor(){this.color=new Nt,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=Nt.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image),void 0!==t.position&&(this.position=t.position),void 0!==t.repeat&&(this.repeat=t.repeat),void 0!==t.size&&(this.size=t.size),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Xt{constructor(){this.color=new Nt,this.opacity=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=Nt.create(this.color,t.color)),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Yt{constructor(){this.composite="destination-out",this.cover=new Xt,this.enable=!1}load(t){if(void 0!==t){if(void 0!==t.composite&&(this.composite=t.composite),void 0!==t.cover){const e=t.cover,i="string"==typeof t.cover?{color:t.cover}:t.cover;this.cover.load(void 0!==e.color?e:{color:i})}void 0!==t.enable&&(this.enable=t.enable)}}}class Qt{constructor(){this.enable=!0,this.zIndex=0}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.zIndex&&(this.zIndex=t.zIndex))}}class Zt{constructor(){this.enable=!1,this.mode=[]}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode))}}class Kt{constructor(){this.selectors=[],this.enable=!1,this.mode=[],this.type="circle"}get elementId(){return this.ids}set elementId(t){this.ids=t}get el(){return this.elementId}set el(t){this.elementId=t}get ids(){return this.selectors instanceof Array?this.selectors.map((t=>t.replace("#",""))):this.selectors.replace("#","")}set ids(t){this.selectors=t instanceof Array?t.map((t=>`#${t}`)):`#${t}`}load(t){var e,i;if(void 0===t)return;const o=null!==(i=null!==(e=t.ids)&&void 0!==e?e:t.elementId)&&void 0!==i?i:t.el;void 0!==o&&(this.ids=o),void 0!==t.selectors&&(this.selectors=t.selectors),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.type&&(this.type=t.type)}}class te{constructor(){this.enable=!1,this.force=2,this.smooth=10}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.force&&(this.force=t.force),void 0!==t.smooth&&(this.smooth=t.smooth))}}class ee{constructor(){this.enable=!1,this.mode=[],this.parallax=new te}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),this.parallax.load(t.parallax))}}class ie{constructor(){this.onClick=new Zt,this.onDiv=new Kt,this.onHover=new ee,this.resize=!0}get onclick(){return this.onClick}set onclick(t){this.onClick=t}get ondiv(){return this.onDiv}set ondiv(t){this.onDiv=t}get onhover(){return this.onHover}set onhover(t){this.onHover=t}load(t){var e,i,o;if(void 0===t)return;this.onClick.load(null!==(e=t.onClick)&&void 0!==e?e:t.onclick);const s=null!==(i=t.onDiv)&&void 0!==i?i:t.ondiv;void 0!==s&&(s instanceof Array?this.onDiv=s.map((t=>{const e=new Kt;return e.load(t),e})):(this.onDiv=new Kt,this.onDiv.load(s))),this.onHover.load(null!==(o=t.onHover)&&void 0!==o?o:t.onhover),void 0!==t.resize&&(this.resize=t.resize)}}class oe{constructor(){this.distance=200,this.duration=.4,this.easing="ease-out-quad",this.factor=1,this.maxSpeed=50,this.speed=1}load(t){t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.easing&&(this.easing=t.easing),void 0!==t.factor&&(this.factor=t.factor),void 0!==t.maxSpeed&&(this.maxSpeed=t.maxSpeed),void 0!==t.speed&&(this.speed=t.speed))}}class se{constructor(){this.distance=200}load(t){t&&void 0!==t.distance&&(this.distance=t.distance)}}class ne{constructor(){this.distance=200,this.duration=.4,this.mix=!1}load(t){void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.mix&&(this.mix=t.mix),void 0!==t.opacity&&(this.opacity=t.opacity),void 0!==t.color&&(t.color instanceof Array?this.color=t.color.map((t=>Nt.create(void 0,t))):(this.color instanceof Array&&(this.color=new Nt),this.color=Nt.create(this.color,t.color))),void 0!==t.size&&(this.size=t.size))}}class ae extends ne{constructor(){super(),this.selectors=[]}get ids(){return this.selectors instanceof Array?this.selectors.map((t=>t.replace("#",""))):this.selectors.replace("#","")}set ids(t){this.selectors=t instanceof Array?t.map((t=>`#${t}`)):`#${t}`}load(t){super.load(t),void 0!==t&&(void 0!==t.ids&&(this.ids=t.ids),void 0!==t.selectors&&(this.selectors=t.selectors))}}class re extends ne{load(t){super.load(t),void 0!==t&&void 0!==t.divs&&(t.divs instanceof Array?this.divs=t.divs.map((t=>{const e=new ae;return e.load(t),e})):((this.divs instanceof Array||!this.divs)&&(this.divs=new ae),this.divs.load(t.divs)))}}class le{constructor(){this.opacity=.5}load(t){void 0!==t&&void 0!==t.opacity&&(this.opacity=t.opacity)}}class ce{constructor(){this.distance=80,this.links=new le,this.radius=60}get line_linked(){return this.links}set line_linked(t){this.links=t}get lineLinked(){return this.links}set lineLinked(t){this.links=t}load(t){var e,i;void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),this.links.load(null!==(i=null!==(e=t.links)&&void 0!==e?e:t.lineLinked)&&void 0!==i?i:t.line_linked),void 0!==t.radius&&(this.radius=t.radius))}}class de{constructor(){this.blink=!1,this.consent=!1,this.opacity=1}load(t){void 0!==t&&(void 0!==t.blink&&(this.blink=t.blink),void 0!==t.color&&(this.color=Nt.create(this.color,t.color)),void 0!==t.consent&&(this.consent=t.consent),void 0!==t.opacity&&(this.opacity=t.opacity))}}class he{constructor(){this.distance=100,this.links=new de}get line_linked(){return this.links}set line_linked(t){this.links=t}get lineLinked(){return this.links}set lineLinked(t){this.links=t}load(t){var e,i;void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),this.links.load(null!==(i=null!==(e=t.links)&&void 0!==e?e:t.lineLinked)&&void 0!==i?i:t.line_linked))}}class ue{constructor(){this.start=new Nt,this.stop=new Nt,this.start.value="#ffffff",this.stop.value="#000000"}load(t){void 0!==t&&(this.start=Nt.create(this.start,t.start),this.stop=Nt.create(this.stop,t.stop))}}class ve{constructor(){this.gradient=new ue,this.radius=1e3}load(t){void 0!==t&&(this.gradient.load(t.gradient),void 0!==t.radius&&(this.radius=t.radius))}}class pe{constructor(){this.color=new Nt,this.color.value="#000000",this.length=2e3}load(t){void 0!==t&&(this.color=Nt.create(this.color,t.color),void 0!==t.length&&(this.length=t.length))}}class fe{constructor(){this.area=new ve,this.shadow=new pe}load(t){void 0!==t&&(this.area.load(t.area),this.shadow.load(t.shadow))}}class ye{constructor(){th