highos.goldoffers.co Open in urlscan Pro
94.237.26.82  Public Scan

Submitted URL: http://highos.goldoffers.co/dl/pre/pw/v2_js/confetti.js
Effective URL: https://highos.goldoffers.co/dl/pre/pw/v2_js/confetti.js
Submission: On May 05 via api from US — Scanned from FI

Form analysis 0 forms found in the DOM

Text Content

/* Confetti by Patrik Svensson (http://metervara.net) */
function confettiFN () {
	//$('.steps-wrap').append('<div id="confetti"></div>');
	var frameRate = 100;
	var dt = 1.2 / frameRate;
	var DEG_TO_RAD = Math.PI / 180;
	var RAD_TO_DEG = 180 / Math.PI;
	var canvas = document.createElement('canvas');
	var ctx = canvas.getContext('2d');
	var colors = [
		["#F87BFD", "#4C76FE"],
		// ["#97b91f", "#f79825"],
		// ["#e70b83", "#c1b900"],
		// ["#3d95ce", "#e2e01f"]
	];
	var gradient = ctx.createLinearGradient(0,5, 0,350);
	gradient.addColorStop(0, '#F87BFD');
	gradient.addColorStop(.34, '#4C76FE');
	gradient.addColorStop(.45, '#02FFE8');
	gradient.addColorStop(.52, '#4DB8FF');
	gradient.addColorStop(.60, '#F0F8BD');
	gradient.addColorStop(.70, '#D0C7F6');
	gradient.addColorStop(1, '#4EA2FC');

	function Vector2(_x, _y) {
		this.x = _x, this.y = _y;
		this.Length = function() {
			return Math.sqrt(this.SqrLength());
		}
		this.SqrLength = function() {
			return this.x * this.x + this.y * this.y;
		}
		this.Equals = function(_vec0, _vec1) {
			return _vec0.x == _vec1.x && _vec0.y == _vec1.y;
		}
		this.Add = function(_vec) {
			this.x += _vec.x;
			this.y += _vec.y;
		}
		this.Sub = function(_vec) {
			this.x -= _vec.x;
			this.y -= _vec.y;
		}
		this.Div = function(_f) {
			this.x /= _f;
			this.y /= _f;
		}
		this.Mul = function(_f) {
			this.x *= _f;
			this.y *= _f;
		}
		this.Normalize = function() {
			var sqrLen = this.SqrLength();
			if (sqrLen != 0) {
				var factor = 1.0 / Math.sqrt(sqrLen);
				this.x *= factor;
				this.y *= factor;
			}
		}
		this.Normalized = function() {
			var sqrLen = this.SqrLength();
			if (sqrLen != 0) {
				var factor = 1.0 / Math.sqrt(sqrLen);
				return new Vector2(this.x * factor, this.y * factor);
			}
			return new Vector2(0, 0);
		}
	}
	Vector2.Lerp = function(_vec0, _vec1, _t) {
		return new Vector2((_vec1.x - _vec0.x) * _t + _vec0.x, (_vec1.y - _vec0.y) * _t + _vec0.y);
	}
	Vector2.Distance = function(_vec0, _vec1) {
		return Math.sqrt(Vector2.SqrDistance(_vec0, _vec1));
	}
	Vector2.SqrDistance = function(_vec0, _vec1) {
		var x = _vec0.x - _vec1.x;
		var y = _vec0.y - _vec1.y;
		return (x * x + y * y + z * z);
	}
	Vector2.Scale = function(_vec0, _vec1) {
		return new Vector2(_vec0.x * _vec1.x, _vec0.y * _vec1.y);
	}
	Vector2.Min = function(_vec0, _vec1) {
		return new Vector2(Math.min(_vec0.x, _vec1.x), Math.min(_vec0.y, _vec1.y));
	}
	Vector2.Max = function(_vec0, _vec1) {
		return new Vector2(Math.max(_vec0.x, _vec1.x), Math.max(_vec0.y, _vec1.y));
	}
	Vector2.ClampMagnitude = function(_vec0, _len) {
		var vecNorm = _vec0.Normalized;
		return new Vector2(vecNorm.x * _len, vecNorm.y * _len);
	}
	Vector2.Sub = function(_vec0, _vec1) {
		return new Vector2(_vec0.x - _vec1.x, _vec0.y - _vec1.y, _vec0.z - _vec1.z);
	}

	function EulerMass(_x, _y, _mass, _drag) {
		this.position = new Vector2(_x, _y);
		this.mass = _mass;
		this.drag = _drag;
		this.force = new Vector2(0, 0);
		this.velocity = new Vector2(0, 0);
		this.AddForce = function(_f) {
			this.force.Add(_f);
		}
		this.Integrate = function(_dt) {
			var acc = this.CurrentForce(this.position);
			acc.Div(this.mass);
			var posDelta = new Vector2(this.velocity.x, this.velocity.y);
			posDelta.Mul(_dt);
			this.position.Add(posDelta);
			acc.Mul(_dt);
			this.velocity.Add(acc);
			this.force = new Vector2(0, 0);
		}
		this.CurrentForce = function(_pos, _vel) {
			var totalForce = new Vector2(this.force.x, this.force.y);
			var speed = this.velocity.Length();
			var dragVel = new Vector2(this.velocity.x, this.velocity.y);
			dragVel.Mul(this.drag * this.mass * speed);
			totalForce.Sub(dragVel);
			return totalForce;
		}
	}

	function ConfettiPaper(_x, _y) {
		this.pos = new Vector2(_x, _y);
		this.rotationSpeed = Math.random() * 600 + 800;
		this.angle = DEG_TO_RAD * Math.random() * 360;
		this.rotation = DEG_TO_RAD * Math.random() * 360;
		this.cosA = 1.0;
		this.size = 5.0;
		this.oscillationSpeed = Math.random() * 1.5 + 0.5;
		this.xSpeed = 40.0;
		this.ySpeed = Math.random() * 60 + 50.0;
		this.corners = new Array();
		this.time = Math.random();
		var ci = Math.round(Math.random() * (colors.length - 1));
		this.frontColor = gradient;
		this.backColor = gradient;
		// this.frontColor = colors[ci][0];
		// this.backColor = colors[ci][1];
		for (var i = 0; i < 4; i++) {
			var dx = Math.cos(this.angle + DEG_TO_RAD * (i * 90 + 45));
			var dy = Math.sin(this.angle + DEG_TO_RAD * (i * 90 + 45));
			this.corners[i] = new Vector2(dx, dy);
		}
		this.Update = function(_dt) {
			this.time += _dt;
			this.rotation += this.rotationSpeed * _dt;
			this.cosA = Math.cos(DEG_TO_RAD * this.rotation);
			this.pos.x += Math.cos(this.time * this.oscillationSpeed) * this.xSpeed * _dt
			this.pos.y += this.ySpeed * _dt;
			if (this.pos.y > ConfettiPaper.bounds.y) {
				this.pos.x = Math.random() * ConfettiPaper.bounds.x;
				this.pos.y = 0;
			}
		}
		this.Draw = function(_g) {
			if (this.cosA > 0) {
				_g.fillStyle = this.frontColor;
			} else {
				_g.fillStyle = this.backColor;
			}
			_g.beginPath();
			_g.moveTo(this.pos.x + this.corners[0].x * this.size, this.pos.y + this.corners[0].y * this.size * this.cosA);
			for (var i = 1; i < 4; i++) {
				_g.lineTo(this.pos.x + this.corners[i].x * this.size, this.pos.y + this.corners[i].y * this.size * this.cosA);
			}
			_g.closePath();
			_g.fill();
		}
	}
	ConfettiPaper.bounds = new Vector2(0, 0);

	function ConfettiRibbon(_x, _y, _count, _dist, _thickness, _angle, _mass, _drag) {
		this.particleDist = _dist;
		this.particleCount = _count;
		this.particleMass = _mass;
		this.particleDrag = _drag;
		this.particles = new Array();
		var ci = Math.round(Math.random() * (colors.length - 1));
		this.frontColor = gradient;
		this.backColor = gradient;
		// this.frontColor = colors[ci][0];
		// this.backColor = colors[ci][1];
		this.xOff = Math.cos(DEG_TO_RAD * _angle) * _thickness;
		this.yOff = Math.sin(DEG_TO_RAD * _angle) * _thickness;
		this.position = new Vector2(_x, _y);
		this.prevPosition = new Vector2(_x, _y);
		this.velocityInherit = Math.random() * 2 + 4;
		this.time = Math.random() * 100;
		this.oscillationSpeed = Math.random() * 2 + 2;
		this.oscillationDistance = Math.random() * 40 + 40;
		this.ySpeed = Math.random() * 40 + 80;
		for (var i = 0; i < this.particleCount; i++) {
			this.particles[i] = new EulerMass(_x, _y - i * this.particleDist, this.particleMass, this.particleDrag);
		}
		this.Update = function(_dt) {
			var i = 0;
			this.time += _dt * this.oscillationSpeed;
			this.position.y += this.ySpeed * _dt;
			this.position.x += Math.cos(this.time) * this.oscillationDistance * _dt;
			this.particles[0].position = this.position;
			var dX = this.prevPosition.x - this.position.x;
			var dY = this.prevPosition.y - this.position.y;
			var delta = Math.sqrt(dX * dX + dY * dY);
			this.prevPosition = new Vector2(this.position.x, this.position.y);
			for (i = 1; i < this.particleCount; i++) {
				var dirP = Vector2.Sub(this.particles[i - 1].position, this.particles[i].position);
				dirP.Normalize();
				dirP.Mul((delta / _dt) * this.velocityInherit);
				this.particles[i].AddForce(dirP);
			}
			for (i = 1; i < this.particleCount; i++) {
				this.particles[i].Integrate(_dt);
			}
			for (i = 1; i < this.particleCount; i++) {
				var rp2 = new Vector2(this.particles[i].position.x, this.particles[i].position.y);
				rp2.Sub(this.particles[i - 1].position);
				rp2.Normalize();
				rp2.Mul(this.particleDist);
				rp2.Add(this.particles[i - 1].position);
				this.particles[i].position = rp2;
			}
			if (this.position.y > ConfettiRibbon.bounds.y + this.particleDist * this.particleCount) {
				this.Reset();
			}
		}
		this.Reset = function() {
			this.position.y = -Math.random() * ConfettiRibbon.bounds.y;
			this.position.x = Math.random() * ConfettiRibbon.bounds.x;
			this.prevPosition = new Vector2(this.position.x, this.position.y);
			this.velocityInherit = Math.random() * 2 + 4;
			this.time = Math.random() * 100;
			this.oscillationSpeed = Math.random() * 2.0 + 1.5;
			this.oscillationDistance = Math.random() * 40 + 40;
			this.ySpeed = Math.random() * 40 + 80;
			var ci = Math.round(Math.random() * (colors.length - 1));
			this.frontColor = gradient;
			this.backColor = gradient;
			// this.frontColor = colors[ci][0];
			// this.backColor = colors[ci][1];
			this.particles = new Array();
			for (var i = 0; i < this.particleCount; i++) {
				this.particles[i] = new EulerMass(this.position.x, this.position.y - i * this.particleDist, this.particleMass, this.particleDrag);
			}
		}
		this.Draw = function(_g) {
			for (var i = 0; i < this.particleCount - 1; i++) {
				var p0 = new Vector2(this.particles[i].position.x + this.xOff, this.particles[i].position.y + this.yOff);
				var p1 = new Vector2(this.particles[i + 1].position.x + this.xOff, this.particles[i + 1].position.y + this.yOff);
				if (this.Side(this.particles[i].position.x, this.particles[i].position.y, this.particles[i + 1].position.x, this.particles[i + 1].position.y, p1.x, p1.y) < 0) {
					_g.fillStyle = this.frontColor;
					_g.strokeStyle = this.frontColor;
				} else {
					_g.fillStyle = this.backColor;
					_g.strokeStyle = this.backColor;
				}
				if (i == 0) {
					_g.beginPath();
					_g.moveTo(this.particles[i].position.x, this.particles[i].position.y);
					_g.lineTo(this.particles[i + 1].position.x, this.particles[i + 1].position.y);
					_g.lineTo((this.particles[i + 1].position.x + p1.x) * 0.5, (this.particles[i + 1].position.y + p1.y) * 0.5);
					_g.closePath();
					_g.stroke();
					_g.fill();
					_g.beginPath();
					_g.moveTo(p1.x, p1.y);
					_g.lineTo(p0.x, p0.y);
					_g.lineTo((this.particles[i + 1].position.x + p1.x) * 0.5, (this.particles[i + 1].position.y + p1.y) * 0.5);
					_g.closePath();
					_g.stroke();
					_g.fill();
				} else if (i == this.particleCount - 2) {
					_g.beginPath();
					_g.moveTo(this.particles[i].position.x, this.particles[i].position.y);
					_g.lineTo(this.particles[i + 1].position.x, this.particles[i + 1].position.y);
					_g.lineTo((this.particles[i].position.x + p0.x) * 0.5, (this.particles[i].position.y + p0.y) * 0.5);
					_g.closePath();
					_g.stroke();
					_g.fill();
					_g.beginPath();
					_g.moveTo(p1.x, p1.y);
					_g.lineTo(p0.x, p0.y);
					_g.lineTo((this.particles[i].position.x + p0.x) * 0.5, (this.particles[i].position.y + p0.y) * 0.5);
					_g.closePath();
					_g.stroke();
					_g.fill();
				} else {
					_g.beginPath();
					_g.moveTo(this.particles[i].position.x, this.particles[i].position.y);
					_g.lineTo(this.particles[i + 1].position.x, this.particles[i + 1].position.y);
					_g.lineTo(p1.x, p1.y);
					_g.lineTo(p0.x, p0.y);
					_g.closePath();
					_g.stroke();
					_g.fill();
				}
			}
		}
		this.Side = function(x1, y1, x2, y2, x3, y3) {
			return ((x1 - x2) * (y3 - y2) - (y1 - y2) * (x3 - x2));
		}
	}
	ConfettiRibbon.bounds = new Vector2(0, 0);
	confetti = {};
	confetti.Context = function(parent) {
		var i = 0;
		var canvasParent = document.getElementById(parent);
		var canvas = document.createElement('canvas');
		canvas.width = canvasParent.offsetWidth;
		canvas.height = canvasParent.offsetHeight;
		canvasParent.appendChild(canvas);
		var context = canvas.getContext('2d');
		var interval = null;
		var confettiRibbonCount = 7;
		var rpCount = 30;
		var rpDist = 8.0;
		var rpThick = 8.0;
		var confettiRibbons = new Array();
		ConfettiRibbon.bounds = new Vector2(canvas.width, canvas.height);
		for (i = 0; i < confettiRibbonCount; i++) {
			confettiRibbons[i] = new ConfettiRibbon(Math.random() * canvas.width, -Math.random() * canvas.height, rpCount, rpDist, rpThick, 45, 1, 0.05);
		}
		var confettiPaperCount = 25;
		var confettiPapers = new Array();
		ConfettiPaper.bounds = new Vector2(canvas.width, canvas.height);
		for (i = 0; i < confettiPaperCount; i++) {
			confettiPapers[i] = new ConfettiPaper(Math.random() * canvas.width, Math.random() * canvas.height);
		}
		this.resize = function() {
			canvas.width = canvasParent.offsetWidth;
			canvas.height = canvasParent.offsetHeight;
			ConfettiPaper.bounds = new Vector2(canvas.width, canvas.height);
			ConfettiRibbon.bounds = new Vector2(canvas.width, canvas.height);
		}
		this.start = function() {
			this.stop()
			var context = this
			this.interval = setInterval(function() {
				confetti.update();
			}, 1000.0 / frameRate)
		}
		this.stop = function() {
			clearInterval(this.interval);
		}
		this.update = function() {
			var i = 0;
			context.clearRect(0, 0, canvas.width, canvas.height);
			for (i = 0; i < confettiPaperCount; i++) {
				confettiPapers[i].Update(dt);
				confettiPapers[i].Draw(context);
			}
			for (i = 0; i < confettiRibbonCount; i++) {
				confettiRibbons[i].Update(dt);
				confettiRibbons[i].Draw(context);
			}
		}
	}
	var confetti = new confetti.Context('confetti');
	confetti.start();
	$(window).resize(function() {
		confetti.resize();
	});
};


