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 106 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 s in i)("object"==typeof exports?exports:t)[s]=i[s]}}(window,(function(){return function(){"use strict";var t={d:function(e,i){for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},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 s(t,e,i,s){return Math.floor((t*i+e*s)/(i+s))}function o(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:o(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),s=r(t);return void 0!==e?{min:Math.min(i,e),max:Math.max(s,e)}:l(i,s)}function c(t){const e=t.random,{enable:i,minimumValue:s}="boolean"==typeof e?{enable:e,minimumValue:0}:e;return n(i?l(t.value,s):t.value)}function h(t,e){const i=t.x-e.x,s=t.y-e.y;return{dx:i,dy:s,distance:Math.sqrt(i*i+s*s)}}function d(t,e){return h(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=Gt.origin;return e.length=1,e.angle=t,e}function p(t,e,i,s){return Gt.create(t.x*(i-s)/(i+s)+2*e.x*s/(i+s),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 m(t,e,i,s,o,n){const a={bounced:!1};return e.min>=s.min&&e.min<=s.max&&e.max>=s.min&&e.max<=s.max&&(t.max>=i.min&&t.max<=(i.max+i.min)/2&&o>0||t.min<=i.max&&t.min>(i.max+i.min)/2&&o<0)&&(a.velocity=o*-n,a.bounced=!0),a}function y(t,e){if(e instanceof Array){for(const i of e)if(t.matches(i))return!0;return!1}return t.matches(e)}function g(){return"undefined"==typeof window||!window||void 0===window.document||!window.document}function w(){return g()?t=>setTimeout(t):t=>(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.setTimeout)(t)}function b(){return g()?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 M(t){return Math.floor(Math.random()*t.length)}function z(t,e,i=!0){return t[void 0!==e&&i?e%t.length:M(t)]}function P(t,e,i,s){return C(T(t,null!=i?i:0),e,s)}function C(t,e,i){let s=!0;return i&&"bottom"!==i||(s=t.top<e.height),!s||i&&"left"!==i||(s=t.right>0),!s||i&&"right"!==i||(s=t.left<e.width),!s||i&&"top"!==i||(s=t.bottom>0),s}function T(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function S(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 s=i[e],o="object"==typeof s,n=t;n[e]=o&&Array.isArray(s)?s.map((t=>S(n[e],t))):S(n[e],s)}}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 s of e){const e=s.mode;s.enable&&x(t,e)&&I(s,i)}else{const s=e.mode;e.enable&&x(t,s)&&I(e,i)}}function I(t,e){const i=t.selectors;if(i instanceof Array)for(const s of i)e(s,t);else e(i,t)}function E(t,e){if(e&&t)return t instanceof Array?t.find((t=>y(e,t.selectors))):y(e,t.selectors)?t:void 0}function A(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:Gt.create(c(t.options.bounce.horizontal),c(t.options.bounce.vertical))}}function D(t,e){const{x:i,y:s}=t.velocity.sub(e.velocity),[o,n]=[t.position,e.position],{dx:a,dy:r}=h(n,o);if(i*a+s*r>=0){const i=-Math.atan2(r,a),s=t.mass,o=e.mass,n=t.velocity.rotate(i),l=e.velocity.rotate(i),c=p(n,l,s,o),h=p(l,n,s,o),d=c.rotate(-i),u=h.rotate(-i);t.velocity.x=d.x*t.factor.x,t.velocity.y=d.y*t.factor.y,e.velocity.x=u.x*e.factor.x,e.velocity.y=u.y*e.factor.y}}function F(t,e){const i=T(t.getPosition(),t.getRadius()),s=m({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));s.bounced&&(void 0!==s.velocity&&(t.velocity.x=s.velocity),void 0!==s.position&&(t.position.x=s.position));const o=m({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));o.bounced&&(void 0!==o.velocity&&(t.velocity.y=o.velocity),void 0!==o.position&&(t.position.y=o.position))}function L(t,e,i){let s=i;return s<0&&(s+=1),s>1&&(s-=1),s<1/6?t+6*(e-t)*s:s<.5?e:s<2/3?t+(e-t)*(2/3-s)*6:t}function q(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?G({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?U({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,s,o)=>e+e+i+i+s+s+(void 0!==o?o+o:""))),s=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(i);return s?{a:void 0!==s[4]?parseInt(s[4],16)/255:1,b:parseInt(s[3],16),g:parseInt(s[2],16),r:parseInt(s[1],16)}:void 0}}function H(t,e,i=!0){var s,o,n;if(void 0===t)return;const a="string"==typeof t?{value:t}:t;let r;if("string"==typeof a.value)r=a.value===St.randomColorValue?K():B(a.value);else if(a.value instanceof Array){r=H({value:z(a.value,e,i)})}else{const t=a.value,e=null!==(s=t.rgb)&&void 0!==s?s:a.value;if(void 0!==e.r)r=e;else{const e=null!==(o=t.hsl)&&void 0!==o?o: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=Y(e))}}}return r}function V(t,e,i=!0){const s=H(t,e,i);return void 0!==s?_(s):void 0}function _(t){const e=t.r/255,i=t.g/255,s=t.b/255,o=Math.max(e,i,s),n=Math.min(e,i,s),a={h:0,l:(o+n)/2,s:0};return o!=n&&(a.s=a.l<.5?(o-n)/(o+n):(o-n)/(2-o-n),a.h=e===o?(i-s)/(o-n):a.h=i===o?2+(s-e)/(o-n):4+(e-i)/(o-n)),a.l*=100,a.s*=100,a.h*=60,a.h<0&&(a.h+=360),a}function W(t){var e;return null===(e=q(t))||void 0===e?void 0:e.a}function B(t){return q(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,s=2*i.l-t;e.r=L(s,t,i.h+1/3),e.g=L(s,t,i.h),e.b=L(s,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 G(t){const e=j(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function $(t){const e=t.l/100,i=e+t.s/100*Math.min(e,1-e),s=i?2*(1-e/i):0;return{h:t.h,s:100*s,v:100*i}}function J(t){const e=$(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),s=0===i||1===i?0:(e-i)/Math.min(i,1-i);return{h:t.h,l:100*i,s:100*s}}function X(t){const e=N(t);return{a:t.a,h:e.h,l:e.l,s:e.s}}function Y(t){const e={b:0,g:0,r:0},i=t.h/60,s=t.s/100,o=t.v/100,n=o*s,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=o-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 U(t){const e=Y(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),s=i-Math.min(e.r,e.g,e.b);let o=0;i===e.r?o=(e.g-e.b)/s*60:i===e.g?o=60*(2+(e.b-e.r)/s):i===e.b&&(o=60*(4+(e.r-e.g)/s));return{h:o,s:100*(i?s/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(o(l(e,256))),g:Math.floor(o(l(e,256))),r:Math.floor(o(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 st(t,e,i,o){let n=t,a=e;return void 0===n.r&&(n=j(t)),void 0===a.r&&(a=j(e)),{b:s(n.b,a.b,i,o),g:s(n.g,a.g,i,o),r:s(n.r,a.r,i,o)}}function ot(t,e,i){var s,o;if(i===St.randomColorValue)return K();if("mid"!==i)return i;{const i=null!==(s=t.getFillColor())&&void 0!==s?s:t.getStrokeColor(),n=null!==(o=null==e?void 0:e.getFillColor())&&void 0!==o?o:null==e?void 0:e.getStrokeColor();if(i&&n&&e)return st(i,n,t.getRadius(),e.getRadius());{const t=null!=i?i:n;if(t)return j(t)}}}function nt(t,e,i){const s="string"==typeof t?t:t.value;return s===St.randomColorValue?i?H({value:s}):e?St.randomColorValue:St.midColorValue:H({value:s})}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 s={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(lt(s.h,e.h,i),lt(s.s,e.s,i),lt(s.l,e.l,i)),s}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 ht(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 dt(t,e){t.clearRect(0,0,e.width,e.height)}function ut(t,e,i,s,o,n,a,r,l,c,u,v){let p=!1;if(d(i,s)<=o)ct(t,i,s),p=!0;else if(a){let e,a;const r=h(i,{x:s.x-n.width,y:s.y});if(r.distance<=o){const t=i.y-r.dy/r.dx*i.x;e={x:0,y:t},a={x:n.width,y:t}}else{const t=h(i,{x:s.x,y:s.y-n.height});if(t.distance<=o){const s=-(i.y-t.dy/t.dx*i.x)/(t.dy/t.dx);e={x:s,y:0},a={x:s,y:n.height}}else{const t=h(i,{x:s.x-n.width,y:s.y-n.height});if(t.distance<=o){const s=i.y-t.dy/t.dx*i.x;e={x:-s/(t.dy/t.dx),y:s},a={x:e.x+n.width,y:e.y+n.height}}}}e&&a&&(ct(t,i,e),ct(t,s,a),p=!0)}if(p){if(t.lineWidth=e,r&&(t.globalCompositeOperation=l),t.strokeStyle=tt(c,u),v.enable){const e=H(v.color);e&&(t.shadowBlur=v.blur,t.shadowColor=tt(e))}t.stroke()}}function vt(t,e,i,s,o,n,a,r){!function(t,e,i,s){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.lineTo(s.x,s.y),t.closePath()}(t,e,i,s),o&&(t.globalCompositeOperation=n),t.fillStyle=tt(a,r),t.fill()}function pt(t,e,i,s,o){t.save(),ct(t,s,o),t.lineWidth=e,t.strokeStyle=i,t.stroke(),t.restore()}function ft(t,e,i,s){const o=Math.floor(i.getRadius()/e.getRadius()),n=e.getFillColor(),a=i.getFillColor();if(!n||!a)return;const r=e.getPosition(),l=i.getPosition(),c=st(n,a,e.getRadius(),i.getRadius()),h=t.createLinearGradient(r.x,r.y,l.x,l.y);return h.addColorStop(0,et(n,s)),h.addColorStop(o>1?1:o,tt(c,s)),h.addColorStop(1,et(a,s)),h}function mt(t,e,i,s,o,n){t.save(),ct(t,i,s),t.strokeStyle=tt(o,n),t.lineWidth=e,t.stroke(),t.restore()}function yt(t,e,i,s,o,n,a,r,l,c,h,d){var u,v,p,f,m,y;const g=i.getPosition(),w=i.options.tilt,b=i.options.roll;if(e.save(),w.enable||b.enable){const t=b.enable&&i.roll,s=w.enable&&i.tilt,o=t&&("horizontal"===b.mode||"both"===b.mode),n=t&&("vertical"===b.mode||"both"===b.mode);e.setTransform(o?Math.cos(i.roll.angle):1,s?Math.cos(i.tilt.value)*i.tilt.cosDirection:0,s?Math.sin(i.tilt.value)*i.tilt.sinDirection:0,n?Math.sin(i.roll.angle):1,g.x,g.y)}else e.translate(g.x,g.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(h.enable&&k&&(e.shadowBlur=h.blur,e.shadowColor=tt(k),e.shadowOffsetX=h.offset.x,e.shadowOffsetY=h.offset.y),d){const t=d.angle.value,i="radial"===d.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 d.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 o&&(e.fillStyle=o);const M=i.stroke;e.lineWidth=null!==(m=i.strokeWidth)&&void 0!==m?m:0,n&&(e.strokeStyle=n),gt(t,e,i,l,c,s),(null!==(y=null==M?void 0:M.width)&&void 0!==y?y:0)>0&&e.stroke(),i.close&&e.closePath(),i.fill&&e.fill(),e.restore(),e.save(),w.enable&&i.tilt?e.setTransform(1,Math.cos(i.tilt.value)*i.tilt.cosDirection,Math.sin(i.tilt.value)*i.tilt.sinDirection,1,g.x,g.y):e.translate(g.x,g.y),0!==x&&e.rotate(x),a&&(e.globalCompositeOperation=r),wt(t,e,i,l,c,s),e.restore()}function gt(t,e,i,s,o,n){if(!i.shape)return;const a=t.drawers.get(i.shape);a&&a.draw(e,i,s,o,n,t.retina.pixelRatio)}function wt(t,e,i,s,o,n){if(!i.shape)return;const a=t.drawers.get(i.shape);(null==a?void 0:a.afterEffect)&&a.afterEffect(e,i,s,o,n,t.retina.pixelRatio)}function bt(t,e,i){e.draw&&(t.save(),e.draw(t,i),t.restore())}function xt(t,e,i,s){void 0!==e.drawParticle&&(t.save(),e.drawParticle(t,i,s),t.restore())}function kt(t,e,i,s,o,n,a,r,l){const c=e.getPosition();if(i&&(t.strokeStyle=et(i,o)),0===n)return;t.lineWidth=n;const h=a*Math.PI/180;t.beginPath(),t.ellipse(c.x,c.y,s/2,2*s,h,r,l),t.stroke()}function Mt(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 Jt},Circle:function(){return Pt},CircleWarp:function(){return Tt},Constants:function(){return St},Container:function(){return ts},Engine:function(){return cs},EventListeners:function(){return Rt},ExternalInteractorBase:function(){return It},FrameManager:function(){return Et},InteractionManager:function(){return Lt},Loader:function(){return os},Main:function(){return cs},Particle:function(){return $i},Particles:function(){return Yi},ParticlesInteractorBase:function(){return qt},ParticlesMover:function(){return Ht},Plugins:function(){return Wt},Point:function(){return Bt},QuadTree:function(){return jt},Range:function(){return zt},Rectangle:function(){return Ct},Retina:function(){return Ui},Vector:function(){return Gt},Vector3d:function(){return $t},alterHsl:function(){return Mt},animate:function(){return w},areBoundsInside:function(){return C},arrayRandomIndex:function(){return M},calcEasing:function(){return f},calculateBounds:function(){return T},cancelAnimation:function(){return b},circleBounce:function(){return D},circleBounceDataFromParticle:function(){return A},clamp:function(){return i},clear:function(){return dt},collisionVelocity:function(){return p},colorMix:function(){return st},colorToHsl:function(){return V},colorToRgb:function(){return H},deepExtend:function(){return S},divMode:function(){return E},divModeExecute:function(){return R},drawConnectLine:function(){return pt},drawEllipse:function(){return kt},drawGrabLine:function(){return mt},drawLinkLine:function(){return ut},drawLinkTriangle:function(){return vt},drawParticle:function(){return yt},drawParticlePlugin:function(){return xt},drawPlugin:function(){return bt},drawShape:function(){return gt},drawShapeAfterEffect:function(){return wt},getDistance:function(){return d},getDistances:function(){return h},getHslAnimationFromHsl:function(){return rt},getHslFromAnimation:function(){return at},getLinkColor:function(){return ot},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 $},hslToRgb:function(){return j},hslaToHsva:function(){return J},hslaToRgba:function(){return G},hsvToHsl:function(){return N},hsvToRgb:function(){return Y},hsvaToHsla:function(){return X},hsvaToRgba:function(){return U},isDivModeEnabled:function(){return O},isInArray:function(){return x},isPointInside:function(){return P},isSsr:function(){return g},itemFromArray:function(){return z},loadFont:function(){return k},mix:function(){return s},pJSDom:function(){return us},paintBase:function(){return ht},particlesJS:function(){return ds},randomInRange:function(){return o},rectBounce:function(){return F},rgbToHsl:function(){return _},rgbToHsv:function(){return Q},rgbaToHsva:function(){return Z},setRangeValue:function(){return l},singleDivModeExecute:function(){return I},stringToAlpha:function(){return W},stringToRgb:function(){return B},tsParticles:function(){return hs}});class zt{constructor(t,e){this.position={x:t,y:e}}}class Pt extends zt{constructor(t,e,i){super(t,e),this.radius=i}contains(t){return d(t,this.position)<=this.radius}intersects(t){const e=t,i=t,s=this.position,o=t.position,n=Math.abs(o.x-s.x),a=Math.abs(o.y-s.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,s=Math.pow(n-t,2)+Math.pow(a-i,2);return!(n>r+t||a>r+i)&&(n<=t||a<=i||s<=r*r)}return!1}}class Ct extends zt{constructor(t,e,i,s){super(t,e),this.size={height:s,width:i}}contains(t){const e=this.size.width,i=this.size.height,s=this.position;return t.x>=s.x&&t.x<=s.x+e&&t.y>=s.y&&t.y<=s.y+i}intersects(t){const e=t,i=t,s=this.size.width,o=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+s&&a.x+i>n.x&&a.y<n.y+o&&a.y+r>n.y}return!1}}class Tt extends Pt{constructor(t,e,i,s){super(t,e,i),this.canvasSize=s,this.canvasSize={height:s.height,width:s.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 s={x:t.x,y:t.y-this.canvasSize.height};return super.contains(s)}intersects(t){if(super.intersects(t))return!0;const e=t,i=t,s={x:t.position.x-this.canvasSize.width,y:t.position.y-this.canvasSize.height};if(void 0!==i.radius){const t=new Pt(s.x,s.y,2*i.radius);return super.intersects(t)}if(void 0!==e.size){const t=new Ct(s.x,s.y,2*e.size.width,2*e.size.height);return super.intersects(t)}return!1}}class St{}function Ot(t,e,i,s,o){if(s){let s={passive:!0};"boolean"==typeof o?s.capture=o:void 0!==o&&(s=o),t.addEventListener(e,i,s)}else{const s=o;t.removeEventListener(e,i,s)}}St.generatedAttribute="generated",St.randomColorValue="random",St.midColorValue="mid",St.touchEndEvent="touchend",St.mouseDownEvent="mousedown",St.mouseUpEvent="mouseup",St.mouseMoveEvent="mousemove",St.touchStartEvent="touchstart",St.touchMoveEvent="touchmove",St.mouseLeaveEvent="mouseleave",St.mouseOutEvent="mouseout",St.touchCancelEvent="touchcancel",St.resizeEvent="resize",St.visibilityChangeEvent="visibilitychange",St.noPolygonDataLoaded="No polygon data loaded.",St.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,s=i.actualOptions,o=s.interactivity.detectsOn;let n=St.mouseLeaveEvent;if("window"===o)i.interactivity.element=window,n=St.mouseOutEvent;else if("parent"===o&&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=!g()&&"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;(s.interactivity.events.onHover.enable||s.interactivity.events.onClick.enable)&&(Ot(r,St.mouseMoveEvent,this.mouseMoveHandler,t),Ot(r,St.touchStartEvent,this.touchStartHandler,t),Ot(r,St.touchMoveEvent,this.touchMoveHandler,t),s.interactivity.events.onClick.enable?(Ot(r,St.touchEndEvent,this.touchEndClickHandler,t),Ot(r,St.mouseUpEvent,this.mouseUpHandler,t),Ot(r,St.mouseDownEvent,this.mouseDownHandler,t)):Ot(r,St.touchEndEvent,this.touchEndHandler,t),Ot(r,n,this.mouseLeaveHandler,t),Ot(r,St.touchCancelEvent,this.touchCancelHandler,t)),i.canvas.element&&(i.canvas.element.style.pointerEvents=l===i.canvas.element?"initial":"none"),s.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,St.resizeEvent,this.resizeHandler,t)),document&&Ot(document,St.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,s,o,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 h;l.interactivity.mouse.inside=!0;const d=l.canvas.element;if(t.type.startsWith("mouse")){this.canPush=!0;const e=t;if(l.interactivity.element===window){if(d){const t=d.getBoundingClientRect();h={x:e.clientX-t.left,y:e.clientY-t.top}}}else if("parent"===c.interactivity.detectsOn){const t=e.target,o=e.currentTarget,n=l.canvas.element;if(t&&o&&n){const i=t.getBoundingClientRect(),s=o.getBoundingClientRect(),a=n.getBoundingClientRect();h={x:e.offsetX+2*i.left-(s.left+a.left),y:e.offsetY+2*i.top-(s.top+a.top)}}else h={x:null!==(i=e.offsetX)&&void 0!==i?i:e.clientX,y:null!==(s=e.offsetY)&&void 0!==s?s:e.clientY}}else e.target===l.canvas.element&&(h={x:null!==(o=e.offsetX)&&void 0!==o?o: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],s=null==d?void 0:d.getBoundingClientRect();h={x:i.clientX-(null!==(a=null==s?void 0:s.left)&&void 0!==a?a:0),y:i.clientY-(null!==(r=null==s?void 0:s.top)&&void 0!==r?r:0)}}const u=l.retina.pixelRatio;h&&(h.x*=u,h.y*=u),l.interactivity.mouse.position=h,l.interactivity.status=St.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=St.mouseLeaveEvent,e.inside=!1,e.clicking=!1}mouseTouchClick(t){const e=this.container,i=e.actualOptions,s=e.interactivity.mouse;s.inside=!0;let o=!1;const n=s.position;if(void 0!==n&&i.interactivity.events.onClick.enable){for(const[,t]of e.plugins)if(void 0!==t.clickPositionValid&&(o=t.clickPositionValid(n),o))break;o||this.doMouseTouchClick(t),s.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 s=i.interactivity.events.onClick;if(s.mode instanceof Array)for(const t of s.mode)this.handleClickMode(t);else this.handleClickMode(s.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,s=i.interactivity.modes.push.quantity,o=i.interactivity.modes.remove.quantity;switch(t){case"push":if(s>0){const t=z([void 0,...i.interactivity.modes.push.groups]),o=void 0!==t?e.actualOptions.particles.groups[t]:void 0;e.particles.push(s,e.interactivity.mouse,o,t)}break;case"remove":e.particles.removeQuantity(o);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 It{constructor(t){this.container=t,this.type=0}}class Et{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 s=t-i.lastFrameTime,o={value:s,factor:60*s/1e3};if(i.lifeTime+=o.value,i.lastFrameTime=t,s>1e3)return void i.draw(!1);if(await i.particles.draw(o),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 At,Dt=function(t,e,i,s,o){if("m"===s)throw new TypeError("Private method is not writable");if("a"===s&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===s?o.call(t,i):o?o.value=i:e.set(t,i),i},Ft=function(t,e,i,s){if("a"===i&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?s:"a"===i?s.call(t):s?s.value:e.get(t)};class Lt{constructor(t,e){this.container=e,At.set(this,void 0),Dt(this,At,t,"f"),this.externalInteractors=[],this.particleInteractors=[],this.init()}init(){const t=Ft(this,At,"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)}}At=new WeakMap;class qt{constructor(t){this.container=t,this.type=1}}class Ht{constructor(t){this.container=t}move(t,e){t.destroyed||(this.moveParticle(t,e),this.moveParallax(t))}moveParticle(t,e){var i,s,o,a,l;const c=t.options,d=c.move;if(!d.enable)return;const u=this.container,v=this.getProximitySpeedFactor(t),p=(null!==(i=(a=t.retina).moveSpeed)&&void 0!==i?i:a.moveSpeed=n(d.speed)*u.retina.pixelRatio)*u.retina.reduceFactor,f=null!==(s=(l=t.retina).moveDrift)&&void 0!==s?s:l.moveDrift=n(t.options.move.drift)*u.retina.pixelRatio,m=r(c.size.value)*u.retina.pixelRatio,y=p*((d.size?t.getRadius()/m:1)*v*(e.factor||1)/2);this.applyPath(t,e);const g=t.gravity,w=g.enable&&g.inverse?-1:1;g.enable&&y&&(t.velocity.y+=w*(g.acceleration*e.factor)/(60*y)),f&&y&&(t.velocity.x+=f*e.factor/(60*y));const b=t.moveDecay;1!=b&&t.velocity.multTo(b);const x=t.velocity.mult(y),k=null!==(o=t.retina.maxSpeed)&&void 0!==o?o:u.retina.maxSpeed;g.enable&&k>0&&(!g.inverse&&x.y>=0&&x.y>=k||g.inverse&&x.y<=0&&x.y<=-k)&&(x.y=w*k,y&&(t.velocity.y=x.y/y));const M=t.options.zIndex,z=(1-t.zIndexFactor)**M.velocityRate;d.spin.enable?this.spin(t,y):(1!=z&&x.multTo(z),t.position.addTo(x),d.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:s}=h(e,t.position),o=Math.abs(i),n=Math.abs(s),a=t.retina.maxDistance.horizontal,r=t.retina.maxDistance.vertical;if(a||r)if((a&&o>=a||r&&n>=r)&&!t.misplaced)t.misplaced=!!a&&o>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||o<a)&&(!r||n<r)&&t.misplaced)t.misplaced=!1;else if(t.misplaced){const i=t.position,s=t.velocity;a&&(i.x<e.x&&s.x<0||i.x>e.x&&s.x>0)&&(s.x*=-Math.random()),r&&(i.y<e.y&&s.y<0||i.y>e.y&&s.y>0)&&(s.y*=-Math.random())}}(t)}spin(t,e){const i=this.container;if(!t.spin)return;const s={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*s.x(t.spin.angle),t.position.y=t.spin.center.y+t.spin.radius*s.y(t.spin.angle),t.spin.radius+=t.spin.acceleration;const o=Math.max(i.canvas.size.width,i.canvas.size.height);t.spin.radius>o/2?(t.spin.radius=o/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/o)}applyPath(t,e){const s=t.options.move.path;if(!s.enable)return;const o=this.container;if(t.lastPathTime<=t.pathDelay)return void(t.lastPathTime+=e.value);const n=o.pathGenerator.generate(t);t.velocity.addTo(n),s.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(g()||!i.interactivity.events.onHover.parallax.enable)return;const s=i.interactivity.events.onHover.parallax.force,o=e.interactivity.mouse.position;if(!o)return;const n=e.canvas.size.width/2,a=e.canvas.size.height/2,r=i.interactivity.events.onHover.parallax.smooth,l=t.getRadius()/s,c=(o.x-n)*l,h=(o.y-a)*l;t.offset.x+=(c-t.offset.x)/r,t.offset.y+=(h-t.offset.y)/r}getProximitySpeedFactor(t){const e=this.container,i=e.actualOptions;if(!x("slow",i.interactivity.events.onHover.mode))return 1;const s=this.container.interactivity.mouse.position;if(!s)return 1;const o=d(s,t.getPosition()),n=e.retina.slowModeRadius;if(o>n)return 1;return(o/n||0)/i.interactivity.modes.slow.factor}}var Vt,_t=function(t,e,i,s,o){if("m"===s)throw new TypeError("Private method is not writable");if("a"===s&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===s?o.call(t,i):o?o.value=i:e.set(t,i),i};class Wt{constructor(t){Vt.set(this,void 0),_t(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,s=this.rectangle.size.height,o=this.capacity;this.northEast=new jt(new Ct(t,e,i/2,s/2),o),this.northWest=new jt(new Ct(t+i/2,e,i/2,s/2),o),this.southEast=new jt(new Ct(t,e+s/2,i/2,s/2),o),this.southWest=new jt(new Ct(t+i/2,e+s/2,i/2,s/2),o),this.divided=!0}insert(t){var e,i,s,o,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===(s=this.southEast)||void 0===s?void 0:s.insert(t))||(null===(o=this.southWest)||void 0===o?void 0:o.insert(t)))&&void 0!==n&&n))}queryCircle(t,e){return this.query(new Pt(t.x,t.y,e))}queryCircleWarp(t,e,i){const s=i,o=i;return this.query(new Tt(t.x,t.y,e,void 0!==s.canvas?s.canvas.size:o))}queryRectangle(t,e){return this.query(new Ct(t.x,t.y,e.width,e.height))}query(t,e){var i,s,o,n;const a=null!=e?e:[];if(!t.intersects(this.rectangle))return[];for(const e of this.points)!t.contains(e.position)&&d(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===(s=this.northWest)||void 0===s||s.query(t,a),null===(o=this.southEast)||void 0===o||o.query(t,a),null===(n=this.southWest)||void 0===n||n.query(t,a)),a}}class Gt{constructor(t,e){let i,s;if(void 0===e){if("number"==typeof t)throw new Error("tsParticles - Vector not initialized correctly");const e=t;[i,s]=[e.x,e.y]}else[i,s]=[t,e];this.x=i,this.y=s}static clone(t){return Gt.create(t.x,t.y)}static create(t,e){return new Gt(t,e)}static get origin(){return Gt.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 Gt.create(this.x+t.x,this.y+t.y)}addTo(t){this.x+=t.x,this.y+=t.y}sub(t){return Gt.create(this.x-t.x,this.y-t.y)}subFrom(t){this.x-=t.x,this.y-=t.y}mult(t){return Gt.create(this.x*t,this.y*t)}multTo(t){this.x*=t,this.y*=t}div(t){return Gt.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 Gt.clone(this)}setTo(t){this.x=t.x,this.y=t.y}rotate(t){return Gt.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 $t extends Gt{constructor(t,e,i){super(t,e),this.z=void 0===i?t.z:i}static clone(t){return $t.create(t.x,t.y,t.z)}static create(t,e,i){return new $t(t,e,i)}add(t){return t instanceof $t?$t.create(this.x+t.x,this.y+t.y,this.z+t.z):super.add(t)}addTo(t){super.addTo(t),t instanceof $t&&(this.z+=t.z)}sub(t){return t instanceof $t?$t.create(this.x-t.x,this.y-t.y,this.z-t.z):super.sub(t)}subFrom(t){super.subFrom(t),t instanceof $t&&(this.z-=t.z)}mult(t){return $t.create(this.x*t,this.y*t,this.z*t)}multTo(t){super.multTo(t),this.z*=t}div(t){return $t.create(this.x/t,this.y/t,this.z/t)}divTo(t){super.divTo(t),this.z/=t}copy(){return $t.clone(this)}setTo(t){super.setTo(t),t instanceof $t&&(this.z=t.z)}}class Jt{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&&St.generatedAttribute in t.dataset?"true"===t.dataset[St.generatedAttribute]:this.generatedCanvas,this.element=t,this.originalStyle=S({},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=>{dt(t,this.size)}))}paint(){const t=this.container.actualOptions;this.draw((e=>{t.backgroundMask.enable&&t.backgroundMask.cover?(dt(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=>{dt(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,s=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/s.width,height:i.height/s.height})}drawConnectLine(t,e){this.draw((i=>{var s;const o=this.lineStyle(t,e);if(!o)return;const n=t.getPosition(),a=e.getPosition();pt(i,null!==(s=t.retina.linksWidth)&&void 0!==s?s:this.container.retina.linksWidth,o,n,a)}))}drawGrabLine(t,e,i,s){const o=this.container;this.draw((n=>{var a;const r=t.getPosition();mt(n,null!==(a=t.retina.linksWidth)&&void 0!==a?a:o.retina.linksWidth,r,s,e,i)}))}drawParticle(t,e){var i,s,o,a,r,l;if(t.spawning||t.destroyed)return;const c=t.getFillColor(),h=null!==(i=t.getStrokeColor())&&void 0!==i?i:c;if(!c&&!h)return;let[d,u]=this.getPluginParticleColors(t);const v=t.options.twinkle.particles,p=v.enable&&Math.random()<v.frequency;if(!d||!u){const t=V(v.color);d||(d=p&&void 0!==t?t:c||void 0),u||(u=p&&void 0!==t?t:h||void 0)}const f=this.container.actualOptions,m=t.options.zIndex,y=(1-t.zIndexFactor)**m.opacityRate,g=t.getRadius(),w=p?n(v.opacity):null!==(a=null!==(s=t.bubble.opacity)&&void 0!==s?s:null===(o=t.opacity)||void 0===o?void 0:o.value)&&void 0!==a?a:1,b=null!==(l=null===(r=t.stroke)||void 0===r?void 0:r.opacity)&&void 0!==l?l:w,x=w*y,k=d?et(d,x):void 0;(k||u)&&this.draw((i=>{const s=(1-t.zIndexFactor)**m.sizeRate,o=u?et(u,b*y):k;if(g<=0)return;const n=this.container;for(const e of n.particles.updaters)e.beforeDraw&&e.beforeDraw(t);yt(this.container,i,t,e,k,o,f.backgroundMask.enable,f.backgroundMask.composite,g*s,x,t.options.shadow,t.gradient);for(const e of n.particles.updaters)e.afterDraw&&e.afterDraw(t)}))}drawPlugin(t,e){this.draw((i=>{bt(i,t,e)}))}drawParticlePlugin(t,e,i){this.draw((s=>{xt(s,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=H(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=H(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=H(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[,s]of this.container.plugins)if(!e&&s.particleFillColor&&(e=V(s.particleFillColor(t))),!i&&s.particleStrokeColor&&(i=V(s.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=S({},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 s=e.style[i];s&&t.style.setProperty(i,s,"important")}}paintBase(t){this.draw((e=>{ht(e,this.size,t)}))}lineStyle(t,e){return this.draw((i=>{const s=this.container.actualOptions.interactivity.modes.connect;return ft(i,t,e,s.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 Xt{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 Yt{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 Ut{constructor(){this.composite="destination-out",this.cover=new Yt,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 s=null!==(i=null!==(e=t.ids)&&void 0!==e?e:t.elementId)&&void 0!==i?i:t.el;void 0!==s&&(this.ids=s),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,s;if(void 0===t)return;this.onClick.load(null!==(e=t.onClick)&&void 0!==e?e:t.onclick);const o=null!==(i=t.onDiv)&&void 0!==i?i:t.ondiv;void 0!==o&&(o instanceof Array?this.onDiv=o.map((t=>{const e=new Kt;return e.load(t),e})):(this.onDiv=new Kt,this.onDiv.load(o))),this.onHover.load(null!==(s=t.onHover)&&void 0!==s?s:t.onhover),void 0!==t.resize&&(this.resize=t.resize)}}class se{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 oe{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 he{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 de{constructor(){this.distance=100,this.links=new he}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 me{constructor(){th