// Confetti type 2
/**
 * Minified by jsDelivr using Terser v5.3.5.
 * Original file: /npm/canvas-confetti@1.4.0/dist/confetti.browser.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
 ! function(t, e) {
	! function t(e, n, a, i) {
		var o = !!(e.Worker && e.Blob && e.Promise && e.OffscreenCanvas && e.OffscreenCanvasRenderingContext2D && e.HTMLCanvasElement && e.HTMLCanvasElement.prototype.transferControlToOffscreen && e.URL && e.URL.createObjectURL);

		function r() {}

		function l(t) {
			var a = n.exports.Promise,
				i = void 0 !== a ? a : e.Promise;
			return "function" == typeof i ? new i(t) : (t(r, r), null)
		}
		var c, s, u, d, f, h, g, m, b = (u = Math.floor(1e3 / 60), d = {}, f = 0, "function" == typeof requestAnimationFrame && "function" == typeof cancelAnimationFrame ? (c = function(t) {
				var e = Math.random();
				return d[e] = requestAnimationFrame((function n(a) {
					f === a || f + u - 1 < a ? (f = a, delete d[e], t()) : d[e] = requestAnimationFrame(n)
				})), e
			}, s = function(t) {
				d[t] && cancelAnimationFrame(d[t])
			}) : (c = function(t) {
				return setTimeout(t, u)
			}, s = function(t) {
				return clearTimeout(t)
			}), {
				frame: c,
				cancel: s
			}),
			v = (m = {}, function() {
				if (h) return h;
				if (!a && o) {
					var e = ["var CONFETTI, SIZE = {}, module = {};", "(" + t.toString() + ")(this, module, true, SIZE);", "onmessage = function(msg) {", "  if (msg.data.options) {", "    CONFETTI(msg.data.options).then(function () {", "      if (msg.data.callback) {", "        postMessage({ callback: msg.data.callback });", "      }", "    });", "  } else if (msg.data.reset) {", "    CONFETTI.reset();", "  } else if (msg.data.resize) {", "    SIZE.width = msg.data.resize.width;", "    SIZE.height = msg.data.resize.height;", "  } else if (msg.data.canvas) {", "    SIZE.width = msg.data.canvas.width;", "    SIZE.height = msg.data.canvas.height;", "    CONFETTI = module.exports.create(msg.data.canvas);", "  }", "}"].join("\n");
					try {
						h = new Worker(URL.createObjectURL(new Blob([e])))
					} catch (t) {
						return void 0 !== typeof console && "function" == typeof console.warn && console.warn("🎊 Could not load worker", t), null
					}! function(t) {
						function e(e, n) {
							t.postMessage({
								options: e || {},
								callback: n
							})
						}
						t.init = function(e) {
							var n = e.transferControlToOffscreen();
							t.postMessage({
								canvas: n
							}, [n])
						}, t.fire = function(n, a, i) {
							if (g) return e(n, null), g;
							var o = Math.random().toString(36).slice(2);
							return g = l((function(a) {
								function r(e) {
									e.data.callback === o && (delete m[o], t.removeEventListener("message", r), g = null, i(), a())
								}
								t.addEventListener("message", r), e(n, o), m[o] = r.bind(null, {
									data: {
										callback: o
									}
								})
							}))
						}, t.reset = function() {
							for (var e in t.postMessage({
									reset: !0
								}), m) m[e](), delete m[e]
						}
					}(h)
				}
				return h
			}),
			y = {
				particleCount: 50,
				angle: 90,
				spread: 45,
				startVelocity: 45,
				decay: .9,
				gravity: 1,
				drift: 0,
				ticks: 200,
				x: .5,
				y: .5,
				shapes: ["circle"],
				zIndex: 100,
				colors: ["#26ccff", "#a25afd", "#ff5e7e", "#88ff5a", "#fcff42", "#ffa62d", "#ff36ff"],
				disableForReducedMotion: !1,
				scalar: 1
			};

		function p(t, e, n) {
			return function(t, e) {
				return e ? e(t) : t
			}(t && null != t[e] ? t[e] : y[e], n)
		}

		function M(t) {
			return t < 0 ? 0 : Math.floor(t)
		}

		function w(t) {
			return parseInt(t, 16)
		}

		function x(t) {
			return t.map(C)
		}

		function C(t) {
			var e = String(t).replace(/[^0-9a-f]/gi, "");
			return e.length < 6 && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), {
				r: w(e.substring(0, 2)),
				g: w(e.substring(2, 4)),
				b: w(e.substring(4, 6))
			}
		}

		function k(t) {
			t.width = document.documentElement.clientWidth, t.height = document.documentElement.clientHeight
		}

		function I(t) {
			var e = t.getBoundingClientRect();
			t.width = e.width, t.height = e.height
		}

		function T(t, e, n, o, r) {
			var c, s, u = e.slice(),
				d = t.getContext("2d"),
				f = l((function(e) {
						function l() {
							c = s = null, d.clearRect(0, 0, o.width, o.height), r(), e()
						}
						c = b.frame((function e() {
								!a || o.width === i.width && o.height === i.height || (o.width = t.width = i.width, o.height = t.height = i.height), o.width || o.height || (n(t), o.width = t.width, o.height = t.height), d.clearRect(0, 0, o.width, o.height), (u = u.filter((function(t) {
										return function(t, e) {
											e.x += Math.cos(e.angle2D) * e.velocity + e.drift, e.y += Math.sin(e.angle2D) * e.velocity + e.gravity, e.wobble += .1, e.velocity *= e.decay, e.tiltAngle += .1, e.tiltSin = Math.sin(e.tiltAngle), e.tiltCos = Math.cos(e.tiltAngle), e.random = Math.random() + 5, e.wobbleX = e.x + 10 * e.scalar * Math.cos(e.wobble), e.wobbleY = e.y + 10 * e.scalar * Math.sin(e.wobble);
											var n = e.tick++/e.totalTicks,a=e.x+e.random*e.tiltCos,i=e.y+e.random*e.tiltSin,o=e.wobbleX+e.random*e.tiltCos,r=e.wobbleY+e.random*e.tiltSin;return t.fillStyle="rgba("+e.color.r+", "+e.color.g+", "+e.color.b+", "+(1-n)+")",t.beginPath(),"circle"===e.shape?t.ellipse?t.ellipse(e.x,e.y,Math.abs(o-a)*e.ovalScalar,Math.abs(r-i)*e.ovalScalar,Math.PI/
											10 * e.wobble, 0, 2 * Math.PI): function(t, e, n, a, i, o, r, l, c) {
											t.save(), t.translate(e, n), t.rotate(o), t.scale(a, i), t.arc(0, 0, 1, r, l, c), t.restore()
										}(t, e.x, e.y, Math.abs(o - a) * e.ovalScalar, Math.abs(r - i) * e.ovalScalar, Math.PI / 10 * e.wobble, 0, 2 * Math.PI): (t.moveTo(Math.floor(e.x), Math.floor(e.y)), t.lineTo(Math.floor(e.wobbleX), Math.floor(i)), t.lineTo(Math.floor(o), Math.floor(r)), t.lineTo(Math.floor(a), Math.floor(e.wobbleY))), t.closePath(), t.fill(), e.tick < e.totalTicks
									}(d, t)
								}))).length ? c = b.frame(e) : l()
						})), s = l
				}));
		return {
			addFettis: function(t) {
				return u = u.concat(t), f
			},
			canvas: t,
			promise: f,
			reset: function() {
				c && b.cancel(c), s && s()
			}
		}
	}

	function E(t, n) {
		var a, i = !t,
			r = !!p(n || {}, "resize"),
			c = p(n, "disableForReducedMotion", Boolean),
			s = o && !!p(n || {}, "useWorker") ? v() : null,
			u = i ? k : I,
			d = !(!t || !s) && !!t.__confetti_initialized,
			f = "function" == typeof matchMedia && matchMedia("(prefers-reduced-motion)").matches;

		function h(e, n, i) {
			for (var o, r, l, c, s, d = p(e, "particleCount", M), f = p(e, "angle", Number), h = p(e, "spread", Number), g = p(e, "startVelocity", Number), m = p(e, "decay", Number), b = p(e, "gravity", Number), v = p(e, "drift", Number), y = p(e, "colors", x), w = p(e, "ticks", Number), C = p(e, "shapes"), k = p(e, "scalar"), I = function(t) {
					var e = p(t, "origin", Object);
					return e.x = p(e, "x", Number), e.y = p(e, "y", Number), e
				}(e), E = d, S = [], F = t.width * I.x, N = t.height * I.y; E--;) S.push((o = {
				x: F,
				y: N,
				angle: f,
				spread: h,
				startVelocity: g,
				color: y[E % y.length],
				shape: C[(c = 0, s = C.length, Math.floor(Math.random() * (s - c)) + c)],
				ticks: w,
				decay: m,
				gravity: b,
				drift: v,
				scalar: k
			}, r = void 0, l = void 0, r = o.angle * (Math.PI / 180), l = o.spread * (Math.PI / 180), {
				x: o.x,
				y: o.y,
				wobble: 10 * Math.random(),
				velocity: .5 * o.startVelocity + Math.random() * o.startVelocity,
				angle2D: -r + (.5 * l - Math.random() * l),
				tiltAngle: Math.random() * Math.PI,
				color: o.color,
				shape: o.shape,
				tick: 0,
				totalTicks: o.ticks,
				decay: o.decay,
				drift: o.drift,
				random: Math.random() + 5,
				tiltSin: 0,
				tiltCos: 0,
				wobbleX: 0,
				wobbleY: 0,
				gravity: 3 * o.gravity,
				ovalScalar: .6,
				scalar: o.scalar
			}));
			return a ? a.addFettis(S) : (a = T(t, S, u, n, i)).promise
		}

		function g(n) {
			var o = c || p(n, "disableForReducedMotion", Boolean),
				g = p(n, "zIndex", Number);
			if (o && f) return l((function(t) {
				t()
			}));
			i && a ? t = a.canvas : i && !t && (t = function(t) {
				var e = document.createElement("canvas");
				return e.style.position = "fixed", e.style.top = "0px", e.style.left = "0px", e.style.pointerEvents = "none", e.style.zIndex = t, e
			}(g), document.body.appendChild(t)), r && !d && u(t);
			var m = {
				width: t.width,
				height: t.height
			};

			function b() {
				if (s) {
					var e = {
						getBoundingClientRect: function() {
							if (!i) return t.getBoundingClientRect()
						}
					};
					return u(e), void s.postMessage({
						resize: {
							width: e.width,
							height: e.height
						}
					})
				}
				m.width = m.height = null
			}

			function v() {
				a = null, r && e.removeEventListener("resize", b), i && t && (document.body.removeChild(t), t = null, d = !1)
			}
			return s && !d && s.init(t), d = !0, s && (t.__confetti_initialized = !0), r && e.addEventListener("resize", b, !1), s ? s.fire(n, m, v) : h(n, m, v)
		}
		return g.reset = function() {
			s && s.reset(), a && a.reset()
		}, g
	}
	n.exports = E(null, {
		useWorker: !0,
		resize: !0
	}), n.exports.create = E
}(function() {
	return void 0 !== t ? t : "undefined" != typeof self ? self : this || {}
}(), e, !1), t.confetti = e.exports
}(window, {});