diff --git a/backend/pages/other/altcha.js b/backend/pages/other/altcha.js new file mode 100644 index 00000000..e6dd41cf --- /dev/null +++ b/backend/pages/other/altcha.js @@ -0,0 +1,48 @@ +const { createChallenge, verifySolution, sha } = require("altcha/lib"); + +var hmacKey = null; + +function getHmacKey() { + if(!hmacKey) { + hmacKey = require("crypto").randomBytes(32).toString("hex"); + } + return hmacKey; +} + +module.exports.GET = async function(req, write, server, ctx) { + var challenge = await createChallenge({ + algorithm: "SHA-256", + deriveKey: sha.deriveKey, + hmacSignatureSecret: getHmacKey(), + cost: 1000 + }); + write(JSON.stringify(challenge), 200, { + mime: "application/json" + }); +} + +module.exports.POST = async function(req, write, server, ctx) { + var post_data = ctx.post_data; + var payload = post_data.altcha; + if(!payload) { + return write(JSON.stringify({ verified: false }), 200, { + mime: "application/json" + }); + } + try { + var data = JSON.parse(Buffer.from(payload, "base64").toString("utf8")); + var result = await verifySolution({ + challenge: data.challenge, + solution: data.solution, + deriveKey: sha.deriveKey, + hmacSignatureSecret: getHmacKey() + }); + write(JSON.stringify({ verified: result.verified }), 200, { + mime: "application/json" + }); + } catch(e) { + write(JSON.stringify({ verified: false }), 200, { + mime: "application/json" + }); + } +} diff --git a/frontend/static/css/yourworld.css b/frontend/static/css/yourworld.css index bea41f1e..1bfd329d 100644 --- a/frontend/static/css/yourworld.css +++ b/frontend/static/css/yourworld.css @@ -498,6 +498,49 @@ a:visited { align-items: center; z-index: 1000; } +#captcha_overlay { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + cursor: default; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + z-index: 2000; +} +.captcha_frame { + background-color: #C3C3FF; + display: flex; + flex-direction: column; + position: absolute; + min-width: 280px; +} +.captcha_client { + background-color: #E5E5FF; + flex: 1; + margin: 6px; + padding: 18px 24px; + position: relative; + text-align: center; +} +.captcha_title { + font-family: Verdana; + font-size: 14px; + font-weight: bold; + color: #000; + margin-bottom: 14px; + text-align: center; +} +#captcha_error { + font-family: Verdana; + font-size: 12px; + color: red; + margin-top: 10px; + text-align: center; +} .modal_close { position: absolute; right: 0px; diff --git a/frontend/static/lib/altcha-wrapped.min.js b/frontend/static/lib/altcha-wrapped.min.js new file mode 100644 index 00000000..86c20a17 --- /dev/null +++ b/frontend/static/lib/altcha-wrapped.min.js @@ -0,0 +1,4315 @@ +// wrapped with beautifier.io - Alan Myers +(function() { + const e = !1; + var t = Array.isArray, + n = Array.prototype.indexOf, + r = Array.prototype.includes, + a = Array.from, + o = Object.keys, + i = Object.defineProperty, + l = Object.getOwnPropertyDescriptor, + s = Object.getOwnPropertyDescriptors, + c = Object.prototype, + u = Array.prototype, + f = Object.getPrototypeOf, + d = Object.isExtensible; + const h = () => {}; + + function p() { + var e, t; + return { + promise: new Promise((n, r) => { + e = n, t = r + }), + resolve: e, + reject: t + } + } + const v = 1 << 24, + g = 16, + m = 32, + b = 64, + y = 512, + w = 1024, + x = 2048, + k = 4096, + _ = 8192, + $ = 16384, + S = 32768, + C = 1 << 25, + E = 65536, + T = 1 << 17, + A = 1 << 19, + I = 65536, + P = 1 << 21, + O = 1 << 23, + R = Symbol("$state"), + L = Symbol("legacy props"), + M = Symbol(""), + D = Symbol("attributes"), + U = Symbol("class"), + V = Symbol("style"), + N = Symbol("text"), + z = Symbol("form reset"), + j = new class extends Error { + name = "StaleReactionError"; + message = "The reaction that called `getAbortSignal()` was re-run or destroyed" + }, + B = !!globalThis.document?.contentType && globalThis.document.contentType.includes("xml"); + + function F(e) { + return e === this.v + } + + function H(e, t) { + return e != e ? t == t : e !== t || null !== e && "object" == typeof e || "function" == typeof e + } + + function K(e) { + return !H(e, this.v) + } + const q = {}, + Y = Symbol("uninitialized"), + G = "http://www.w3.org/1999/xhtml"; + let W = null; + + function J(e) { + W = e + } + + function Z(e, t = !1, n) { + W = { + p: W, + i: !1, + c: null, + e: null, + s: e, + x: null, + r: jt, + l: null + } + } + + function X(e) { + var t = W, + n = t.e; + if (null !== n) + for (var r of (t.e = null, n)) gn(r); + return void 0 !== e && (t.x = e), t.i = !0, W = t.p, e ?? {} + } + let Q = []; + + function ee() { + var e = Q; + Q = [], + function(e) { + for (var t = 0; t < e.length; t++) e[t]() + }(e) + } + + function te(e) { + if (0 === Q.length && !We) { + var t = Q; + queueMicrotask(() => { + t === Q && ee() + }) + } + Q.push(e) + } + + function ne() { + for (; Q.length > 0;) ee() + } + + function re(e) { + console.warn("https://svelte.dev/e/hydration_mismatch") + } + let ae, oe = !1; + + function ie(e) { + oe = e + } + + function le(e) { + if (null === e) throw re(), q; + return ae = e + } + + function se() { + return le($e(ae)) + } + + function ce(e) { + if (oe) { + if (null !== $e(ae)) throw re(), q; + ae = e + } + } + + function ue(e = 1) { + if (oe) { + for (var t = e, n = ae; t--;) n = $e(n); + ae = n + } + } + + function fe(e = !0) { + for (var t = 0, n = ae;;) { + if (8 === n.nodeType) { + var r = n.data; + if ("]" === r) { + if (0 === t) return n; + t -= 1 + } else("[" === r || "[!" === r || "[" === r[0] && !isNaN(Number(r.slice(1)))) && (t += 1) + } + var a = $e(n); + e && n.remove(), n = a + } + } + + function de(e) { + if (!e || 8 !== e.nodeType) throw re(), q; + return e.data + } + + function he(e) { + if ("object" != typeof e || null === e || R in e) return e; + const n = f(e); + if (n !== c && n !== u) return e; + var r = new Map, + a = t(e), + o = St(0), + i = Jt, + s = e => { + if (Jt === i) return e(); + var t = Vt, + n = Jt; + zt(null), Zt(i); + var r = e(); + return zt(t), Zt(n), r + }; + return a && r.set("length", St(e.length)), new Proxy(e, { + defineProperty(e, t, n) { + "value" in n && !1 !== n.configurable && !1 !== n.enumerable && !1 !== n.writable || function() { + throw new Error("https://svelte.dev/e/state_descriptors_fixed") + }(); + var a = r.get(t); + return void 0 === a ? s(() => { + var e = St(n.value); + return r.set(t, e), e + }) : Et(a, n.value, !0), !0 + }, + deleteProperty(e, t) { + var n = r.get(t); + if (void 0 === n) { + if (t in e) { + const e = s(() => St(Y)); + r.set(t, e), At(o) + } + } else Et(n, Y), At(o); + return !0 + }, + get(t, n, a) { + if (n === R) return e; + var o = r.get(n), + i = n in t; + if (void 0 !== o || i && !l(t, n)?.writable || (o = s(() => St(he(i ? t[n] : Y))), r.set(n, o)), void 0 !== o) { + var c = ln(o); + return c === Y ? void 0 : c + } + return Reflect.get(t, n, a) + }, + getOwnPropertyDescriptor(e, t) { + var n = Reflect.getOwnPropertyDescriptor(e, t); + if (n && "value" in n) { + var a = r.get(t); + a && (n.value = ln(a)) + } else if (void 0 === n) { + var o = r.get(t), + i = o?.v; + if (void 0 !== o && i !== Y) return { + enumerable: !0, + configurable: !0, + value: i, + writable: !0 + } + } + return n + }, + has(e, t) { + if (t === R) return !0; + var n = r.get(t), + a = void 0 !== n && n.v !== Y || Reflect.has(e, t); + if ((void 0 !== n || null !== jt && (!a || l(e, t)?.writable)) && (void 0 === n && (n = s(() => St(a ? he(e[t]) : Y)), r.set(t, n)), ln(n) === Y)) return !1; + return a + }, + set(e, t, n, i) { + var c = r.get(t), + u = t in e; + if (a && "length" === t) + for (var f = n; f < c.v; f += 1) { + var d = r.get(f + ""); + void 0 !== d ? Et(d, Y) : f in e && (d = s(() => St(Y)), r.set(f + "", d)) + } + void 0 === c ? u && !l(e, t)?.writable || (Et(c = s(() => St(void 0)), he(n)), r.set(t, c)) : (u = c.v !== Y, Et(c, s(() => he(n)))); + var h = Reflect.getOwnPropertyDescriptor(e, t); + if (h?.set && h.set.call(i, n), !u) { + if (a && "string" == typeof t) { + var p = r.get("length"), + v = Number(t); + Number.isInteger(v) && v >= p.v && Et(p, v + 1) + } + At(o) + } + return !0 + }, + ownKeys(e) { + ln(o); + var t = Reflect.ownKeys(e).filter(e => { + var t = r.get(e); + return void 0 === t || t.v !== Y + }); + for (var [n, a] of r) a.v === Y || n in e || t.push(n); + return t + }, + setPrototypeOf() { + ! function() { + throw new Error("https://svelte.dev/e/state_prototype_fixed") + }() + } + }) + } + + function pe(e) { + try { + if (null !== e && "object" == typeof e && R in e) return e[R] + } catch {} + return e + } + + function ve(e, t) { + return Object.is(pe(e), pe(t)) + } + var ge, me, be, ye, we; + + function xe() { + if (void 0 === ge) { + ge = window, me = document, be = /Firefox/.test(navigator.userAgent); + var e = Element.prototype, + t = Node.prototype, + n = Text.prototype; + ye = l(t, "firstChild").get, we = l(t, "nextSibling").get, d(e) && (e[U] = void 0, e[D] = null, e[V] = void 0, e.__e = void 0), d(n) && (n[N] = void 0) + } + } + + function ke(e = "") { + return document.createTextNode(e) + } + + function _e(e) { + return ye.call(e) + } + + function $e(e) { + return we.call(e) + } + + function Se(e, t) { + if (!oe) return _e(e); + var n = _e(ae); + if (null === n) n = ae.appendChild(ke()); + else if (t && 3 !== n.nodeType) { + var r = ke(); + return n?.before(r), le(r), r + } + return t && Ae(n), le(n), n + } + + function Ce(e, t = !1) { + if (!oe) { + var n = _e(e); + return n instanceof Comment && "" === n.data ? $e(n) : n + } + if (t) { + if (3 !== ae?.nodeType) { + var r = ke(); + return ae?.before(r), le(r), r + } + Ae(ae) + } + return ae + } + + function Ee(e, t = 1, n = !1) { + let r = oe ? ae : e; + for (var a; t--;) a = r, r = $e(r); + if (!oe) return r; + if (n) { + if (3 !== r?.nodeType) { + var o = ke(); + return null === r ? a?.after(o) : r.before(o), le(o), o + } + Ae(r) + } + return le(r), r + } + + function Te(e, t, n) { + let r; + return document.createElementNS(t ?? G, e, r) + } + + function Ae(e) { + if (e.nodeValue.length < 65536) return; + let t = e.nextSibling; + for (; null !== t && 3 === t.nodeType;) t.remove(), e.nodeValue += t.nodeValue, t = e.nextSibling + } + + function Ie(e) { + var t = jt; + if (null === t) return Vt.f |= O, e; + if (0 === (t.f & S) && !(4 & t.f)) throw e; + Pe(e, t) + } + + function Pe(e, t) { + for (; null !== t;) { + if (128 & t.f) { + if (0 === (t.f & S)) throw e; + try { + return void t.b.error(e) + } catch (t) { + e = t + } + } + t = t.parent + } + throw e + } + const Oe = -7169; + + function Re(e, t) { + e.f = e.f & Oe | t + } + + function Le(e) { + 0 !== (e.f & y) || null === e.deps ? Re(e, w) : Re(e, k) + } + + function Me(e) { + if (null !== e) + for (const t of e) 2 & t.f && 0 !== (t.f & I) && (t.f ^= I, Me(t.deps)) + } + + function De(e, t, n) { + 0 !== (e.f & x) ? t.add(e) : 0 !== (e.f & k) && n.add(e), Me(e.deps), Re(e, w) + } + + function Ue(e, t, n) { + if (null == e) return t(void 0), h; + const r = un(() => e.subscribe(t, n)); + return r.unsubscribe ? () => r.unsubscribe() : r + } + const Ve = []; + + function Ne(e, t = h) { + let n = null; + const r = new Set; + + function a(t) { + if (H(e, t) && (e = t, n)) { + const t = !Ve.length; + for (const t of r) t[1](), Ve.push(t, e); + if (t) { + for (let e = 0; e < Ve.length; e += 2) Ve[e][0](Ve[e + 1]); + Ve.length = 0 + } + } + } + + function o(t) { + a(t(e)) + } + return { + set: a, + update: o, + subscribe: function(i, l = h) { + const s = [i, l]; + return r.add(s), 1 === r.size && (n = t(a, o) || h), i(e), () => { + r.delete(s), 0 === r.size && n && (n(), n = null) + } + } + } + } + + function ze(e) { + let t; + return Ue(e, e => t = e)(), t + } + let je = Symbol("unmounted"); + + function Be(e, t, n) { + const r = n[t] ??= { + store: null, + source: Ct(void 0), + unsubscribe: h + }; + if (r.store !== e && !(je in n)) + if (r.unsubscribe(), r.store = e ?? null, null == e) r.source.v = void 0, r.unsubscribe = h; + else { + var a = !0; + r.unsubscribe = Ue(e, e => { + a ? r.source.v = e : Et(r.source, e) + }), a = !1 + } return e && je in n ? ze(e) : ln(r.source) + } + let Fe = null, + He = null, + Ke = null, + qe = null, + Ye = null, + Ge = null, + We = !1, + Je = !1, + Ze = null, + Xe = null; + var Qe = 0; + let et = 1; + class tt { + id = et++; + #e = !1; + linked = !0; + #t = null; + #n = null; + async_deriveds = new Map; + current = new Map; + previous = new Map; + unblocked = new Set; + #r = new Set; + #a = new Set; + #o = new Set; + #i = 0; + #l = new Map; + #s = null; + #c = []; + #u = []; + #f = new Set; + #d = new Set; + #h = new Map; + #p = new Set; + is_fork = !1; + #v = !1; + #g() { + if (this.is_fork) return !0; + for (const n of this.#l.keys()) { + for (var e = n, t = !1; null !== e.parent;) { + if (this.#h.has(e)) { + t = !0; + break + } + e = e.parent + } + if (!t) return !0 + } + return !1 + } + skip_effect(e) { + this.#h.has(e) || this.#h.set(e, { + d: [], + m: [] + }), this.#p.delete(e) + } + unskip_effect(e, t = e => this.schedule(e)) { + var n = this.#h.get(e); + if (n) { + for (var r of (this.#h.delete(e), n.d)) Re(r, x), t(r); + for (r of n.m) Re(r, k), t(r) + } + this.#p.add(e) + } + #m() { + if (this.#e = !0, Qe++ > 1e3 && (this.#b(), function() { + try { + ! function() { + throw new Error("https://svelte.dev/e/effect_update_depth_exceeded") + }() + } catch (e) { + Pe(e, Ge) + } + }()), !this.#g()) { + for (const e of this.#f) this.#d.delete(e), Re(e, x), this.schedule(e); + for (const e of this.#d) Re(e, k), this.schedule(e) + } + const e = this.#c; + this.#c = [], this.apply(); + var t = Ze = [], + n = [], + r = Xe = []; + for (const r of e) try { + this.#y(r, t, n) + } catch (e) { + throw ct(r), e + } + if (Ke = null, r.length > 0) { + var a = tt.ensure(); + for (const e of r) a.schedule(e) + } + if (Ze = null, Xe = null, this.#g()) { + this.#w(n), this.#w(t); + for (const [e, t] of this.#h) st(e, t); + return void(r.length > 0 && Ke.#m()) + } + const o = this.#x(); + if (o) o.#k(this); + else { + this.#f.clear(), this.#d.clear(); + for (const e of this.#r) e(this); + this.#r.clear(), qe = this, at(n), at(t), qe = null, this.#s?.resolve(); + var i = Ke; + if (this.linked && 0 === this.#i && this.#b(), this.#c.length > 0) { + null === i && (i = this, this.#_()); + const e = i; + e.#c.push(...this.#c.filter(t => !e.#c.includes(t))) + } + null !== i && i.#m() + } + } + #y(e, t, n) { + e.f ^= w; + for (var r = e.first; null !== r;) { + var a = r.f, + o = !!(96 & a); + if (!(o && 0 !== (a & w) || 0 !== (a & _) || this.#h.has(r)) && null !== r.fn) { + o ? r.f ^= w : 4 & a ? t.push(r) : Qt(r) && (0 !== (a & g) && this.#d.add(r), an(r)); + var i = r.first; + if (null !== i) { + r = i; + continue + } + } + for (; null !== r;) { + var l = r.next; + if (null !== l) { + r = l; + break + } + r = r.parent + } + } + } + #x() { + for (var e = this.#t; null !== e;) { + if (!e.is_fork) + for (const [t, [, n]] of this.current) + if (e.current.has(t) && !n) return e; + e = e.#t + } + return null + } + #k(e) { + for (const [t, n] of e.current) !this.previous.has(t) && e.previous.has(t) && this.previous.set(t, e.previous.get(t)), this.current.set(t, n); + for (const [t, n] of e.async_deriveds) { + const e = this.async_deriveds.get(t); + e && n.promise.then(e.resolve) + } + const t = e => { + var n = e.reactions; + if (null !== n) + for (const e of n) { + var r = e.f; + if (2 & r) t(e); + else { + var a = e; + 4194320 & r && !this.async_deriveds.has(a) && (this.#d.delete(a), Re(a, x), this.schedule(a)) + } + } + }; + for (const e of this.current.keys()) t(e); + this.oncommit(() => e.discard()), e.#b(), Ke = this, this.#m() + } + #w(e) { + for (var t = 0; t < e.length; t += 1) De(e[t], this.#f, this.#d) + } + capture(e, t, n = !1) { + e.v === Y || this.previous.has(e) || this.previous.set(e, e.v), 0 === (e.f & O) && (this.current.set(e, [t, n]), Ye?.set(e, t)), this.is_fork || (e.v = t) + } + activate() { + Ke = this + } + deactivate() { + Ke = null, Ye = null + } + flush() { + try { + e, + Je = !0, + Ke = this, + this.#m() + } + finally { + Qe = 0, Ge = null, Ze = null, Xe = null, Je = !1, Ke = null, Ye = null, kt.clear() + } + } + discard() { + for (const e of this.#a) e(this); + this.#a.clear(), this.#o.clear(), this.#b() + } + register_created_effect(e) { + this.#u.push(e) + } + #$() { + this.#b(); + for (let c = Fe; null !== c; c = c.#n) { + var e = c.id < this.id, + t = []; + for (const [r, [a, o]] of this.current) { + if (c.current.has(r)) { + var n = c.current.get(r)[0]; + if (!e || a === n) continue; + c.current.set(r, [a, o]) + } + t.push(r) + } + if (e) + for (const [e, t] of this.async_deriveds) { + const n = c.async_deriveds.get(e); + n && t.promise.then(n.resolve) + } + if (c.#e) { + var r = [...c.current.keys()].filter(e => !this.current.has(e)); + if (0 === r.length) e && c.discard(); + else if (t.length > 0) { + if (e) + for (const e of this.#p) c.unskip_effect(e, e => { + 4194320 & e.f ? c.schedule(e) : c.#w([e]) + }); + c.activate(); + var a = new Set, + o = new Map; + for (var i of t) ot(i, r, a, o); + o = new Map; + var l = [...c.current.keys()].filter(e => !this.current.has(e) || this.current.get(e)[0] !== e.v); + if (l.length > 0) + for (const e of this.#u) 155648 & e.f || !it(e, l, o) || (4194320 & e.f ? (Re(e, x), c.schedule(e)) : c.#f.add(e)); + if (c.#c.length > 0) { + for (var s of (c.apply(), c.#c)) c.#y(s, [], []); + c.#c = [] + } + c.deactivate() + } + } + } + } + increment(e, t) { + if (this.#i += 1, e) { + let e = this.#l.get(t) ?? 0; + this.#l.set(t, e + 1) + } + } + decrement(e, t) { + if (this.#i -= 1, e) { + let e = this.#l.get(t) ?? 0; + 1 === e ? this.#l.delete(t) : this.#l.set(t, e - 1) + } + this.#v || (this.#v = !0, te(() => { + this.#v = !1, this.linked && this.flush() + })) + } + transfer_effects(e, t) { + for (const t of e) this.#f.add(t); + for (const e of t) this.#d.add(e); + e.clear(), t.clear() + } + oncommit(e) { + this.#r.add(e) + } + ondiscard(e) { + this.#a.add(e) + } + on_fork_commit(e) { + this.#o.add(e) + } + run_fork_commit_callbacks() { + for (const e of this.#o) e(this); + this.#o.clear() + } + settled() { + return (this.#s ??= p()).promise + } + static ensure() { + if (null === Ke) { + const e = Ke = new tt; + e.#_(), Je || We || te(() => { + e.#e || e.flush() + }) + } + return Ke + } + apply() { + Ye = null + } + schedule(e) { + if (Ge = e, e.b?.is_pending && 16777228 & e.f && 0 === (e.f & S)) e.b.defer_effect(e); + else { + for (var t = e; null !== t.parent;) { + var n = (t = t.parent).f; + if (!(null === Ze || t !== jt || null !== Vt && 2 & Vt.f)) return; + if (96 & n) { + if (0 === (n & w)) return; + t.f ^= w + } + } + this.#c.push(t) + } + } + #_() { + null === He ? Fe = He = this : (He.#n = this, this.#t = He), He = this + } + #b() { + var e = this.#t, + t = this.#n; + null === e ? Fe = t : e.#n = t, null === t ? He = e : t.#t = e, this.linked = !1 + } + } + + function nt(e) { + var t = We; + We = !0; + try { + for (;;) { + if (ne(), null === Ke) return; + Ke.flush() + } + } finally { + We = t + } + } + let rt = null; + + function at(e) { + var t = e.length; + if (0 !== t) { + for (var n = 0; n < t;) { + var r = e[n++]; + if (!(24576 & r.f) && Qt(r) && (rt = new Set, an(r), null === r.deps && null === r.first && null === r.nodes && null === r.teardown && null === r.ac && En(r), rt?.size > 0)) { + kt.clear(); + for (const e of rt) { + if (24576 & e.f) continue; + const t = [e]; + let n = e.parent; + for (; null !== n;) rt.has(n) && (rt.delete(n), t.push(n)), n = n.parent; + for (let e = t.length - 1; e >= 0; e--) { + const n = t[e]; + 24576 & n.f || an(n) + } + } + rt.clear() + } + } + rt = null + } + } + + function ot(e, t, n, r) { + if (!n.has(e) && (n.add(e), null !== e.reactions)) + for (const a of e.reactions) { + const e = a.f; + 2 & e ? ot(a, t, n, r) : 4194320 & e && 0 === (e & x) && it(a, t, r) && (Re(a, x), lt(a)) + } + } + + function it(e, t, n) { + const a = n.get(e); + if (void 0 !== a) return a; + if (null !== e.deps) + for (const a of e.deps) { + if (r.call(t, a)) return !0; + if (2 & a.f && it(a, t, n)) return n.set(a, !0), !0 + } + return n.set(e, !1), !1 + } + + function lt(e) { + Ke.schedule(e) + } + + function st(e, t) { + if (0 === (e.f & m) || 0 === (e.f & w)) { + 0 !== (e.f & x) ? t.d.push(e) : 0 !== (e.f & k) && t.m.push(e), Re(e, w); + for (var n = e.first; null !== n;) st(n, t), n = n.next + } + } + + function ct(e) { + Re(e, w); + for (var t = e.first; null !== t;) ct(t), t = t.next + } + class ut { + parent; + is_pending = !1; + transform_error; + #S; + #C = oe ? ae : null; + #E; + #T; + #A; + #I = null; + #P = null; + #O = null; + #R = null; + #L = 0; + #M = 0; + #D = !1; + #f = new Set; + #d = new Set; + #U = null; + #V = function(e) { + let t, n = 0, + r = $t(0); + return () => { + hn() && (ln(r), bn(() => (0 === n && (t = un(() => e(() => At(r)))), n += 1, () => { + te(() => { + n -= 1, 0 === n && (t?.(), t = void 0, At(r)) + }) + }))) + } + }(() => (this.#U = $t(this.#L), () => { + this.#U = null + })); + constructor(e, t, n, r) { + this.#S = e, this.#E = t, this.#T = e => { + var t = jt; + t.b = this, t.f |= 128, n(e) + }, this.parent = jt.b, this.transform_error = r ?? this.parent?.transform_error ?? (e => e), this.#A = wn(() => { + if (oe) { + const e = this.#C; + se(); + const t = "[!" === e.data; + if (e.data.startsWith("[?")) { + const t = JSON.parse(e.data.slice(2)); + this.#N(t) + } else t ? this.#z() : this.#j() + } else this.#B() + }, 589824), oe && (this.#S = ae) + } + #j() { + try { + this.#I = kn(() => this.#T(this.#S)) + } catch (e) { + this.error(e) + } + } + #N(e) { + const t = this.#E.failed; + t && (this.#O = kn(() => { + t(this.#S, () => e, () => () => {}) + })) + } + #z() { + const e = this.#E.pending; + e && (this.is_pending = !0, this.#P = kn(() => e(this.#S)), te(() => { + var e = this.#R = document.createDocumentFragment(), + t = ke(); + e.append(t), this.#I = this.#F(() => kn(() => this.#T(t))), 0 === this.#M && (this.#S.before(e), this.#R = null, Tn(this.#P, () => { + this.#P = null + }), this.#H(Ke)) + })) + } + #B() { + try { + if (this.is_pending = this.has_pending_snippet(), this.#M = 0, this.#L = 0, this.#I = kn(() => { + this.#T(this.#S) + }), this.#M > 0) { + var e = this.#R = document.createDocumentFragment(); + On(this.#I, e); + const t = this.#E.pending; + this.#P = kn(() => t(this.#S)) + } else this.#H(Ke) + } catch (e) { + this.error(e) + } + } + #H(e) { + this.is_pending = !1, e.transfer_effects(this.#f, this.#d) + } + defer_effect(e) { + De(e, this.#f, this.#d) + } + is_rendered() { + return !this.is_pending && (!this.parent || this.parent.is_rendered()) + } + has_pending_snippet() { + return !!this.#E.pending + } + #F(e) { + var t = jt, + n = Vt, + r = W; + Bt(this.#A), zt(this.#A), J(this.#A.ctx); + try { + return tt.ensure(), e() + } catch (e) { + return Ie(e), null + } finally { + Bt(t), zt(n), J(r) + } + } + #K(e, t) { + this.has_pending_snippet() ? (this.#M += e, 0 === this.#M && (this.#H(t), this.#P && Tn(this.#P, () => { + this.#P = null + }), this.#R && (this.#S.before(this.#R), this.#R = null))) : this.parent && this.parent.#K(e, t) + } + update_pending_count(e, t) { + this.#K(e, t), this.#L += e, this.#U && !this.#D && (this.#D = !0, te(() => { + this.#D = !1, this.#U && Tt(this.#U, this.#L) + })) + } + get_effect_pending() { + return this.#V(), ln(this.#U) + } + error(e) { + if (!this.#E.onerror && !this.#E.failed) throw e; + Ke?.is_fork ? (this.#I && Ke.skip_effect(this.#I), this.#P && Ke.skip_effect(this.#P), this.#O && Ke.skip_effect(this.#O), Ke.on_fork_commit(() => { + this.#q(e) + })) : this.#q(e) + } + #q(e) { + this.#I && (Sn(this.#I), this.#I = null), this.#P && (Sn(this.#P), this.#P = null), this.#O && (Sn(this.#O), this.#O = null), oe && (le(this.#C), ue(), le(fe())); + var t = this.#E.onerror; + let n = this.#E.failed; + var r = !1, + a = !1; + const o = () => { + r ? console.warn("https://svelte.dev/e/svelte_boundary_reset_noop") : (r = !0, a && function() { + throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror") + }(), null !== this.#O && Tn(this.#O, () => { + this.#O = null + }), this.#F(() => { + this.#B() + })) + }, + i = e => { + try { + a = !0, t?.(e, o), a = !1 + } catch (e) { + Pe(e, this.#A && this.#A.parent) + } + n && (this.#O = this.#F(() => { + try { + return kn(() => { + var t = jt; + t.b = this, t.f |= 128, n(this.#S, () => e, () => o) + }) + } catch (e) { + return Pe(e, this.#A.parent), null + } + })) + }; + te(() => { + var t; + try { + t = this.transform_error(e) + } catch (e) { + return void Pe(e, this.#A && this.#A.parent) + } + null !== t && "object" == typeof t && "function" == typeof t.then ? t.then(i, e => Pe(e, this.#A && this.#A.parent)) : i(t) + }) + } + } + + function ft(e, t, n, r) { + const a = pt; + var o = e.filter(e => !e.settled); + if (0 !== n.length || 0 !== o.length) { + var i, l, s, c, u = jt, + f = (i = jt, l = Vt, s = W, c = Ke, function(e = !0) { + Bt(i), zt(l), J(s), e && 0 === (i.f & $) && (c?.activate(), c?.apply()) + }), + d = 1 === o.length ? o[0].promise : o.length > 1 ? Promise.all(o.map(e => e.promise)) : null, + h = ht(); + 0 !== n.length ? d ? d.then(() => { + f(), v(), dt() + }) : v() : d.then(() => p(t.map(a))).finally(h) + } else r(t.map(a)); + + function p(e) { + if (0 === (u.f & $)) { + f(); + try { + r(e) + } catch (e) { + Pe(e, u) + } + dt() + } + } + + function v() { + Promise.all(n.map(e => gt(e))).then(e => p([...t.map(a), ...e])).catch(e => Pe(e, u)).finally(h) + } + } + + function dt(e = !0) { + Bt(null), zt(null), J(null), e && Ke?.deactivate() + } + + function ht() { + var e = jt, + t = e.b, + n = Ke, + r = t.is_rendered(); + return t.update_pending_count(1, n), n.increment(r, e), () => { + t.update_pending_count(-1, n), n.decrement(r, e) + } + } + + function pt(e) { + null !== jt && (jt.f |= A); + return { + ctx: W, + deps: null, + effects: null, + equals: F, + f: 2050, + fn: e, + reactions: null, + rv: 0, + v: Y, + wv: 0, + parent: jt, + ac: null + } + } + const vt = Symbol("obsolete"); + + function gt(e, t, n) { + let r = jt; + null === r && function() { + throw new Error("https://svelte.dev/e/async_derived_orphan") + }(); + var a = void 0, + o = $t(Y), + i = !Vt, + l = new Set; + return function(e) { + dn(4718592, e) + }(() => { + var t = jt, + n = p(); + a = n.promise; + try { + Promise.resolve(e()).then(n.resolve, e => { + e !== j && n.reject(e) + }).finally(dt) + } catch (e) { + n.reject(e), dt() + } + var s = Ke; + if (i) { + if (0 !== (t.f & S)) var c = ht(); + if (r.b.is_rendered()) s.async_deriveds.get(t)?.reject(vt); + else + for (const e of l.values()) e.reject(vt); + l.add(n), s.async_deriveds.set(t, n) + } + const u = (e, t = void 0) => { + c?.(), l.delete(n), t !== vt && (s.activate(), t ? (o.f |= O, Tt(o, t)) : (0 !== (o.f & O) && (o.f ^= O), Tt(o, e)), s.deactivate()) + }; + n.promise.then(u, e => u(null, e || "unknown")) + }), pn(() => { + for (const e of l) e.reject(vt) + }), new Promise(e => { + ! function t(n) { + function r() { + n === a ? e(o) : t(a) + } + n.then(r, r) + }(a) + }) + } + + function mt(e) { + const t = pt(e); + return Ht(t), t + } + + function bt(e) { + var t, n = jt, + r = e.parent; + if (!Dt && null !== r && e.v !== Y && 24576 & r.f) return console.warn("https://svelte.dev/e/derived_inert"), e.v; + Bt(r); + try { + e.f &= -65537, + function(e) { + var t = e.effects; + if (null !== t) { + e.effects = null; + for (var n = 0; n < t.length; n += 1) Sn(t[n]) + } + }(e), t = tn(e) + } finally { + Bt(n) + } + return t + } + + function yt(e) { + var t = bt(e); + e.equals(t) || (e.wv = Xt(), Ke?.is_fork && null !== e.deps || (null !== Ke ? (Ke.capture(e, t, !0), qe?.capture(e, t, !0)) : e.v = t, null !== e.deps)) ? Dt || (null !== Ye ? (hn() || Ke?.is_fork) && Ye.set(e, t) : Le(e)) : Re(e, w) + } + + function wt(e) { + if (null !== e.effects) + for (const t of e.effects) t.teardown && null !== t.fn && an(t) + } + let xt = new Set; + const kt = new Map; + let _t = !1; + + function $t(e, t) { + return { + f: 0, + v: e, + reactions: null, + equals: F, + rv: 0, + wv: 0 + } + } + + function St(e, t) { + const n = $t(e); + return Ht(n), n + } + + function Ct(e, t = !1, n = !0) { + const r = $t(e); + return t || (r.equals = K), r + } + + function Et(e, t, n = !1) { + return null === Vt || Nt && 0 === (Vt.f & T) || !(4325394 & Vt.f) || null !== Ft && r.call(Ft, e) || function() { + throw new Error("https://svelte.dev/e/state_unsafe_mutation") + }(), Tt(e, n ? he(t) : t, Xe) + } + + function Tt(e, t, n = null) { + if (!e.equals(t)) { + kt.set(e, Dt ? t : e.v); + var r = tt.ensure(); + if (r.capture(e, t), 2 & e.f) { + const t = e; + 0 !== (e.f & x) && bt(t), null === Ye && Le(t) + } + e.wv = Xt(), It(e, x, n), null === jt || 0 === (jt.f & w) || 96 & jt.f || (null === Yt ? function(e) { + Yt = e + }([e]) : Yt.push(e)), !r.is_fork && xt.size > 0 && !_t && function() { + _t = !1; + for (const e of xt) { + let t; + 0 !== (e.f & w) && Re(e, k); + try { + t = Qt(e) + } catch { + t = !0 + } + t && an(e) + } + xt.clear() + }() + } + return t + } + + function At(e) { + Et(e, e.v + 1) + } + + function It(e, t, n) { + var r = e.reactions; + if (null !== r) + for (var a = r.length, o = 0; o < a; o++) { + var i = r[o], + l = i.f, + s = 0 === (l & x); + if (s && Re(i, t), 0 !== (l & T)) xt.add(i); + else if (2 & l) { + var c = i; + Ye?.delete(c), 0 === (l & I) && (l & y && (null === jt || 0 === (jt.f & P)) && (i.f |= I), It(c, k, n)) + } else if (s) { + var u = i; + 0 !== (l & g) && null !== rt && rt.add(u), null !== n ? n.push(u) : lt(u) + } + } + } + + function Pt(e, t) { + if (t) { + const t = document.body; + e.autofocus = !0, te(() => { + document.activeElement === t && e.focus() + }) + } + } + let Ot = !1; + + function Rt() { + Ot || (Ot = !0, document.addEventListener("reset", e => { + Promise.resolve().then(() => { + if (!e.defaultPrevented) + for (const t of e.target.elements) t[z]?.() + }) + }, { + capture: !0 + })) + } + + function Lt(e) { + var t = Vt, + n = jt; + zt(null), Bt(null); + try { + return e() + } finally { + zt(t), Bt(n) + } + } + let Mt = !1, + Dt = !1; + + function Ut(e) { + Dt = e + } + let Vt = null, + Nt = !1; + + function zt(e) { + Vt = e + } + let jt = null; + + function Bt(e) { + jt = e + } + let Ft = null; + + function Ht(e) { + null !== Vt && (null === Ft ? Ft = [e] : Ft.push(e)) + } + let Kt = null, + qt = 0, + Yt = null; + let Gt = 1, + Wt = 0, + Jt = Wt; + + function Zt(e) { + Jt = e + } + + function Xt() { + return ++Gt + } + + function Qt(e) { + var t = e.f; + if (0 !== (t & x)) return !0; + if (2 & t && (e.f &= -65537), 0 !== (t & k)) { + for (var n = e.deps, r = n.length, a = 0; a < r; a++) { + var o = n[a]; + if (Qt(o) && yt(o), o.wv > e.wv) return !0 + } + 0 !== (t & y) && null === Ye && Re(e, w) + } + return !1 + } + + function en(e, t, n = !0) { + var a = e.reactions; + if (null !== a && (null === Ft || !r.call(Ft, e))) + for (var o = 0; o < a.length; o++) { + var i = a[o]; + 2 & i.f ? en(i, t, !1) : t === i && (n ? Re(i, x) : 0 !== (i.f & w) && Re(i, k), lt(i)) + } + } + + function tn(e) { + var t = Kt, + n = qt, + r = Yt, + a = Vt, + o = Ft, + i = W, + l = Nt, + s = Jt, + c = e.f; + Kt = null, qt = 0, Yt = null, Vt = 96 & c ? null : e, Ft = null, J(e.ctx), Nt = !1, Jt = ++Wt, null !== e.ac && (Lt(() => { + e.ac.abort(j) + }), e.ac = null); + try { + e.f |= P; + var u = (0, e.fn)(); + e.f |= S; + var f = e.deps, + d = Ke?.is_fork; + if (null !== Kt) { + var h; + if (d || rn(e, qt), null !== f && qt > 0) + for (f.length = qt + Kt.length, h = 0; h < Kt.length; h++) f[qt + h] = Kt[h]; + else e.deps = f = Kt; + if (hn() && 0 !== (e.f & y)) + for (h = qt; h < f.length; h++)(f[h].reactions ??= []).push(e) + } else !d && null !== f && qt < f.length && (rn(e, qt), f.length = qt); + if (!(null === Yt || Nt || null === f || 6146 & e.f)) + for (h = 0; h < Yt.length; h++) en(Yt[h], e); + if (null !== a && a !== e) { + if (Wt++, null !== a.deps) + for (let e = 0; e < n; e += 1) a.deps[e].rv = Wt; + if (null !== t) + for (const e of t) e.rv = Wt; + null !== Yt && (null === r ? r = Yt : r.push(...Yt)) + } + return 0 !== (e.f & O) && (e.f ^= O), u + } catch (e) { + return Ie(e) + } finally { + e.f ^= P, Kt = t, qt = n, Yt = r, Vt = a, Ft = o, J(i), Nt = l, Jt = s + } + } + + function nn(e, t) { + let a = t.reactions; + if (null !== a) { + var o = n.call(a, e); + if (-1 !== o) { + var i = a.length - 1; + 0 === i ? a = t.reactions = null : (a[o] = a[i], a.pop()) + } + } + if (null === a && 2 & t.f && (null === Kt || !r.call(Kt, t))) { + var l = t; + 0 !== (l.f & y) && (l.f ^= y, l.f &= -65537), l.v !== Y && Le(l), + function(e) { + if (null !== e.effects) + for (const t of e.effects)(t.teardown || t.ac) && (t.teardown?.(), t.ac?.abort(j), null !== t.fn && (t.teardown = h), t.ac = null, rn(t, 0), $n(t)) + }(l), rn(l, 0) + } + } + + function rn(e, t) { + var n = e.deps; + if (null !== n) + for (var r = t; r < n.length; r++) nn(e, n[r]) + } + + function an(e) { + var t = e.f; + if (0 === (t & $)) { + Re(e, w); + var n = jt, + r = Mt; + jt = e, Mt = !0; + try { + 16777232 & t ? function(e) { + var t = e.first; + for (; null !== t;) { + var n = t.next; + 0 === (t.f & m) && Sn(t), t = n + } + }(e) : $n(e), _n(e); + var a = tn(e); + e.teardown = "function" == typeof a ? a : null, e.wv = Gt + } finally { + Mt = r, jt = n + } + } + } + async function on() { + await Promise.resolve(), nt() + } + + function ln(e) { + var t = !!(2 & e.f); + if (null !== Vt && !Nt && !(null !== jt && 0 !== (jt.f & $) || null !== Ft && r.call(Ft, e))) { + var n = Vt.deps; + if (0 !== (Vt.f & P)) e.rv < Wt && (e.rv = Wt, null === Kt && null !== n && n[qt] === e ? qt++ : null === Kt ? Kt = [e] : Kt.push(e)); + else { + (Vt.deps ??= []).push(e); + var a = e.reactions; + null === a ? e.reactions = [Vt] : r.call(a, Vt) || a.push(Vt) + } + } + if (Dt && kt.has(e)) return kt.get(e); + if (t) { + var o = e; + if (Dt) { + var i = o.v; + return (0 === (o.f & w) && null !== o.reactions || cn(o)) && (i = bt(o)), kt.set(o, i), i + } + var l = 0 === (o.f & y) && !Nt && null !== Vt && (Mt || 0 !== (Vt.f & y)), + s = 0 === (o.f & S); + Qt(o) && (l && (o.f |= y), yt(o)), l && !s && (wt(o), sn(o)) + } + if (Ye?.has(e)) return Ye.get(e); + if (0 !== (e.f & O)) throw e.v; + return e.v + } + + function sn(e) { + if (e.f |= y, null !== e.deps) + for (const t of e.deps)(t.reactions ??= []).push(e), 2 & t.f && 0 === (t.f & y) && (wt(t), sn(t)) + } + + function cn(e) { + if (e.v === Y) return !0; + if (null === e.deps) return !1; + for (const t of e.deps) { + if (kt.has(t)) return !0; + if (2 & t.f && cn(t)) return !0 + } + return !1 + } + + function un(e) { + var t = Nt; + try { + return Nt = !0, e() + } finally { + Nt = t + } + } + + function fn(e) { + null === jt && (null === Vt && function() { + throw new Error("https://svelte.dev/e/effect_orphan") + }(), function() { + throw new Error("https://svelte.dev/e/effect_in_unowned_derived") + }()), Dt && function() { + throw new Error("https://svelte.dev/e/effect_in_teardown") + }() + } + + function dn(e, t) { + var n = jt; + null !== n && 0 !== (n.f & _) && (e |= _); + var r = { + ctx: W, + deps: null, + nodes: null, + f: e | x | y, + first: null, + fn: t, + last: null, + next: null, + parent: n, + b: n && n.b, + prev: null, + teardown: null, + wv: 0, + ac: null + }; + Ke?.register_created_effect(r); + var a = r; + if (4 & e) null !== Ze ? Ze.push(r) : tt.ensure().schedule(r); + else if (null !== t) { + try { + an(r) + } catch (e) { + throw Sn(r), e + } + null === a.deps && null === a.teardown && null === a.nodes && a.first === a.last && 0 === (a.f & A) && (a = a.first, 0 !== (e & g) && 0 !== (e & E) && null !== a && (a.f |= E)) + } + if (null !== a && (a.parent = n, null !== n && function(e, t) { + var n = t.last; + null === n ? t.last = t.first = e : (n.next = e, e.prev = n, t.last = e) + }(a, n), null !== Vt && 2 & Vt.f && 0 === (e & b))) { + var o = Vt; + (o.effects ??= []).push(a) + } + return r + } + + function hn() { + return null !== Vt && !Nt + } + + function pn(e) { + const t = dn(8, null); + return Re(t, w), t.teardown = e, t + } + + function vn(e) { + fn(); + var t = jt.f; + if (!(!Vt && 0 !== (t & m) && 0 === (t & S))) return gn(e); + var n = W; + (n.e ??= []).push(e) + } + + function gn(e) { + return dn(1048580, e) + } + + function mn(e) { + return dn(4, e) + } + + function bn(e, t = 0) { + return dn(8 | t, e) + } + + function yn(e, t = [], n = [], r = []) { + ft(r, t, n, t => { + dn(8, () => e(...t.map(ln))) + }) + } + + function wn(e, t = 0) { + return dn(g | t, e) + } + + function xn(e, t = 0) { + return dn(v | t, e) + } + + function kn(e) { + return dn(524320, e) + } + + function _n(e) { + var t = e.teardown; + if (null !== t) { + const e = Dt, + n = Vt; + Ut(!0), zt(null); + try { + t.call(null) + } finally { + Ut(e), zt(n) + } + } + } + + function $n(e, t = !1) { + var n = e.first; + for (e.first = e.last = null; null !== n;) { + const e = n.ac; + null !== e && Lt(() => { + e.abort(j) + }); + var r = n.next; + 0 !== (n.f & b) ? n.parent = null : Sn(n, t), n = r + } + } + + function Sn(e, t = !0) { + var n = !1; + (t || 262144 & e.f) && null !== e.nodes && null !== e.nodes.end && (Cn(e.nodes.start, e.nodes.end), n = !0), Re(e, C), $n(e, t && !n), rn(e, 0); + var r = e.nodes && e.nodes.t; + if (null !== r) + for (const e of r) e.stop(); + _n(e), e.f ^= C, e.f |= $; + var a = e.parent; + null !== a && null !== a.first && En(e), e.next = e.prev = e.teardown = e.ctx = e.deps = e.fn = e.nodes = e.ac = e.b = null + } + + function Cn(e, t) { + for (; null !== e;) { + var n = e === t ? null : $e(e); + e.remove(), e = n + } + } + + function En(e) { + var t = e.parent, + n = e.prev, + r = e.next; + null !== n && (n.next = r), null !== r && (r.prev = n), null !== t && (t.first === e && (t.first = r), t.last === e && (t.last = n)) + } + + function Tn(e, t, n = !0) { + var r = []; + An(e, r, !0); + var a = () => { + n && Sn(e), t && t() + }, + o = r.length; + if (o > 0) { + var i = () => --o || a(); + for (var l of r) l.out(i) + } else a() + } + + function An(e, t, n) { + if (0 === (e.f & _)) { + e.f ^= _; + var r = e.nodes && e.nodes.t; + if (null !== r) + for (const e of r)(e.is_global || n) && t.push(e); + for (var a = e.first; null !== a;) { + var o = a.next; + if (0 === (a.f & b)) An(a, t, !!(0 !== (a.f & E) || 0 !== (a.f & m) && 0 !== (e.f & g)) && n); + a = o + } + } + } + + function In(e) { + Pn(e, !0) + } + + function Pn(e, t) { + if (0 !== (e.f & _)) { + e.f ^= _, 0 === (e.f & w) && (Re(e, x), tt.ensure().schedule(e)); + for (var n = e.first; null !== n;) { + var r = n.next; + Pn(n, !!(0 !== (n.f & E) || 0 !== (n.f & m)) && t), n = r + } + var a = e.nodes && e.nodes.t; + if (null !== a) + for (const e of a)(e.is_global || t) && e.in() + } + } + + function On(e, t) { + if (e.nodes) + for (var n = e.nodes.start, r = e.nodes.end; null !== n;) { + var a = n === r ? null : $e(n); + t.append(n), n = a + } + } + + function Rn(e) { + const t = { + get: e => ze(t.store)[e], + set: (e, n) => { + "string" == typeof e ? Object.assign(ze(t.store), { + [e]: n + }) : Object.assign(ze(t.store), e), t.store.set(ze(t.store)) + }, + store: Ne(e) + }; + return t + } + globalThis.$altcha = globalThis.$altcha || { + algorithms: new Map, + defaults: Rn({}), + i18n: Rn({}), + instances: new Set, + plugins: new Set + }; + const Ln = { + ariaLinkLabel: "Altcha (official website)", + cancel: "Cancel", + enterCode: "Enter code", + enterCodeAria: "Enter code you hear. Press Space to play audio.", + enterCodeFromImage: "To proceed, please enter the code from the image below.", + error: "Verification failed. Try again later.", + expired: "Verification expired. Try again.", + footer: 'Protected by ALTCHA', + getAudioChallenge: "Get an audio challenge", + label: "I'm not a robot", + loading: "Loading...", + reload: "Reload", + verify: "Verify", + verificationRequired: "Verification required!", + verified: "Verified", + verifying: "Verifying...", + waitAlert: "Verifying... please wait." + }; + "$altcha" in globalThis && globalThis.$altcha.i18n.set("en", Ln); + "undefined" != typeof window && ((window.__svelte ??= {}).v ??= new Set).add("5"); + const Mn = Symbol("events"), + Dn = new Set, + Un = new Set; + + function Vn(e, t, n, r = {}) { + function a(e) { + if (r.capture || Fn.call(t, e), !e.cancelBubble) return Lt(() => n?.call(this, e)) + } + return e.startsWith("pointer") || e.startsWith("touch") || "wheel" === e ? te(() => { + t.addEventListener(e, a, r) + }) : t.addEventListener(e, a, r), a + } + + function Nn(e, t, n, r, a) { + var o = { + capture: r, + passive: a + }, + i = Vn(e, t, n, o); + (t === document.body || t === window || t === document || t instanceof HTMLMediaElement) && pn(() => { + t.removeEventListener(e, i, o) + }) + } + + function zn(e, t, n) { + (t[Mn] ??= {})[e] = n + } + + function jn(e) { + for (var t = 0; t < e.length; t++) Dn.add(e[t]); + for (var n of Un) n(e) + } + let Bn = null; + + function Fn(e) { + var t = this, + n = t.ownerDocument, + r = e.type, + a = e.composedPath?.() || [], + o = a[0] || e.target; + Bn = e; + var l = 0, + s = Bn === e && e[Mn]; + if (s) { + var c = a.indexOf(s); + if (-1 !== c && (t === document || t === window)) return void(e[Mn] = t); + var u = a.indexOf(t); + if (-1 === u) return; + c <= u && (l = c) + } + if ((o = a[l] || e.target) !== t) { + i(e, "currentTarget", { + configurable: !0, + get: () => o || n + }); + var f = Vt, + d = jt; + zt(null), Bt(null); + try { + for (var h, p = []; null !== o;) { + var v = o.assignedSlot || o.parentNode || o.host || null; + try { + var g = o[Mn]?.[r]; + null == g || o.disabled && e.target !== o || g.call(o, e) + } catch (e) { + h ? p.push(e) : h = e + } + if (e.cancelBubble || v === t || null === v) break; + o = v + } + if (h) { + for (let e of p) queueMicrotask(() => { + throw e + }); + throw h + } + } finally { + e[Mn] = t, delete e.currentTarget, zt(f), Bt(d) + } + } + } + const Hn = globalThis?.window?.trustedTypes && globalThis.window.trustedTypes.createPolicy("svelte-trusted-html", { + createHTML: e => e + }); + + function Kn(e) { + var t = Te("template"); + return t.innerHTML = function(e) { + return Hn?.createHTML(e) ?? e + }(e.replaceAll("", "\x3c!----\x3e")), t.content + } + + function qn(e, t) { + var n = jt; + null === n.nodes && (n.nodes = { + start: e, + end: t, + a: null, + t: null + }) + } + + function Yn(e, t) { + var n, r = !!(1 & t), + a = !!(2 & t), + o = !e.startsWith(""); + return () => { + if (oe) return qn(ae, null), ae; + void 0 === n && (n = Kn(o ? e : "" + e), r || (n = _e(n))); + var t = a || be ? document.importNode(n, !0) : n.cloneNode(!0); + r ? qn(_e(t), t.lastChild) : qn(t, t); + return t + } + } + + function Gn(e, t, n = "svg") { + var r, a = `<${n}>${!e.startsWith("") ? e : "" + e}`; + return () => { + if (oe) return qn(ae, null), ae; + if (!r) { + var e = Kn(a); + r = _e(_e(e)) + } + var t = r.cloneNode(!0); + return qn(t, t), t + } + } + + function Wn(e, t) { + return Gn(e, 0, "svg") + } + + function Jn(e = "") { + if (!oe) { + var t = ke(e + ""); + return qn(t, t), t + } + var n = ae; + return 3 !== n.nodeType ? (n.before(n = ke()), le(n)) : Ae(n), qn(n, n), n + } + + function Zn() { + if (oe) return qn(ae, null), ae; + var e = document.createDocumentFragment(), + t = document.createComment(""), + n = ke(); + return e.append(t, n), qn(t, n), e + } + + function Xn(e, t) { + if (oe) { + var n = jt; + return 0 !== (n.f & S) && null !== n.nodes.end || (n.nodes.end = ae), void se() + } + null !== e && e.before(t) + } + + function Qn(e) { + return e.endsWith("capture") && "gotpointercapture" !== e && "lostpointercapture" !== e + } + const er = ["beforeinput", "click", "change", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"]; + + function tr(e) { + return er.includes(e) + } + const nr = { + formnovalidate: "formNoValidate", + ismap: "isMap", + nomodule: "noModule", + playsinline: "playsInline", + readonly: "readOnly", + defaultvalue: "defaultValue", + defaultchecked: "defaultChecked", + srcobject: "srcObject", + novalidate: "noValidate", + allowfullscreen: "allowFullscreen", + disablepictureinpicture: "disablePictureInPicture", + disableremoteplayback: "disableRemotePlayback" + }; + + function rr(e) { + return e = e.toLowerCase(), nr[e] ?? e + } + const ar = ["touchstart", "touchmove"]; + + function or(e) { + return ar.includes(e) + } + + function ir(e, t) { + var n = null == t ? "" : "object" == typeof t ? `${t}` : t; + n !== (e[N] ??= e.nodeValue) && (e[N] = n, e.nodeValue = `${n}`) + } + + function lr(e, t) { + return ur(e, t) + } + + function sr(e, t) { + xe(), t.intro = t.intro ?? !1; + const n = t.target, + r = oe, + a = ae; + try { + for (var o = _e(n); o && (8 !== o.nodeType || "[" !== o.data);) o = $e(o); + if (!o) throw q; + ie(!0), le(o); + const r = ur(e, { + ...t, + anchor: o + }); + return ie(!1), r + } catch (r) { + if (r instanceof Error && r.message.split("\n").some(e => e.startsWith("https://svelte.dev/e/"))) throw r; + return r !== q && console.warn("Failed to hydrate: ", r), !1 === t.recover && function() { + throw new Error("https://svelte.dev/e/hydration_failed") + }(), xe(), n.textContent = "", ie(!1), lr(e, t) + } finally { + ie(r), le(a) + } + } + const cr = new Map; + + function ur(e, { + target: t, + anchor: n, + props: r = {}, + events: o, + context: i, + intro: l = !0, + transformError: s + }) { + xe(); + var c = void 0, + u = function(e) { + tt.ensure(); + const t = dn(524352, e); + return (e = {}) => new Promise(n => { + e.outro ? Tn(t, () => { + Sn(t), n(void 0) + }) : (Sn(t), n(void 0)) + }) + }(() => { + var l = n ?? t.appendChild(ke()); + ! function(e, t, n, r) { + new ut(e, t, n, r) + }(l, { + pending: () => {} + }, t => { + if (Z({}), i && (W.c = i), o && (r.$$events = o), oe && qn(t, null), c = e(t, r) || {}, oe && (jt.nodes.end = ae, null === ae || 8 !== ae.nodeType || "]" !== ae.data)) throw re(), q; + X() + }, s); + var u = new Set, + f = e => { + for (var n = 0; n < e.length; n++) { + var r = e[n]; + if (!u.has(r)) { + u.add(r); + var a = or(r); + for (const e of [t, document]) { + var o = cr.get(e); + void 0 === o && (o = new Map, cr.set(e, o)); + var i = o.get(r); + void 0 === i ? (e.addEventListener(r, Fn, { + passive: a + }), o.set(r, 1)) : o.set(r, i + 1) + } + } + } + }; + return f(a(Dn)), Un.add(f), () => { + for (var e of u) + for (const n of [t, document]) { + var r = cr.get(n), + a = r.get(e); + 0 == --a ? (n.removeEventListener(e, Fn), r.delete(e), 0 === r.size && cr.delete(n)) : r.set(e, a) + } + Un.delete(f), l !== n && l.parentNode?.removeChild(l) + } + }); + return fr.set(c, u), c + } + let fr = new WeakMap; + class dr { + anchor; + #Y = new Map; + #G = new Map; + #W = new Map; + #J = new Set; + #Z = !0; + constructor(e, t = !0) { + this.anchor = e, this.#Z = t + } + #$ = e => { + if (this.#Y.has(e)) { + var t = this.#Y.get(e), + n = this.#G.get(t); + if (n) In(n), this.#J.delete(t); + else { + var r = this.#W.get(t); + r && (this.#G.set(t, r.effect), this.#W.delete(t), r.fragment.lastChild.remove(), this.anchor.before(r.fragment), n = r.effect) + } + for (const [t, n] of this.#Y) { + if (this.#Y.delete(t), t === e) break; + const r = this.#W.get(n); + r && (Sn(r.effect), this.#W.delete(n)) + } + for (const [e, r] of this.#G) { + if (e === t || this.#J.has(e)) continue; + const a = () => { + if (Array.from(this.#Y.values()).includes(e)) { + var t = document.createDocumentFragment(); + On(r, t), t.append(ke()), this.#W.set(e, { + effect: r, + fragment: t + }) + } else Sn(r); + this.#J.delete(e), this.#G.delete(e) + }; + this.#Z || !n ? (this.#J.add(e), Tn(r, a, !1)) : a() + } + } + }; + #X = e => { + this.#Y.delete(e); + const t = Array.from(this.#Y.values()); + for (const [e, n] of this.#W) t.includes(e) || (Sn(n.effect), this.#W.delete(e)) + }; + ensure(e, t) { + var n = Ke; + !t || this.#G.has(e) || this.#W.has(e) || this.#G.set(e, kn(() => t(this.anchor))); + this.#Y.set(n, e), oe && (this.anchor = ae), this.#$(n) + } + } + + function hr(e) { + null === W && function() { + throw new Error("https://svelte.dev/e/lifecycle_outside_component") + }(), vn(() => { + const t = un(e); + if ("function" == typeof t) return t + }) + } + + function pr(e, t, n = !1) { + var r; + oe && (r = ae, se()); + var a = new dr(e); + + function o(e, t) { + if (oe) { + var n = de(r); + if (e !== parseInt(n.substring(1))) { + var o = fe(); + return le(o), a.anchor = o, ie(!1), a.ensure(e, t), void ie(!0) + } + } + a.ensure(e, t) + } + wn(() => { + var e = !1; + t((t, n = 0) => { + e = !0, o(n, t) + }), e || o(-1, null) + }, n ? E : 0) + } + const vr = Symbol("NaN"); + + function gr(e, t, n = !1, r = !1, a = !1, o = !1) { + var i = e, + l = ""; + if (n) { + var s = e; + oe && (i = le(_e(s))) + } + yn(() => { + var e = jt; + if (l !== (l = t() ?? "")) { + if (n && !oe) return e.nodes = null, s.innerHTML = l, void("" !== l && qn(_e(s), s.lastChild)); + if (null !== e.nodes && (Cn(e.nodes.start, e.nodes.end), e.nodes = null), "" !== l) { + if (oe) { + ae.data; + for (var o = se(), c = o; null !== o && (8 !== o.nodeType || "" !== o.data);) c = o, o = $e(o); + if (null === o) throw re(), q; + return qn(ae, c), void(i = le(o)) + } + var u = Te(r ? "svg" : a ? "math" : "template", r ? "http://www.w3.org/2000/svg" : a ? "http://www.w3.org/1998/Math/MathML" : void 0); + u.innerHTML = l; + var f = r || a ? u : u.content; + if (qn(_e(f), f.lastChild), r || a) + for (; _e(f);) i.before(_e(f)); + else i.before(f) + } + } else oe && se() + }) + } + + function mr(e, t) { + var n, r = void 0; + xn(() => { + r !== (r = t()) && (n && (Sn(n), n = null), r && (n = kn(() => { + mn(() => r(e)) + }))) + }) + } + + function br(e) { + var t, n, r = ""; + if ("string" == typeof e || "number" == typeof e) r += e; + else if ("object" == typeof e) + if (Array.isArray(e)) { + var a = e.length; + for (t = 0; t < a; t++) e[t] && (n = br(e[t])) && (r && (r += " "), r += n) + } else + for (n in e) e[n] && (r && (r += " "), r += n); + return r + } + + function yr(e) { + return "object" == typeof e ? function() { + for (var e, t, n = 0, r = "", a = arguments.length; n < a; n++)(e = arguments[n]) && (t = br(e)) && (r && (r += " "), r += t); + return r + }(e) : e ?? "" + } + const wr = [..." \t\n\r\f \v\ufeff"]; + + function xr(e, t = !1) { + var n = t ? " !important;" : ";", + r = ""; + for (var a of Object.keys(e)) { + var o = e[a]; + null != o && "" !== o && (r += " " + a + ": " + o + n) + } + return r + } + + function kr(e) { + return "-" !== e[0] || "-" !== e[1] ? e.toLowerCase() : e + } + + function _r(e, t, n, r, a, o) { + var i = e[U]; + if (oe || i !== n || void 0 === i) { + var l = function(e, t, n) { + var r = null == e ? "" : "" + e; + if (n) + for (var a of Object.keys(n)) + if (n[a]) r = r ? r + " " + a : a; + else if (r.length) + for (var o = a.length, i = 0; + (i = r.indexOf(a, i)) >= 0;) { + var l = i + o; + 0 !== i && !wr.includes(r[i - 1]) || l !== r.length && !wr.includes(r[l]) ? i = l : r = (0 === i ? "" : r.substring(0, i)) + r.substring(l + 1) + } + return "" === r ? null : r + }(n, 0, o); + oe && l === e.getAttribute("class") || (null == l ? e.removeAttribute("class") : t ? e.className = l : e.setAttribute("class", l)), e[U] = n + } else if (o && a !== o) + for (var s in o) { + var c = !!o[s]; + null != a && c === !!a[s] || e.classList.toggle(s, c) + } + return o + } + + function $r(e, t = {}, n, r) { + for (var a in n) { + var o = n[a]; + t[a] !== o && (null == n[a] ? e.style.removeProperty(a) : e.style.setProperty(a, o, r)) + } + } + + function Sr(e, t, n, r) { + var a = e[V]; + if (oe || a !== t) { + var o = function(e, t) { + if (t) { + var n, r, a = ""; + if (Array.isArray(t) ? (n = t[0], r = t[1]) : n = t, e) { + e = String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g, "").trim(); + var o = !1, + i = 0, + l = !1, + s = []; + n && s.push(...Object.keys(n).map(kr)), r && s.push(...Object.keys(r).map(kr)); + var c = 0, + u = -1; + const t = e.length; + for (var f = 0; f < t; f++) { + var d = e[f]; + if (l ? "/" === d && "*" === e[f - 1] && (l = !1) : o ? o === d && (o = !1) : "/" === d && "*" === e[f + 1] ? l = !0 : '"' === d || "'" === d ? o = d : "(" === d ? i++ : ")" === d && i--, !l && !1 === o && 0 === i) + if (":" === d && -1 === u) u = f; + else if (";" === d || f === t - 1) { + if (-1 !== u) { + var h = kr(e.substring(c, u).trim()); + s.includes(h) || (";" !== d && f++, a += " " + e.substring(c, f).trim() + ";") + } + c = f + 1, u = -1 + } + } + } + return n && (a += xr(n)), r && (a += xr(r, !0)), "" === (a = a.trim()) ? null : a + } + return null == e ? null : String(e) + }(t, r); + oe && o === e.getAttribute("style") || (null == o ? e.removeAttribute("style") : e.style.cssText = o), e[V] = t + } else r && (Array.isArray(r) ? ($r(e, n?.[0], r[0]), $r(e, n?.[1], r[1], "important")) : $r(e, n, r)); + return r + } + + function Cr(e, n, r = !1) { + if (e.multiple) { + if (null == n) return; + if (!t(n)) return void console.warn("https://svelte.dev/e/select_multiple_invalid_value"); + for (var a of e.options) a.selected = n.includes(Er(a)) + } else { + for (a of e.options) { + if (ve(Er(a), n)) return void(a.selected = !0) + } + r && void 0 === n || (e.selectedIndex = -1) + } + } + + function Er(e) { + return "__value" in e ? e.__value : e.value + } + const Tr = Symbol("class"), + Ar = Symbol("style"), + Ir = Symbol("is custom element"), + Pr = Symbol("is html"), + Or = B ? "link" : "LINK", + Rr = B ? "input" : "INPUT", + Lr = B ? "option" : "OPTION", + Mr = B ? "select" : "SELECT", + Dr = B ? "progress" : "PROGRESS"; + + function Ur(e) { + if (oe) { + var t = !1, + n = () => { + if (!t) { + if (t = !0, e.hasAttribute("value")) { + var n = e.value; + Nr(e, "value", null), e.value = n + } + if (e.hasAttribute("checked")) { + var r = e.checked; + Nr(e, "checked", null), e.checked = r + } + } + }; + e[z] = n, te(n), Rt() + } + } + + function Vr(e, t) { + t ? e.hasAttribute("selected") || e.setAttribute("selected", "") : e.removeAttribute("selected") + } + + function Nr(e, t, n, r) { + var a = jr(e); + oe && (a[t] = e.getAttribute(t), "src" === t || "srcset" === t || "href" === t && e.nodeName === Or) || a[t] !== (a[t] = n) && ("loading" === t && (e[M] = n), null == n ? e.removeAttribute(t) : "string" != typeof n && Fr(e).includes(t) ? e[t] = n : e.setAttribute(t, n)) + } + + function zr(e, t, n = [], r = [], a = [], o, i = !1, l = !1) { + ft(a, n, r, n => { + var r = void 0, + a = {}, + o = e.nodeName === Mr, + s = !1; + if (xn(() => { + var c = t(...n.map(ln)), + u = function(e, t, n, r, a = !1) { + if (oe && a && e.nodeName === Rr) { + var o = e; + ("checkbox" === o.type ? "defaultChecked" : "defaultValue") in n || Ur(o) + } + var i = jr(e), + l = i[Ir], + s = !i[Pr]; + let c = oe && l; + c && ie(!1); + var u = t || {}, + f = e.nodeName === Lr; + for (var d in t) d in n || (n[d] = null); + n.class ? n.class = yr(n.class) : n[Tr] && (n.class = null), n[Ar] && (n.style ??= null); + var h = Fr(e); + for (const r in n) { + let a = n[r]; + if (f && "value" === r && null == a) e.value = e.__value = "", u[r] = a; + else if ("class" !== r) + if ("style" !== r) { + var p = u[r]; + if (a !== p || void 0 === a && e.hasAttribute(r)) { + u[r] = a; + var v = r[0] + r[1]; + if ("$$" !== v) + if ("on" === v) { + const t = {}, + n = "$$" + r; + let o = r.slice(2); + var g = tr(o); + if (Qn(o) && (o = o.slice(0, -7), t.capture = !0), !g && p) { + if (null != a) continue; + e.removeEventListener(o, u[n], t), u[n] = null + } + if (g) zn(o, e, a), jn([o]); + else if (null != a) { + let a = function(e) { + u[r].call(this, e) + }; + u[n] = Vn(o, e, a, t) + } + } else if ("style" === r) Nr(e, r, a); + else if ("autofocus" === r) Pt(e, Boolean(a)); + else if (l || "__value" !== r && ("value" !== r || null == a)) + if ("selected" === r && f) Vr(e, a); + else { + var m = r; + s || (m = rr(m)); + var b = "defaultValue" === m || "defaultChecked" === m; + if (null != a || l || b) b || h.includes(m) && (l || "string" != typeof a) ? (e[m] = a, m in i && (i[m] = Y)) : "function" != typeof a && Nr(e, m, a); + else if (i[r] = null, "value" === m || "checked" === m) { + let n = e; + const r = void 0 === t; + if ("value" === m) { + let e = n.defaultValue; + n.removeAttribute(m), n.defaultValue = e, n.value = n.__value = r ? e : null + } else { + let e = n.defaultChecked; + n.removeAttribute(m), n.defaultChecked = e, n.checked = !!r && e + } + } else e.removeAttribute(r) + } + else e.value = e.__value = a + } + } else Sr(e, a, t?.[Ar], n[Ar]), u[r] = a, u[Ar] = n[Ar]; + else _r(e, "http://www.w3.org/1999/xhtml" === e.namespaceURI, a, 0, t?.[Tr], n[Tr]), u[r] = a, u[Tr] = n[Tr] + } + return c && ie(!0), u + }(e, r, c, 0, i, l); + s && o && "value" in c && Cr(e, c.value); + for (let e of Object.getOwnPropertySymbols(a)) c[e] || Sn(a[e]); + for (let t of Object.getOwnPropertySymbols(c)) { + var f = c[t]; + "@attach" !== t.description || r && f === r[t] || (a[t] && Sn(a[t]), a[t] = kn(() => mr(e, () => f))), u[t] = f + } + r = u + }), o) { + var c = e; + mn(() => { + Cr(c, r.value, !0), + function(e) { + var t = new MutationObserver(() => { + Cr(e, e.__value) + }); + t.observe(e, { + childList: !0, + subtree: !0, + attributes: !0, + attributeFilter: ["value"] + }), pn(() => { + t.disconnect() + }) + }(c) + }) + } + s = !0 + }) + } + + function jr(e) { + return e[D] ??= { + [Ir]: e.nodeName.includes("-"), + [Pr]: e.namespaceURI === G + } + } + var Br = new Map; + + function Fr(e) { + var t, n = e.getAttribute("is") || e.nodeName, + r = Br.get(n); + if (r) return r; + Br.set(n, r = []); + for (var a = e, o = Element.prototype; o !== a;) { + for (var i in t = s(a)) t[i].set && "innerHTML" !== i && "textContent" !== i && "innerText" !== i && r.push(i); + a = f(a) + } + return r + } + + function Hr(e, t, n = t) { + var r = new WeakSet; + ! function(e, t, n, r = n) { + e.addEventListener(t, () => Lt(n)); + const a = e[z]; + e[z] = a ? () => { + a(), r(!0) + } : () => r(!0), Rt() + }(e, "input", async a => { + var o = a ? e.defaultValue : e.value; + if (o = Kr(e) ? qr(o) : o, n(o), null !== Ke && r.add(Ke), await on(), o !== (o = t())) { + var i = e.selectionStart, + l = e.selectionEnd, + s = e.value.length; + if (e.value = o ?? "", null !== l) { + var c = e.value.length; + i === l && l === s && c > s ? (e.selectionStart = c, e.selectionEnd = c) : (e.selectionStart = i, e.selectionEnd = Math.min(l, c)) + } + } + }), (oe && e.defaultValue !== e.value || null == un(t) && e.value) && (n(Kr(e) ? qr(e.value) : e.value), null !== Ke && r.add(Ke)), bn(() => { + var n = t(); + if (e === document.activeElement) { + var a = Ke; + if (r.has(a)) return + } + Kr(e) && n === qr(e.value) || ("date" !== e.type || n || e.value) && n !== e.value && (e.value = n ?? "") + }) + } + + function Kr(e) { + var t = e.type; + return "number" === t || "range" === t + } + + function qr(e) { + return "" === e ? null : +e + } + + function Yr(e, t) { + return e === t || e?.[R] === t + } + + function Gr(e = {}, t, n, r) { + var a = W.r, + o = jt; + return mn(() => { + var r, i; + return bn(() => { + r = i, i = [], un(() => { + Yr(n(...i), e) || (t(e, ...i), r && Yr(n(...r), e) && t(null, ...r)) + }) + }), () => { + let r = o; + for (; r !== a && null !== r.parent && r.parent.f & C;) r = r.parent; + const l = r.teardown; + r.teardown = () => { + i && Yr(n(...i), e) && t(null, ...i), l?.() + } + } + }), e + } + const Wr = { + get(e, t) { + if (!e.exclude.includes(t)) return e.props[t] + }, + set: (e, t) => !1, + getOwnPropertyDescriptor(e, t) { + if (!e.exclude.includes(t)) return t in e.props ? { + enumerable: !0, + configurable: !0, + value: e.props[t] + } : void 0 + }, + has: (e, t) => !e.exclude.includes(t) && t in e.props, + ownKeys: e => Reflect.ownKeys(e.props).filter(t => !e.exclude.includes(t)) + }; + + function Jr(e, t, n) { + return new Proxy({ + props: e, + exclude: t + }, Wr) + } + + function Zr(e, t, n, r) { + var a, o = r, + i = !0, + l = () => (i && (i = !1, o = r), o); + void 0 === e[t] && void 0 !== r && l(), a = () => { + var n = e[t]; + return void 0 === n ? l() : (i = !0, n) + }; + var s = !1, + c = pt(() => (s = !1, a())), + u = jt; + return function(e, t) { + if (arguments.length > 0) { + const n = t ? ln(c) : e; + return Et(c, n), s = !0, void 0 !== o && (o = n), e + } + return Dt && s || 0 !== (u.f & $) ? c.v : ln(c) + } + } + class Xr { + #Q; + #ee; + constructor(e) { + var t = new Map, + n = (e, n) => { + var r = Ct(n, !1, !1); + return t.set(e, r), r + }; + const r = new Proxy({ + ...e.props || {}, + $$events: {} + }, { + get: (e, r) => ln(t.get(r) ?? n(r, Reflect.get(e, r))), + has: (e, r) => r === L || (ln(t.get(r) ?? n(r, Reflect.get(e, r))), Reflect.has(e, r)), + set: (e, r, a) => (Et(t.get(r) ?? n(r, a), a), Reflect.set(e, r, a)) + }); + this.#ee = (e.hydrate ? sr : lr)(e.component, { + target: e.target, + anchor: e.anchor, + props: r, + context: e.context, + intro: e.intro ?? !1, + recover: e.recover, + transformError: e.transformError + }), e?.props?.$$host && !1 !== e.sync || nt(), this.#Q = r.$$events; + for (const e of Object.keys(this.#ee)) "$set" !== e && "$destroy" !== e && "$on" !== e && i(this, e, { + get() { + return this.#ee[e] + }, + set(t) { + this.#ee[e] = t + }, + enumerable: !0 + }); + this.#ee.$set = e => { + Object.assign(r, e) + }, this.#ee.$destroy = () => { + ! function(e, t) { + const n = fr.get(e); + n ? (fr.delete(e), n(t)) : Promise.resolve() + }(this.#ee) + } + } + $set(e) { + this.#ee.$set(e) + } + $on(e, t) { + this.#Q[e] = this.#Q[e] || []; + const n = (...e) => t.call(this, ...e); + return this.#Q[e].push(n), () => { + this.#Q[e] = this.#Q[e].filter(e => e !== n) + } + } + $destroy() { + this.#ee.$destroy() + } + } + let Qr = class {}; + + function ea(e, t, n, r) { + const a = n[e]?.type; + if (t = "Boolean" === a && "boolean" != typeof t ? null != t : t, !r || !n[e]) return t; + if ("toAttribute" === r) switch (a) { + case "Object": + case "Array": + return null == t ? null : JSON.stringify(t); + case "Boolean": + return t ? "" : null; + case "Number": + return null == t ? null : t; + default: + return t + } else switch (a) { + case "Object": + case "Array": + return t && JSON.parse(t); + case "Boolean": + default: + return t; + case "Number": + return null != t ? +t : t + } + } + + function ta(e, t, n, r, a, s) { + let c = class extends Qr { + constructor() { + super(e, n, a), this.$$p_d = t + } + static get observedAttributes() { + return o(t).map(e => (t[e].attribute || e).toLowerCase()) + } + }; + return o(t).forEach(e => { + i(c.prototype, e, { + get() { + return this.$$c && e in this.$$c ? this.$$c[e] : this.$$d[e] + }, + set(n) { + n = ea(e, n, t), this.$$d[e] = n; + var r = this.$$c; + if (r) { + var a = l(r, e)?.get; + a ? r[e] = n : r.$set({ + [e]: n + }) + } + } + }) + }), r.forEach(e => { + i(c.prototype, e, { + get() { + return this.$$c?.[e] + } + }) + }), e.element = c, c + } + "function" == typeof HTMLElement && (Qr = class extends HTMLElement { + $$ctor; + $$s; + $$c; + $$cn = !1; + $$d = {}; + $$r = !1; + $$p_d = {}; + $$l = {}; + $$l_u = new Map; + $$me; + $$shadowRoot = null; + constructor(e, t, n) { + super(), this.$$ctor = e, this.$$s = t, n && (this.$$shadowRoot = this.attachShadow(n)) + } + addEventListener(e, t, n) { + if (this.$$l[e] = this.$$l[e] || [], this.$$l[e].push(t), this.$$c) { + const n = this.$$c.$on(e, t); + this.$$l_u.set(t, n) + } + super.addEventListener(e, t, n) + } + removeEventListener(e, t, n) { + if (super.removeEventListener(e, t, n), this.$$c) { + const e = this.$$l_u.get(t); + e && (e(), this.$$l_u.delete(t)) + } + } + async connectedCallback() { + if (this.$$cn = !0, !this.$$c) { + let t = function(e) { + return t => { + const n = Te("slot"); + "default" !== e && (n.name = e), Xn(t, n) + } + }; + if (await Promise.resolve(), !this.$$cn || this.$$c) return; + const n = {}, + r = function(e) { + const t = {}; + return e.childNodes.forEach(e => { + t[e.slot || "default"] = !0 + }), t + }(this); + for (const e of this.$$s) e in r && ("default" !== e || this.$$d.children ? n[e] = t(e) : (this.$$d.children = t(e), n.default = !0)); + for (const e of this.attributes) { + const t = this.$$g_p(e.name); + t in this.$$d || (this.$$d[t] = ea(t, e.value, this.$$p_d, "toProp")) + } + for (const e in this.$$p_d) e in this.$$d || void 0 === this[e] || (this.$$d[e] = this[e], delete this[e]); + this.$$c = (e = { + component: this.$$ctor, + target: this.$$shadowRoot || this, + props: { + ...this.$$d, + $$slots: n, + $$host: this + } + }, new Xr(e)), this.$$me = function(e) { + tt.ensure(); + const t = dn(524352, e); + return () => { + Sn(t) + } + }(() => { + bn(() => { + this.$$r = !0; + for (const e of o(this.$$c)) { + if (!this.$$p_d[e]?.reflect) continue; + this.$$d[e] = this.$$c[e]; + const t = ea(e, this.$$d[e], this.$$p_d, "toAttribute"); + null == t ? this.removeAttribute(this.$$p_d[e].attribute || e) : this.setAttribute(this.$$p_d[e].attribute || e, t) + } + this.$$r = !1 + }) + }); + for (const e in this.$$l) + for (const t of this.$$l[e]) { + const n = this.$$c.$on(e, t); + this.$$l_u.set(t, n) + } + this.$$l = {} + } + var e + } + attributeChangedCallback(e, t, n) { + this.$$r || (e = this.$$g_p(e), this.$$d[e] = ea(e, n, this.$$p_d, "toProp"), this.$$c?.$set({ + [e]: this.$$d[e] + })) + } + disconnectedCallback() { + this.$$cn = !1, Promise.resolve().then(() => { + !this.$$cn && this.$$c && (this.$$c.$destroy(), this.$$me(), this.$$c = void 0) + }) + } + $$g_p(e) { + return o(this.$$p_d).find(t => this.$$p_d[t].attribute === e || !this.$$p_d[t].attribute && t.toLowerCase() === e) || e + } + }); + var na = Yn('
'); + + function ra(e, t) { + Z(t, !0); + let n, r = Zr(t, "loading"), + a = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "loading"]); + var o = { + get loading() { + return r() + }, + set loading(e) { + r(e), nt() + } + }, + i = na(), + l = Se(i); + zr(l, () => ({ + type: "checkbox", + ...a + }), void 0, void 0, void 0, 0, !0), Gr(l, e => n = e, () => n); + var s = Ee(l, 2); + return ue(2), ce(i), yn(() => Nr(i, "data-loading", r())), zn("click", s, function() { + n?.click() + }), Xn(e, i), X(o) + } + jn(["click"]), ta(ra, { + loading: {} + }, [], [], { + mode: "open" + }); + var aa = Yn('
'); + + function oa(e, t) { + Z(t, !0); + let n = Zr(t, "loading"), + r = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "loading"]); + var a = { + get loading() { + return n() + }, + set loading(e) { + n(e), nt() + } + }, + o = aa(); + return zr(Se(o), () => ({ + type: "checkbox", + ...r + }), void 0, void 0, void 0, 0, !0), ue(2), ce(o), yn(() => Nr(o, "data-loading", n())), Xn(e, o), X(a) + } + ta(oa, { + loading: {} + }, [], [], { + mode: "open" + }); + var ia = Yn('
'); + + function la(e, t) { + Z(t, !0); + let n = Zr(t, "strings"); + var r = { + get strings() { + return n() + }, + set strings(e) { + n(e), nt() + } + }, + a = ia(), + o = Se(a); + return Nr(o, "href", "https://altcha.org"), ce(a), yn(() => Nr(o, "aria-label", n().ariaLinkLabel)), Xn(e, a), X(r) + } + ta(la, { + strings: {} + }, [], [], { + mode: "open" + }); + var sa = Yn(''); + + function ca(e, t) { + Z(t, !0); + let n = Zr(t, "logo"), + r = Zr(t, "strings"); + var a = { + get logo() { + return n() + }, + set logo(e) { + n(e), nt() + }, + get strings() { + return r() + }, + set strings(e) { + r(e), nt() + } + }, + o = sa(), + i = Se(o); + gr(i, () => r().footer, !0), ce(i); + var l = Ee(i, 2), + s = e => { + la(e, { + get strings() { + return r() + } + }) + }; + return pr(l, e => { + n() && e(s) + }), ce(o), Xn(e, o), X(a) + } + ta(ca, { + logo: {}, + strings: {} + }, [], [], { + mode: "open" + }); + var ua = Yn('
'); + + function fa(e, t) { + Z(t, !0); + let n, r = Zr(t, "loading"), + a = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "loading"]); + var o = { + get loading() { + return r() + }, + set loading(e) { + r(e), nt() + } + }, + i = ua(), + l = Se(i); + zr(l, () => ({ + type: "checkbox", + ...a + }), void 0, void 0, void 0, 0, !0), Gr(l, e => n = e, () => n); + var s = Ee(l, 2); + return ce(i), yn(() => Nr(i, "data-loading", r())), zn("click", s, function() { + n?.click() + }), Xn(e, i), X(o) + } + jn(["click"]), ta(fa, { + loading: {} + }, [], [], { + mode: "open" + }); + var da = (e => (e.ERROR = "error", e.LOADING = "loading", e.PLAYING = "playing", e.PAUSED = "paused", e.READY = "ready", e))(da || {}), + ha = (e => (e.CODE = "code", e.ERROR = "error", e.VERIFIED = "verified", e.VERIFYING = "verifying", e.UNVERIFIED = "unverified", e.EXPIRED = "expired", e))(ha || {}), + pa = Yn('
'), + va = Yn('
'), + ga = Wn(''), + ma = Wn(''), + ba = Wn(''), + ya = Yn(''), + wa = Yn(''), + xa = Yn('
'); + + function ka(e, t) { + Z(t, !0); + let n = Zr(t, "audioUrl"), + r = Zr(t, "codeChallenge"), + a = Zr(t, "config"), + o = Zr(t, "imageUrl"), + i = Zr(t, "onCancel"), + l = Zr(t, "onReload"), + s = Zr(t, "onSubmit"), + c = Zr(t, "strings"), + u = St(void 0), + f = St(void 0), + d = St(void 0), + h = St(!1), + p = St(""), + v = St(!1); + + function g() { + Et(u, da.PAUSED, !0) + } + + function m(e) { + Et(u, da.ERROR, !0) + } + + function b() { + Et(u, da.READY, !0) + } + + function y() { + Et(u, da.LOADING, !0) + } + + function w() { + Et(u, da.PLAYING, !0) + } + + function x() { + Et(u, da.PAUSED, !0) + } + + function k() { + ln(f) ? ln(u) === da.LOADING || (ln(f).paused ? (n() && ln(f).src !== n() && (ln(f).src = n()), ln(f).currentTime = 0, ln(f).play()) : ln(f).pause()) : (Et(v, !0), requestAnimationFrame(() => { + ln(f) && n() && (ln(f).src = n(), ln(f).play()) + })) + } + hr(() => (a().disableAutoFocus || on().then(() => { + ln(d)?.focus() + }), () => { + ln(f) && (ln(f).pause(), Et(f, void 0)) + })); + var _ = { + get audioUrl() { + return n() + }, + set audioUrl(e) { + n(e), nt() + }, + get codeChallenge() { + return r() + }, + set codeChallenge(e) { + r(e), nt() + }, + get config() { + return a() + }, + set config(e) { + a(e), nt() + }, + get imageUrl() { + return o() + }, + set imageUrl(e) { + o(e), nt() + }, + get onCancel() { + return i() + }, + set onCancel(e) { + i(e), nt() + }, + get onReload() { + return l() + }, + set onReload(e) { + l(e), nt() + }, + get onSubmit() { + return s() + }, + set onSubmit(e) { + s(e), nt() + }, + get strings() { + return c() + }, + set strings(e) { + c(e), nt() + } + }, + $ = xa(), + S = Se($), + C = Se(S), + E = e => { + var t = pa(), + n = Se(t, !0); + ce(t), yn(() => ir(n, c().verificationRequired)), Xn(e, t) + }; + pr(C, e => { + "standard" !== a().codeChallengeDisplay && e(E) + }); + var T = Ee(C, 2), + A = Se(T, !0); + ce(T); + var I = Ee(T, 2), + P = Ee(I, 2), + O = Se(P); + Ur(O), O.disabled = ln(h), Gr(O, e => Et(d, e), () => ln(d)); + var R = Ee(O, 2), + L = e => { + var t = ya(), + n = Se(t), + r = e => { + Xn(e, va()) + }, + a = e => { + Xn(e, ga()) + }, + o = e => { + Xn(e, ma()) + }, + i = e => { + Xn(e, ba()) + }; + pr(n, e => { + ln(u) === da.LOADING ? e(r) : ln(u) === da.ERROR ? e(a, 1) : ln(u) === da.PLAYING ? e(o, 2) : e(i, -1) + }), ce(t), yn(() => { + Nr(t, "title", c().getAudioChallenge), t.disabled = ln(u) === da.LOADING || ln(u) === da.ERROR, Nr(t, "aria-label", ln(u) === da.LOADING ? c().loading : c().getAudioChallenge) + }), Nn("click", t, () => k(), !0), Xn(e, t) + }; + pr(R, e => { + r().audio && e(L) + }); + var M = Ee(R, 2); + ce(P); + var D = Ee(P, 2), + U = Se(D), + V = Se(U, !0); + ce(U); + var N = Ee(U, 2), + z = Se(N, !0); + ce(N), ce(D), ce(S); + var j = Ee(S, 2), + B = e => { + var t = wa(); + Gr(t, e => Et(f, e), () => ln(f)), Nn("error", t, m), Nn("loadstart", t, y), Nn("canplay", t, b), Nn("pause", t, x), Nn("playing", t, w), Nn("ended", t, g), Xn(e, t) + }; + return pr(j, e => { + ln(v) && e(B) + }), ce($), yn(() => { + ir(A, c().enterCodeFromImage), Nr(I, "src", o()), Nr(O, "minlength", r().length || 1), Nr(O, "maxlength", r().length), Nr(O, "placeholder", c().enterCode), Nr(O, "aria-label", ln(u) === da.LOADING ? c().loading : ln(u) === da.PLAYING ? "" : c().enterCodeAria), Nr(O, "aria-live", ln(u) ? "assertive" : "polite"), Nr(O, "aria-busy", ln(u) === da.LOADING), Nr(M, "title", c().reload), Nr(M, "aria-label", c().reload), Nr(U, "aria-label", c().verify), ir(V, c().verify), Nr(N, "aria-label", c().cancel), ir(z, c().cancel) + }), Nn("submit", S, function(e) { + e.preventDefault(), e.stopPropagation(), s()?.(ln(p)) + }, !0), zn("keydown", O, function(e) { + "Space" === e.code ? (e.preventDefault(), e.stopPropagation(), k()) : "Escape" === e.code && (e.preventDefault(), e.stopPropagation(), i()?.()) + }), Hr(O, () => ln(p), e => Et(p, e)), Nn("click", M, () => l()?.(), !0), Nn("click", N, () => i()?.(), !0), Xn(e, $), X(_) + } + jn(["keydown"]), ta(ka, { + audioUrl: {}, + codeChallenge: {}, + config: {}, + imageUrl: {}, + onCancel: {}, + onReload: {}, + onSubmit: {}, + strings: {} + }, [], [], { + mode: "open" + }); + var _a = Yn('
'), + $a = Yn('
'), + Sa = Yn('
×
'), + Ca = Yn('
', 1); + + function Ea(e, t) { + Z(t, !0); + let n = Zr(t, "anchor"), + r = Zr(t, "children"), + a = Zr(t, "display", 0, "standard"), + o = Zr(t, "backdrop", 0, !1), + i = Zr(t, "onClickOutside"), + l = Zr(t, "onClickOutsideDelay", 0, 600), + s = Zr(t, "onClose"), + c = Zr(t, "placement", 0, "auto"), + u = Zr(t, "updateUISignal"), + f = Zr(t, "variant", 0, "neutral"), + d = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "anchor", "children", "display", "backdrop", "onClickOutside", "onClickOutsideDelay", "onClose", "placement", "updateUISignal", "variant"]), + p = St(void 0), + v = St(void 0), + g = St(!1), + m = St(0); + + function b() { + s()?.() + } + + function y() { + if (n() && "auto" === c() && ln(p)) { + const e = n().getBoundingClientRect(), + t = document.documentElement.clientHeight - (e.top + e.height) < ln(p).clientHeight; + ln(g) !== t && Et(g, t) + } + } + vn(() => { + "auto" !== c() && Et(g, "top" === c()) + }), vn(() => { + u() && y() + }), hr(() => { + const e = "bottomsheet" === a() || "overlay" === a(); + return e && (ln(v) && document.body.append(ln(v)), ln(p) && document.body.append(ln(p))), y(), on().then(() => { + Et(m, Date.now(), !0) + }), () => { + e && (ln(v) && document.body.removeChild(ln(v)), ln(p) && document.body.removeChild(ln(p))) + } + }); + var w = { + get anchor() { + return n() + }, + set anchor(e) { + n(e), nt() + }, + get children() { + return r() + }, + set children(e) { + r(e), nt() + }, + get display() { + return a() + }, + set display(e = "standard") { + a(e), nt() + }, + get backdrop() { + return o() + }, + set backdrop(e = !1) { + o(e), nt() + }, + get onClickOutside() { + return i() + }, + set onClickOutside(e) { + i(e), nt() + }, + get onClickOutsideDelay() { + return l() + }, + set onClickOutsideDelay(e = 600) { + l(e), nt() + }, + get onClose() { + return s() + }, + set onClose(e) { + s(e), nt() + }, + get placement() { + return c() + }, + set placement(e = "auto") { + c(e), nt() + }, + get updateUISignal() { + return u() + }, + set updateUISignal(e) { + u(e), nt() + }, + get variant() { + return f() + }, + set variant(e = "neutral") { + f(e), nt() + } + }, + x = Ca(); + Nn("click", ge, function(e) { + const t = e.target; + ln(p)?.contains(t) || l() && !(ln(m) + l() < Date.now()) || i()?.() + }, !0), Nn("resize", ge, function() { + y() + }), Nn("scroll", ge, function() { + y() + }); + var k = Ce(x), + _ = e => { + var t = _a(); + Gr(t, e => Et(v, e), () => ln(v)), Xn(e, t) + }; + pr(k, e => { + o() && e(_) + }); + var $ = Ee(k, 2); + zr($, () => ({ + ...d, + class: `altcha-popover ${(t.class || "") ?? ""}`, + "data-popover": !0, + "data-variant": f(), + "data-top": ln(g), + "data-display": a() + })); + var S = Se($), + C = e => { + Xn(e, $a()) + }; + pr(S, e => { + "standard" === a() && e(C) + }); + var T = Ee(S, 2), + A = e => { + var t = Sa(); + Nn("click", t, b, !0), Xn(e, t) + }; + pr(T, e => { + "standard" !== a() && e(A) + }); + var I = Ee(T, 2); + return function(e, t, ...n) { + var r = new dr(e); + wn(() => { + const e = t() ?? null; + r.ensure(e, e && (t => e(t, ...n))) + }, E) + }(Se(I), () => r() ?? h), ce(I), ce($), Gr($, e => Et(p, e), () => ln(p)), Xn(e, x), X(w) + } + async function Ta(e) { + const { + challenge: t, + concurrency: n = navigator.hardwareConcurrency, + controller: r = new AbortController, + createWorker: a, + onOutOfMemory: o = e => e > 1 ? Math.floor(e / 2) : 0, + counterMode: i, + timeout: l = 9e4 + } = e, s = Math.min(16, Math.max(1, n)), c = [], u = () => { + for (const e of c) e.terminate() + }; + for (let e = 0; e < s; e++) c.push(await a(t.parameters.algorithm)); + let f = null; + try { + f = await Promise.race(c.map((e, n) => (r.signal.addEventListener("abort", () => { + e.postMessage({ + type: "abort" + }) + }), new Promise((r, a) => { + e.addEventListener("error", e => { + a(e) + }), e.addEventListener("message", t => { + if (t.data) { + for (const t of c) t !== e && t.postMessage({ + type: "abort" + }); + if (t.data.error) return a(new Error(t.data.error)) + } + r(t.data) + }), e.postMessage({ + challenge: t, + counterMode: i, + counterStart: n, + counterStep: s, + timeout: l, + type: "work" + }) + })))) + } catch (n) { + if (n instanceof Error && !!n?.message?.includes("Out of memory") && o) { + u(); + const n = o(s); + if (n) return Ta({ + ...e, + challenge: t, + controller: r, + concurrency: n, + createWorker: a + }) + } + throw n + } finally { + u() + } + return r.signal.aborted ? null : f || null + } + ta(Ea, { + anchor: {}, + children: {}, + display: {}, + backdrop: {}, + onClickOutside: {}, + onClickOutsideDelay: {}, + onClose: {}, + placement: {}, + updateUISignal: {}, + variant: {} + }, [], [], { + mode: "open" + }); + class Aa { + TAG_CODES = { + INPUT: 1, + TEXTAREA: 2, + SELECT: 3, + BUTTON: 4, + A: 5, + DETAILS: 6, + SUMMARY: 7, + IFRAME: 8, + VIDEO: 9, + AUDIO: 10 + }; + maxSamples; + sampleInterval; + target; + focusStartTime = 0; + focusInteraction = 0; + focusInteractionTimer = null; + lastPointerSample = 0; + lastTouchSample = 0; + lastScrollSample = 0; + pendingPointer = null; + pendingTouch = null; + focus = []; + pointer = []; + scroll = []; + touch = []; + constructor(e = {}) { + const { + maxSamples: t = 60, + sampleInterval: n = 50, + target: r = window + } = e; + this.maxSamples = t, this.sampleInterval = n, this.target = r, this.attach() + } + destroy() { + const e = { + capture: !0 + }; + this.target.removeEventListener("focusin", this.onFocus, e), this.target.removeEventListener("keydown", this.onInteraction, e), this.target.removeEventListener("pointerdown", this.onInteraction, e), this.target.removeEventListener("pointermove", this.onPointer, e), this.target.removeEventListener("scroll", this.onScroll, e), this.target.removeEventListener("touchmove", this.onTouchMove, e) + } + export () { + return { + focus: this.focus, + maxTouchPoints: navigator.maxTouchPoints || 0, + pointer: this.pointer, + scroll: this.scroll, + time: Date.now(), + touch: this.touch + } + } + attach() { + const e = { + passive: !0, + capture: !0 + }; + this.target.addEventListener("focusin", this.onFocus, e), this.target.addEventListener("keydown", this.onInteraction, e), this.target.addEventListener("pointerdown", this.onInteraction, e), this.target.addEventListener("pointermove", this.onPointer, e), this.target.addEventListener("scroll", this.onScroll, e), this.target.addEventListener("touchmove", this.onTouchMove, e) + } + evict(e) { + e.length > this.maxSamples && e.splice(0, e.length - this.maxSamples) + } + onFocus = e => { + if (2 === this.focusInteraction) return; + const t = e.target; + if (!(t instanceof Element)) return; + const n = performance.now(); + 0 === this.focusStartTime && (this.focusStartTime = n), this.focus.push([Math.round(n - this.focusStartTime), t.tabIndex, this.TAG_CODES[t.tagName] ?? 0, this.focusInteraction ? 1 : 0]), this.evict(this.focus) + }; + onInteraction = e => { + this.focusInteraction = "keyCode" in e ? 1 : 2, this.focusInteractionTimer && clearTimeout(this.focusInteractionTimer), this.focusInteractionTimer = setTimeout(() => { + this.focusInteraction = 0 + }, 100) + }; + onPointer = e => { + if ("touch" === e.pointerType) return; + const t = e.timeStamp || performance.now(); + this.pendingPointer = [Math.round(e.clientX), Math.round(e.clientY), Math.round(t)], t - this.lastPointerSample >= this.sampleInterval && (this.pointer.push(this.pendingPointer), this.lastPointerSample = t, this.pendingPointer = null, this.evict(this.pointer)) + }; + onScroll = () => { + const e = performance.now(); + e - this.lastScrollSample < this.sampleInterval || (this.scroll.push([Math.round(window.scrollY), Math.round(e)]), this.lastScrollSample = e, this.evict(this.scroll)) + }; + onTouchMove = e => { + const t = e.timeStamp || performance.now(), + n = e.touches[0]; + n && (this.pendingTouch = [Math.round(n.clientX), Math.round(n.clientY), Math.round(t), Math.round(1e3 * n.force) / 1e3, Math.round(n.radiusX || 0), Math.round(n.radiusY || 0)], t - this.lastTouchSample >= this.sampleInterval && (this.touch.push(this.pendingTouch), this.lastTouchSample = t, this.pendingTouch = null, this.evict(this.touch))) + } + } + var Ia = Yn('
'), + Pa = Yn('
'), + Oa = Yn('
×
', 1), + Ra = Yn('
'), + La = Yn(''), + Ma = Yn('
Secure context (HTTPS) required.
'), + Da = Yn('
'), + Ua = Yn('
'), + Va = Yn(" ", 1), + Na = Yn('
', 1); + "undefined" != typeof window && window.customElements && !customElements.get("altcha-widget") && customElements.define("altcha-widget", ta(function(e, t) { + Z(t, !0); + const [n, r] = function() { + const e = {}; + return [e, function() { + pn(() => { + for (var t in e) e[t].unsubscribe(); + i(e, je, { + enumerable: !1, + value: !0 + }) + }) + }] + }(), a = ["ar", "fa", "he", "ur"], { + isSecureContext: o + } = globalThis, { + store: l + } = globalThis.$altcha.defaults, s = navigator.hardwareConcurrency || 2, c = navigator.deviceMemory || 0, u = c && c <= 4 ? Math.min(4, s) : s, f = globalThis.$altcha.i18n.store, d = t.$$host, h = (e, t) => { + on().then(() => { + d?.dispatchEvent(new CustomEvent(e, { + detail: t + })) + }) + }; + let p = null, + v = St(he(new URL(location.origin))), + g = St(!1), + m = St(null), + b = St(null), + y = St(null), + w = St(he(ha.UNVERIFIED)), + x = St(void 0), + k = St(void 0), + _ = St(null), + $ = St(void 0), + S = St(null), + C = St(null), + T = St(null), + A = St(null), + I = St(he([])), + P = St(0), + O = St(he({})), + R = St(!0); + const L = mt(() => ({ + fetch: (e, t) => fetch(e, t), + audioChallengeLanguage: "", + auto: "off", + barPlacement: "bottom", + challenge: "", + codeChallenge: null, + codeChallengeDisplay: "standard", + credentials: null, + debug: !1, + disableAutoFocus: !1, + display: "standard", + floatingAnchor: "", + floatingOffset: 8, + floatingPersist: !1, + floatingPlacement: "auto", + hideFooter: !1, + hideLogo: !1, + humanInteractionSignature: !0, + language: "", + mockError: !1, + minDuration: 500, + overlayContent: "", + name: "altcha", + popoverPlacement: "auto", + retryOnOutOfMemoryError: !0, + setCookie: null, + serverVerificationFields: !1, + serverVerificationTimeZone: !1, + test: !1, + timeout: 9e4, + type: "checkbox", + validationMessage: "", + verifyFunction: null, + verifyUrl: "", + workers: u, + ...Be(l, "$altchaDefaults", n), + ...ln(O) + })), + M = mt(() => `altcha-checkbox-${t.id || Math.floor(1e12 * Math.random()).toString(16)}`), + D = mt(() => function(e) { + switch (e) { + case "checkbox": + return ra; + case "switch": + return fa; + default: + return oa + } + }(ln(L).type)), + U = mt(() => ln(L).auto), + V = mt(() => ln(w) === ha.VERIFYING), + N = mt(() => !ln(L).hideFooter), + z = mt(() => !ln(L).hideLogo && "bar" !== ln(L).display), + j = mt(() => function(e, t) { + const n = Object.keys(e).map(e => e.toLowerCase()); + let r = t.reduce((t, r) => (r = r.toLowerCase(), t || (e[r] ? r : null) || n.find(e => r.split("-")[0] === e.split("-")[0]) || null), null); + e[r || ""] || (r = "en"); + return { + language: r, + strings: e[r] + } + }(Be(f, "$altchaI18nStore", n), [ln(L).language, document.documentElement.lang, ...navigator.languages])), + B = mt(() => a.includes(ln(j).language) ? "rtl" : void 0), + F = mt(() => ({ + ...ln(j).strings + })), + H = mt(() => ln(m)?.audio?.match(/^(https?:)?\//) ? Q(ln(m).audio, ln(v), { + language: ln(L).audioChallengeLanguage || ln(j).language + }).toString() : ln(m)?.audio), + K = mt(() => ln(m)?.image?.match(/^(https?:)?\//) ? Q(ln(m).image, ln(v)) : ln(m)?.image); + async function q(e, ...t) { + let n; + for (const r of ln(I)) n = await r[e].call(r, ...t); + return n + } + async function Y(e) { + await new Promise(t => setTimeout(t, e)) + } + async function G(e = ln(L).challenge, t) { + const n = await q("onFetchChallenge", e); + let r = null; + if (void 0 !== n) return n; + if ("string" == typeof e) + if (e.startsWith("{")) { + _e("parsing JSON challenge"); + try { + r = JSON.parse(e) + } catch { + throw new Error("Unable to parse JSON challenge.") + } + } else { + _e("fetching challenge from", t?.method || "GET", e), Et(v, new URL(e, location.origin), !0); + const n = await ln(L).fetch(e, { + credentials: ln(L).credentials || void 0, + ...t + }); + await ye(n); + const a = n.headers.get("x-altcha-config"); + a && function(e) { + try { + const t = JSON.parse(e); + t && "object" == typeof t && xe({ + serverVerificationFields: t?.sentinel?.fields, + serverVerificationTimeZone: t?.sentinel?.timeZone, + verifyUrl: t.verifyurl, + ...t + }) + } catch (e) { + _e("unable to configure from x-altcha-config header", e) + } + }(a); + const o = await n.json(); + if (o && "his" in o && o.his) { + if (_e("requested HIS"), !p) throw new Error("Server requested HIS data but collector is disabled."); + return G(Q(o.his.url, ln(v)), { + body: JSON.stringify({ + his: p.export() + }), + headers: { + "content-type": "application/json" + }, + method: "POST" + }) + } + o && "hisResult" in o && o.hisResult && _e("HIS result", o.hisResult), r = o + } + else if (e && "object" == typeof e) try { + r = JSON.parse(JSON.stringify(e)) + } catch { + throw new Error("Unable to parse JSON challenge.") + } + if (function(e) { + return "object" == typeof e && "challenge" in e + }(r) && (r = function(e) { + const [t, n] = e.salt.split("?"), r = {}; + if (n) try { + Object.assign(r, Object.fromEntries(new URLSearchParams(n).entries())) + } catch {} + const a = { + codeChallenge: e.codeChallenge, + parameters: { + algorithm: e.algorithm, + cost: 1, + data: r, + expiresAt: r?.expires ? parseInt(r.expires, 10) : void 0, + keyLength: "SHA-512" === e.algorithm ? 64 : "SHA-384" === e.algorithm ? 48 : 32, + nonce: (o = (new TextEncoder).encode(e.salt), Array.from(new Uint8Array(o)).map(e => e.toString(16).padStart(2, "0")).join("")), + keyPrefix: e.challenge, + salt: "" + }, + signature: e.signature + }; + var o; + return Object.defineProperties(a, { + _originalSalt: { + enumerable: !1, + value: e.salt, + writable: !1 + }, + _version: { + enumerable: !1, + value: 1, + writable: !1 + } + }), a + }(r)), ! function(e) { + return !!e && "object" == typeof e && "parameters" in e && !!e.parameters && "object" == typeof e.parameters && "algorithm" in e.parameters && "nonce" in e.parameters && "salt" in e.parameters && "keyPrefix" in e.parameters + }(r)) throw new Error("Challenge validation failed."); + return r + } + + function W() { + return document.getElementById(ln(M)) + } + + function J() { + try { + return Intl.DateTimeFormat().resolvedOptions().timeZone + } catch {} + } + + function Q(e, t, n) { + const r = new URL(e, t); + if (r.search || (r.search = t.search), n) + for (const e in n) void 0 !== n[e] && null !== n[e] && r.searchParams.set(e, n[e]); + return r.toString() + } + + function ee(e) { + !ln(g) && e.currentTarget.checked ? (e.preventDefault(), e.currentTarget.checked = !1, ln(w) !== ha.VERIFYING && Pe()) : e.currentTarget.checked || (e.preventDefault(), $e()) + } + + function te(e) { + ln(w) === ha.VERIFYING ? e.currentTarget.setCustomValidity(ln(F).waitAlert) : ln(L).validationMessage && e.currentTarget.setCustomValidity(ln(L).validationMessage) + } + + function ne() { + be(ln(L).display), $e() + } + + function re(e) { + "onfocus" === ln(U) && ln(w) === ha.UNVERIFIED && Pe() + } + + function ue() { + be(ln(L).display), $e() + } + + function pe(e) { + const t = e.target; + "true" !== t?.getAttribute("data-code-challenge") && "onsubmit" === ln(U) && ln(w) === ha.UNVERIFIED && (e.preventDefault(), e.stopPropagation(), Et(S, e.submitter, !0), Ae(), Pe().then(e => { + e && !ln(m) && on().then(() => { + ve(ln(S)) + }) + })) + } + + function ve(e) { + ln(_) && "requestSubmit" in ln(_) ? ln(_).requestSubmit(e) : ln(_)?.reportValidity() && (e ? e.click() : ln(_).submit()) + } + + function be(e) { + switch (e) { + case "bar": + case "floating": + case "overlay": + ke(), ln(U) && "off" !== ln(U) || (ln(O).auto = "onsubmit"); + break; + case "standard": + Ae() + } + ln(y) !== e && Et(y, e, !0) + } + async function ye(e) { + if (e.status >= 400) { + if (e.headers.get("content-type")?.includes("/json")) { + let t; + try { + t = await e.json() + } catch {} + if (t && "error" in t) throw new Error(`Server responded with ${e.status} - ${t.error}`) + } + throw new Error(`Server responded with ${e.status}.`) + } + const t = e.headers.get("content-type"); + if (!t || !t.includes("/json")) throw new Error(`Server responded with invalid content-type. Expected application/json, received ${t}.`) + } + async function we(e) { + if (!ln(A)) return void Te(ha.ERROR, "Cannot verify code challenge without PoW payload."); + Te(ha.VERIFYING); + let t = null; + if (ln(L).verifyUrl) t = await async function(e, t) { + const n = await q("onRequestServerVerification", e, t); + if (void 0 !== n) return n; + if (_e("requesting server verification from", ln(L).verifyUrl), !ln(L).verifyUrl) throw new Error("Parameter verifyUrl must be set for server verification."); + const r = await ln(L).fetch(Q(ln(L).verifyUrl, ln(v)), { + body: JSON.stringify({ + code: t, + fields: ln(L).serverVerificationFields ? [...ln(_)?.querySelectorAll('input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])') || []].reduce((e, t) => { + const n = t.name, + r = t.value; + return n && r && (e[n] = /\n/.test(r) ? r.replace(new RegExp("(? { + ve(ln(S)) + })) : Te(ha.ERROR, t?.reason || "Verification failed."), ln(L).disableAutoFocus || W()?.focus() + } + + function xe(e) { + Object.assign(ln(O), { + ...Object.fromEntries(Object.entries(e).filter(([e, t]) => void 0 !== t)) + }) + } + + function ke() { + Et(R, !1) + } + + function _e(...e) { + (ln(L).debug || e.some(e => e instanceof Error)) && console[e[0] instanceof Error ? "error" : "log"]("ALTCHA", `[name=${ln(L).name}]`, ...e) + } + + function $e(e = ha.UNVERIFIED, t = null) { + Et(g, !1), Et(C, t, !0), Et(A, null), ln(b) && ln(b).abort(), ln(T) && (clearTimeout(ln(T)), Et(T, null)), Te(e) + } + + function Te(e, t = null) { + Et(w, e, !0), Et(C, t, !0), h("statechange", { + payload: ln(A), + state: ln(w) + }) + } + + function Ae() { + Et(R, !0), on().then(() => { + Ie() + }) + } + + function Ie() { + if ("floating" === ln(L).display) return function(e = 20) { + if (!ln($)) return; + const t = ln(L).floatingPlacement; + if (!ln(k) && (Et(k, (ln(L).floatingAnchor instanceof HTMLElement ? ln(L).floatingAnchor : ln(L).floatingAnchor ? document.querySelector(ln(L).floatingAnchor) : ln(_)?.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])')) || ln(_), !0), !ln(k))) return void _e("unable to find floating anchor element"); + const n = parseInt(ln(L).floatingOffset, 10) || 12, + r = ln(k).getBoundingClientRect(), + a = ln($).getBoundingClientRect(), + o = document.documentElement.clientHeight, + i = document.documentElement.clientWidth, + l = t && "auto" !== t ? "top" === t : r.bottom + a.height + n + e > o, + s = Math.max(e, Math.min(i - e - a.width, r.left + r.width / 2 - a.width / 2)); + if (ln($).style.setProperty("--altcha-floating-left", `${s}px`), ln($).style.setProperty("--altcha-floating-top", l ? r.top - (a.height + n) + "px" : `${r.bottom + n}px`), ln($).setAttribute("data-floating-position", l ? "top" : "bottom"), ln(x)) { + const e = ln(x).getBoundingClientRect(); + ln(x).style.left = r.left - s + r.width / 2 - e.width / 2 + "px" + } + }(); + Et(P, ln(P) + 1) + } + async function Pe(e = {}) { + const { + concurrency: t = Math.max(1, ln(L).workers), + controller: n = new AbortController, + minDuration: r = ln(L).minDuration + } = e, a = performance.now(); + let i = null, + l = null, + s = !1; + const c = await q("onVerify", e); + if (void 0 !== c) return c; + $e(ha.VERIFYING), Et(b, n, !0); + try { + if (!o) throw new Error("Secure context (HTTPS) required."); + if (ln(L).mockError) throw new Error("Mock error."); + if (ln(L).test) return _e("running test mode with null challenge"), await Y(Math.max(0, r - (performance.now() - a))), ln(b)?.signal.aborted ? ($e(), null) : (Et(A, btoa(JSON.stringify({ + challenge: null, + solution: null, + test: !0 + })), !0), _e("verified"), Te(ha.VERIFIED), h("verified", { + payload: ln(A) + }), { + payload: ln(A) + }); + if (i = await G(), !i) throw new Error("Failed to fetch challenge."); + _e("challenge", i), "configuration" in i && (_e("re-configuring from challenge", i.configuration), xe(i.configuration)), i.parameters.expiresAt && function(e) { + ln(T) && clearTimeout(ln(T)); + const t = () => { + ln(w) !== ha.UNVERIFIED ? (Et(g, !1), Te(ha.EXPIRED)) : $e(), h("expired") + }, + n = 1e3 * e - Date.now(); + n >= 1 ? Et(T, setTimeout(t, n), !0) : t() + }(i.parameters.expiresAt), s = "_version" in i && 1 === i._version; + const e = globalThis.$altcha.algorithms.get(i.parameters.algorithm); + if (!e) throw new Error(`Unsupported algorithm ${i.parameters.algorithm}.`); + if (l = await Ta({ + challenge: i, + concurrency: t, + controller: n, + createWorker: e, + counterMode: s ? "string" : "uint32", + onOutOfMemory: e => { + if (_e("out of memory error received"), h("outofmemory"), ln(L).retryOnOutOfMemoryError && e > 1) { + const t = Math.floor(e / 2); + return _e(`retrying with ${t} workers...`), t + } + }, + timeout: ln(L).timeout + }), ln(b)?.signal.aborted) return $e(), null; + if (!l) throw new Error("Failed to find solution."); + _e("solution", l), await Y(Math.max(0, r - (performance.now() - a))), Et(m, i.codeChallenge || ln(L).codeChallenge || null, !0), Et(A, s ? btoa(JSON.stringify(function(e, t) { + return { + algorithm: e.parameters.algorithm, + challenge: e.parameters.keyPrefix, + number: t.counter, + salt: "_originalSalt" in e ? e._originalSalt : e.parameters.nonce, + signature: e.signature, + took: t.time || 0 + } + }(i, l))) : btoa(JSON.stringify({ + challenge: { + parameters: i.parameters, + signature: i.signature + }, + solution: l + })), !0), ln(m) ? (_e("requesting code verification"), Te(ha.CODE), h("codechallenge", { + codeChallenge: ln(m) + })) : ln(L).verifyUrl ? await we() : (_e("verified"), Te(ha.VERIFIED), h("verified", { + payload: ln(A) + })) + } catch (e) { + return _e("verification failed", e), Te(ha.ERROR, String(e)), null + } finally { + Et(b, null) + } + return { + challenge: i, + payload: ln(A), + solution: l + } + } + vn(() => { + xe({ + auto: t.auto, + challenge: t.challenge, + display: t.display, + language: t.language, + name: t.name, + type: t.type, + workers: t.workers + }) + }), vn(() => { + if (t.configuration) try { + xe(JSON.parse(t.configuration)) + } catch { + _e("unable to parse the `configuration` attribute (JSON expected)") + } + }), vn(() => { + ln(y) !== ln(L).display && be(ln(L).display) + }), vn(() => { + ln(g) && ln(w) === ha.VERIFYING && Et(g, !1) + }), vn(() => { + ln(g) || ln(w) !== ha.VERIFIED || Et(g, !0) + }), vn(() => { + if (!ln(g)) { + const e = W(); + e && e.checked && (e.checked = !1) + } + }), vn(() => { + ln(w) === ha.VERIFIED && W()?.setCustomValidity("") + }), vn(() => { + if ("onload" === ln(U)) { + const e = setTimeout(() => { + Pe() + }, 1); + return () => { + e && clearTimeout(e) + } + } + }), vn(() => { + ln(C) && _e("error:", ln(C)) + }), vn(() => { + ln(A) && ln(L).setCookie && function(e, t = {}) { + const { + domain: n, + name: r = ln(L).name, + maxAge: a, + path: o, + sameSite: i, + secure: l + } = t; + let s = `${encodeURIComponent(r)}=${encodeURIComponent(e)}`; + n && (s += `; Domain=${n}`); + null != a && (s += `; Max-Age=${a}`); + o && (s += `; Path=${o}`); + i && (s += `; SameSite=${i}`); + l && (s += "; Secure"); + document.cookie = s + }(ln(A), ln(L).setCookie) + }), hr(() => (_e("mounted", "3.0.11"), d && globalThis.$altcha.instances.add(d), Et(_, ln($)?.closest("form"), !0), ln(_)?.addEventListener("reset", ue), ln(_)?.addEventListener("submit", pe, { + capture: !0 + }), ln(_)?.addEventListener("focusin", re), function() { + Et(I, [...globalThis.$altcha.plugins].map(e => new e(d)), !0), _e("activating plugins", ln(I).map(e => e.constructor.name)); + for (const e of ln(I)) e.activate() + }(), ln(L).humanInteractionSignature && (_e("human interaction signature enabled"), p = new Aa), h("load"), o || _e("secure context (HTTPS) required"), () => { + ! function() { + for (const e of ln(I)) e.destroy() + }(), d && globalThis.$altcha.instances.delete(d), ln(T) && clearTimeout(ln(T)), ln(_)?.removeEventListener("reset", ue), ln(_)?.removeEventListener("submit", pe, { + capture: !0 + }), ln(_)?.removeEventListener("focusin", re), p?.destroy() + })); + var Oe = { + configure: xe, + getConfiguration: function() { + return { + ...ln(L) + } + }, + getState: function() { + return ln(w) + }, + hide: ke, + log: _e, + reset: $e, + setState: Te, + show: Ae, + updateUI: Ie, + verify: Pe + }, + Re = Na(); + Nn("scroll", me, function() { + Ie() + }), Nn("click", me, function(e) { + const t = e.target; + "floating" !== ln(L).display || !t || d?.contains(t) || t.hasAttribute("data-backdrop") || t.closest("[data-popover]") || ln(w) === ha.VERIFIED || ln(L).floatingPersist || ke() + }), Nn("pageshow", ge, function(e) { + e.persisted && (be(ln(L).display), $e()) + }), Nn("resize", ge, function() { + Ie() + }); + var Le = Ce(Re), + Me = e => { + Xn(e, Ia()) + }; + pr(Le, e => { + "overlay" === ln(L).display && ln(R) && e(Me) + }); + var De = Ee(Le, 2), + Ue = Se(De), + Ve = e => { + var t = Oa(), + n = Ce(t), + r = Ee(n, 2), + a = e => { + var t = Pa(); + gr(t, () => document.querySelector(ln(L).overlayContent)?.innerHTML, !0), ce(t), Xn(e, t) + }; + pr(r, e => { + ln(L).overlayContent && e(a) + }), Nn("click", n, ne, !0), Xn(e, t) + }; + pr(Ue, e => { + "overlay" === ln(L).display && ln(R) && e(Ve) + }); + var Ne = Ee(Ue, 2), + ze = Se(Ne), + Fe = Se(ze), + He = Se(Fe); + { + let e = mt(() => "standard" === ln(L).display && "onsubmit" !== ln(U) || ln(w) === ha.VERIFYING); + ! function(e, t, n) { + var r; + oe && (r = ae, se()); + var a = new dr(e); + wn(() => { + var e = t() ?? null; + if (oe && "[" === de(r) != (null !== e)) { + var o = fe(); + return le(o), a.anchor = o, ie(!1), a.ensure(e, e && (t => n(t, e))), void ie(!0) + } + a.ensure(e, e && (t => n(t, e))) + }, E) + }(He, () => ln(D), (t, n) => { + n(t, { + get id() { + return ln(M) + }, + name: "", + get required() { + return ln(e) + }, + get loading() { + return ln(V) + }, + get checked() { + return ln(g) + }, + onchange: ee, + oninvalid: te + }) + }) + } + var Ke = Ee(He, 2), + qe = Se(Ke), + Ye = e => { + var t = Jn(); + yn(() => ir(t, ln(F).verificationRequired)), Xn(e, t) + }, + Ge = e => { + var t = Jn(); + yn(() => ir(t, ln(F).verifying)), Xn(e, t) + }, + We = e => { + var t = Jn(); + yn(() => ir(t, ln(F).verified)), Xn(e, t) + }, + Je = e => { + var t = Jn(); + yn(() => ir(t, ln(F).label)), Xn(e, t) + }; + pr(qe, e => { + ln(w) === ha.CODE && ln(m) ? e(Ye) : ln(w) === ha.VERIFYING ? e(Ge, 1) : ln(w) === ha.VERIFIED ? e(We, 2) : e(Je, -1) + }), ce(Ke), ce(Fe); + var Ze = Ee(Fe, 2), + Xe = e => { + la(e, { + get strings() { + return ln(F) + } + }) + }; + pr(Ze, e => { + ln(z) && e(Xe) + }), ce(ze); + var Qe = Ee(ze, 2), + et = e => { + { + let t = mt(() => "bar" === ln(L).display && ln(z)); + ca(e, { + get logo() { + return ln(t) + }, + get strings() { + return ln(F) + } + }) + } + }; + pr(Qe, e => { + ln(N) && e(et) + }); + var tt = Ee(Qe, 2), + nt = e => { + var t = Ra(); + Gr(t, e => Et(x, e), () => ln(x)), Xn(e, t) + }; + pr(tt, e => { + "floating" === ln(L).display && e(nt) + }); + var rt = Ee(tt, 2), + at = e => { + var t = La(); + Ur(t), yn(() => { + var e, n, r; + Nr(t, "name", ln(L).name), e = t, n = ln(A), (r = jr(e)).value !== (r.value = n ?? void 0) && (e.value !== n || 0 === n && e.nodeName === Dr) && (e.value = n ?? "") + }), Xn(e, t) + }; + pr(rt, e => { + ln(L).setCookie || e(at) + }), ce(Ne); + var ot = Ee(Ne, 2), + it = e => { + Ea(e, { + get anchor() { + return ln($) + }, + onClickOutside: () => { + o && $e() + }, + get placement() { + return ln(L).popoverPlacement + }, + role: "alert", + variant: "error", + get dir() { + return ln(B) + }, + get updateUISignal() { + return ln(P) + }, + children: (e, t) => { + var n = Zn(), + r = Ce(n), + a = e => { + Xn(e, Ma()) + }, + i = e => { + var t = Da(), + n = Se(t, !0); + ce(t), yn(() => ir(n, ln(F).expired)), Xn(e, t) + }, + l = e => { + var t = Ua(), + n = Se(t, !0); + ce(t), yn(() => { + Nr(t, "title", ln(C)), ir(n, ln(F).error) + }), Xn(e, t) + }; + pr(r, e => { + ln(C) || o ? ln(C) || ln(w) !== ha.EXPIRED ? e(l, -1) : e(i, 1) : e(a) + }), Xn(e, n) + }, + $$slots: { + default: !0 + } + }) + }, + lt = e => { + var t = Zn(); + ! function(e, t, n) { + oe && se(); + var r = new dr(e); + wn(() => { + var e = t(); + e != e && (e = vr), r.ensure(e, n) + }) + }(Ce(t), () => ln(m), e => { + { + let t = mt(() => "standard" !== ln(L).codeChallengeDisplay); + Ea(e, { + get anchor() { + return ln($) + }, + get backdrop() { + return ln(t) + }, + get display() { + return ln(L).codeChallengeDisplay + }, + onClose: () => { + $e() + }, + get placement() { + return ln(L).popoverPlacement + }, + role: "dialog", + get "aria-label"() { + return ln(F).verificationRequired + }, + get dir() { + return ln(B) + }, + get updateUISignal() { + return ln(P) + }, + children: (e, t) => { + var n = Va(), + r = Ce(n); + ka(r, { + get audioUrl() { + return ln(H) + }, + get imageUrl() { + return ln(K) + }, + onCancel: () => $e(), + onReload: () => Pe(), + onSubmit: e => we(e), + get codeChallenge() { + return ln(m) + }, + get config() { + return ln(L) + }, + get strings() { + return ln(F) + } + }); + var a = Ee(r, 2), + o = e => { + ca(e, { + get logo() { + return ln(z) + }, + get strings() { + return ln(F) + } + }) + }; + pr(a, e => { + ln(N) && "standard" !== ln(L).codeChallengeDisplay && e(o) + }), Xn(e, n) + }, + $$slots: { + default: !0 + } + }) + } + }), Xn(e, t) + }; + pr(ot, e => { + ln(C) || ln(w) === ha.EXPIRED || !o ? e(it) : ln(m) && ln(w) === ha.CODE && e(lt, 1) + }), ce(De), Gr(De, e => Et($, e), () => ln($)), yn(e => { + Nr(De, "data-state", ln(w)), Nr(De, "data-display", ln(L).display || void 0), Nr(De, "data-placement", e), Nr(De, "data-visible", ln(R) || void 0), Nr(De, "dir", ln(B)), Nr(Ke, "for", ln(M)), De.dir = De.dir + }, [() => function(e) { + switch (e) { + case "bar": + return ln(L).barPlacement || "bottom"; + case "floating": + return ln(L).floatingPlacement || "auto"; + default: + return + } + }(ln(L).display)]), Xn(e, Re); + var st = X(Oe); + return r(), st + }, { + auto: { + type: "String" + }, + challenge: { + type: "String" + }, + configuration: { + type: "String" + }, + display: { + type: "String" + }, + language: { + type: "String" + }, + name: { + type: "String" + }, + theme: { + type: "String" + }, + type: { + type: "String" + }, + workers: { + type: "Number" + } + }, [], ["configure", "getConfiguration", "getState", "hide", "log", "reset", "setState", "show", "updateUI", "verify"])); + const za = '(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n function getDigest(algorithm) {\n switch (algorithm) {\n case "PBKDF2/SHA-512":\n return "SHA-512";\n case "PBKDF2/SHA-384":\n return "SHA-384";\n case "PBKDF2/SHA-256":\n default:\n return "SHA-256";\n }\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, cost, keyLength = 32 } = parameters;\n const passwordKey = await crypto.subtle.importKey(\n "raw",\n password,\n { name: "PBKDF2" },\n false,\n ["deriveKey"]\n );\n const derivedKey = await crypto.subtle.deriveKey(\n {\n name: "PBKDF2",\n salt,\n iterations: cost,\n hash: getDigest(algorithm)\n },\n passwordKey,\n { name: "AES-GCM", length: keyLength * 8 },\n true,\n ["encrypt"]\n );\n return {\n derivedKey: new Uint8Array(await crypto.subtle.exportKey("raw", derivedKey))\n };\n }\n handler({\n deriveKey\n });\n})();\n', + ja = "undefined" != typeof self && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", za], { + type: "text/javascript;charset=utf-8" + }); + + function Ba(e) { + let t; + try { + if (t = ja && (self.URL || self.webkitURL).createObjectURL(ja), !t) throw ""; + const n = new Worker(t, { + name: e?.name + }); + return n.addEventListener("error", () => { + (self.URL || self.webkitURL).revokeObjectURL(t) + }), n + } catch (t) { + return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(za), { + name: e?.name + }) + } + } + const Fa = '(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, keyLength = 32 } = parameters;\n const iterations = Math.max(1, parameters.cost);\n let data = void 0;\n let derivedKey = void 0;\n for (let i = 0; i < iterations; i++) {\n if (i === 0) {\n data = concatBuffers(salt, password);\n } else {\n data = derivedKey;\n }\n derivedKey = new Uint8Array(\n (await crypto.subtle.digest(algorithm, data)).slice(0, keyLength)\n );\n }\n return {\n parameters: {},\n derivedKey\n };\n }\n handler({\n deriveKey\n });\n})();\n', + Ha = "undefined" != typeof self && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", Fa], { + type: "text/javascript;charset=utf-8" + }); + + function Ka(e) { + let t; + try { + if (t = Ha && (self.URL || self.webkitURL).createObjectURL(Ha), !t) throw ""; + const n = new Worker(t, { + name: e?.name + }); + return n.addEventListener("error", () => { + (self.URL || self.webkitURL).revokeObjectURL(t) + }), n + } catch (t) { + return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(Fa), { + name: e?.name + }) + } + }! function(e, t = "altcha-css") { + if ("undefined" != typeof document && document && !document.getElementById(t)) { + const n = document.createElement("style"); + n.id = t, n.textContent = e; + const r = document.currentScript?.nonce ?? document.querySelector('meta[name="csp-nonce"]')?.content; + r && (n.nonce = r), document.head.appendChild(n) + } + }(':root {\n --altcha-border-color: var(--altcha-color-neutral);\n --altcha-border-width: 1px;\n --altcha-border-radius: 6px;\n --altcha-color-base: light-dark(oklch(100% 0.00011 271.152), oklch(20.904% 0.00002 271.152));\n --altcha-color-base-content: light-dark(\n \toklch(20.904% 0.00002 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-error: oklch(51.284% 0.20527 28.678);\n --altcha-color-error-content: oklch(100% 0.00011 271.152);\n --altcha-color-neutral: light-dark(oklch(83.591% 0.0001 271.152), oklch(46.04% 0.00005 271.152));\n --altcha-color-neutral-content: light-dark(\n \toklch(46.76% 0.00005 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-primary: oklch(40.279% 0.2449 268.131);\n --altcha-color-primary-content: oklch(100% 0.00011 271.152);\n --altcha-color-success: oklch(55.748% 0.18968 142.511);\n --altcha-color-success-content: oklch(100% 0.00011 271.152);\n --altcha-checkbox-border-color: light-dark(\n \toklch(66.494% 0.00233 15.434),\n \toklch(51.028% 0.00006 271.152)\n );\n --altcha-checkbox-border-radius: 5px;\n --altcha-checkbox-border-width: var(--altcha-border-width);\n --altcha-checkbox-outline: 2px solid var(--altcha-checkbox-outline-color);\n --altcha-checkbox-outline-color: -webkit-focus-ring-color;\n --altcha-checkbox-outline-offset: 2px;\n --altcha-checkbox-size: 22px;\n --altcha-checkbox-transition-duration: var(--altcha-transition-duration);\n --altcha-input-background-color: var(--altcha-color-base);\n --altcha-input-border-radius: 3px;\n --altcha-input-border-width: 1px;\n --altcha-input-color: var(--altcha-color-base-content);\n --altcha-max-width: 320px;\n --altcha-padding: 0.75rem;\n --altcha-popover-arrow-size: 6px;\n --altcha-popover-color: var(--altcha-border-color);\n --altcha-shadow: drop-shadow(3px 3px 6px oklch(0% 0 0 / 0.2));\n --altcha-spinner-color: var(--altcha-color-base-content);\n --altcha-switch-background-color: var(--altcha-color-neutral);\n --altcha-switch-border-radius: calc(infinity * 1px);\n --altcha-switch-height: var(--altcha-checkbox-size);\n --altcha-switch-padding: 0.25rem;\n --altcha-switch-width: calc(var(--altcha-checkbox-size) * 1.75);\n --altcha-switch-toggle-border-radius: 100%;\n --altcha-switch-toggle-color: var(--altcha-color-neutral-content);\n --altcha-switch-toggle-size: calc(\n \tvar(--altcha-switch-height) - calc(var(--altcha-switch-padding) * 2)\n );\n --altcha-transition-duration: 0.6s;\n --altcha-z-index: 99999999;\n --altcha-z-index-popover: 999999999;\n}\n\n@supports (-moz-appearance: none) {\n :root {\n --altcha-checkbox-outline-color: var(--altcha-color-primary);\n }\n}\n.altcha {\n all: revert-layer;\n display: none;\n font-family: inherit;\n font-size: inherit;\n position: relative;\n}\n.altcha[data-visible] {\n display: block;\n}\n.altcha-popover, .altcha-popover * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha a, .altcha-popover a {\n color: currentColor;\n text-decoration: none;\n}\n.altcha a:hover, .altcha-popover a:hover {\n color: currentColor;\n}\n.altcha-main {\n align-items: start;\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width, 1px) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius, 0);\n color: var(--altcha-color-base-content);\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: space-between;\n padding: var(--altcha-padding);\n max-width: var(--altcha-max-width, 100%);\n}\n.altcha-main > * {\n display: flex;\n width: 100%;\n}\n.altcha-main > *:first-child {\n flex-grow: 1;\n}\n.altcha-checkbox-wrap {\n align-items: center;\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n gap: 0.5rem;\n}\n.altcha-checkbox-wrap > * {\n display: flex;\n}\n.altcha-logo {\n opacity: 0.7;\n}\n.altcha-footer {\n align-items: center;\n display: flex;\n flex-grow: 1;\n gap: 0.5rem;\n justify-content: flex-end;\n font-size: 0.7rem;\n opacity: 0.7;\n}\n.altcha-footer p {\n margin: 0;\n padding: 0;\n}\n.altcha-error {\n font-size: 0.85rem;\n}\n.altcha-button {\n align-items: center;\n background: var(--altcha-color-primary);\n border: var(--altcha-input-border-width) solid var(--altcha-color-primary);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-color-primary-content);\n cursor: pointer;\n display: flex;\n font-size: 0.9rem;\n gap: 0.5rem;\n padding: 0.35rem;\n}\n.altcha-button:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-button > .altcha-spinner, .altcha-button > svg {\n height: 20px;\n width: 20px;\n}\n.altcha-button-secondary {\n background: transparent;\n border-color: var(--altcha-color-neutral);\n color: var(--altcha-color-neutral-content);\n}\n.altcha-input {\n background: var(--altcha-input-background-color);\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-input-color);\n flex-grow: 1;\n font-size: 1rem;\n min-width: 0;\n padding: 0.25rem;\n width: auto;\n}\n.altcha-input:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-spinner {\n animation: altcha-rotate 0.6s linear infinite;\n border-radius: 100%;\n border: var(--altcha-checkbox-border-width) solid var(--altcha-spinner-color);\n border-bottom-color: transparent;\n border-right-color: transparent;\n opacity: 0.7;\n}\n.altcha-popover {\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius);\n color: var(--altcha-color-base-content);\n filter: var(--altcha-shadow);\n position: absolute;\n left: calc(var(--altcha-padding) / 2);\n max-width: calc(var(--altcha-max-width) - var(--altcha-padding));\n top: calc(var(--altcha-padding) + var(--altcha-checkbox-size) + var(--altcha-popover-arrow-size));\n z-index: var(--altcha-z-index-popover);\n}\n.altcha-popover-arrow {\n border: var(--altcha-popover-arrow-size) solid transparent;\n border-bottom-color: var(--altcha-popover-color);\n content: "";\n height: 0;\n left: calc(var(--altcha-checkbox-size) / 2);\n position: absolute;\n top: calc(var(--altcha-popover-arrow-size) * -2);\n width: 0;\n}\n.altcha-popover-content {\n max-height: 100dvh;\n overflow: auto;\n padding: var(--altcha-padding);\n}\n.altcha-popover[data-top=true][data-display=standard] {\n bottom: calc(100% - (var(--altcha-padding) - var(--altcha-popover-arrow-size)));\n top: auto;\n}\n.altcha-popover[data-top=true][data-display=standard] .altcha-popover-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-popover-color);\n bottom: calc(var(--altcha-popover-arrow-size) * -2);\n top: auto;\n}\n.altcha-popover[data-variant=error] {\n --altcha-popover-color: var(--altcha-color-error);\n background-color: var(--altcha-color-error);\n border-color: var(--altcha-color-error);\n color: var(--altcha-color-error-content);\n}\n.altcha-popover[data-variant=error] .altcha-popover-content {\n padding: calc(var(--altcha-padding) / 1.5) var(--altcha-padding);\n}\n.altcha-popover[data-display=overlay] {\n animation: altcha-overlay-slidein 0.5s forwards;\n left: 50%;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] {\n animation: altcha-bottomsheet-slideup 0.5s forwards;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-bottom: 0;\n bottom: -100%;\n left: 50%;\n position: fixed;\n top: auto;\n transform: translate(-50%, 0);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] .altcha-popover-content {\n padding-bottom: calc(var(--altcha-padding) * 2);\n}\n.altcha-popover-backdrop {\n background: var(--altcha-color-base-content);\n bottom: 0;\n left: 0;\n opacity: 0.1;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity 0.5s;\n z-index: var(--altcha-z-index);\n}\n.altcha-popover-close {\n color: var(--altcha-color-base-content);\n cursor: pointer;\n display: inline-block;\n font-size: 1rem;\n height: 1.25rem;\n line-height: 0.95;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1.25rem;\n z-index: var(--altcha-z-index);\n}\n[dir=rtl] .altcha-popover {\n left: auto;\n right: calc(var(--altcha-padding) / 2);\n}\n[dir=rtl] .altcha-popover-arrow {\n left: auto;\n right: calc(var(--altcha-checkbox-size) / 2);\n}\n[dir=rtl] .altcha-popover-close {\n left: 0;\n right: auto;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer, .altcha-popover[data-display=overlay] .altcha-footer {\n align-items: center;\n justify-content: center;\n padding-top: 1rem;\n gap: 0.5rem;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer svg, .altcha-popover[data-display=overlay] .altcha-footer svg {\n height: 18px;\n width: 18px;\n vertical-align: middle;\n}\n.altcha-code-challenge > form {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n.altcha-code-challenge-title {\n font-weight: 600;\n}\n.altcha-code-challenge-text {\n font-size: 0.85rem;\n}\n.altcha-code-challenge-image {\n background: white;\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n object-fit: contain;\n height: 50px;\n}\n.altcha-code-challenge-row {\n display: flex;\n gap: 0.5rem;\n}\n.altcha-code-challenge-buttons {\n align-items: center;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-top: var(--altcha-padding);\n justify-content: space-between;\n}\n.altcha-code-challenge-buttons button {\n justify-content: center;\n width: 100%;\n}\n.altcha-checkbox {\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input {\n appearance: none;\n background: var(--altcha-input-background-color);\n border: var(--altcha-checkbox-border-width, 2px) solid var(--altcha-checkbox-border-color);\n border-radius: var(--altcha-checkbox-border-radius);\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n left: 0;\n margin: 0;\n padding: 0;\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input:before {\n border-radius: var(--altcha-checkbox-border-radius);\n content: "";\n width: 100%;\n height: 100%;\n background: var(--altcha-color-neutral);\n display: block;\n transform: scale(0);\n}\n.altcha-checkbox input:checked {\n background-color: var(--altcha-color-success);\n border-color: var(--altcha-color-success);\n}\n.altcha-checkbox input:checked::before {\n background-color: var(--altcha-color-success);\n opacity: 0;\n transform: scale(2.2);\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox svg {\n --altcha-radio-svg-size: calc(var(--altcha-checkbox-size) * 0.5);\n --altcha-radio-svg-offset: calc(var(--altcha-checkbox-size) * 0.25);\n fill: none;\n left: var(--altcha-radio-svg-offset);\n height: var(--altcha-radio-svg-size);\n opacity: 0;\n position: absolute;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n top: var(--altcha-radio-svg-offset);\n transform: translate3d(0, 0, 0);\n width: var(--altcha-radio-svg-size);\n}\n.altcha-checkbox input:checked + svg {\n color: var(--altcha-color-success-content);\n opacity: 1;\n stroke-dashoffset: 0;\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox[data-loading=true] .altcha-checkbox-spinner {\n display: block;\n}\n.altcha-checkbox-native {\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native input {\n height: var(--altcha-checkbox-size);\n margin: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox-native[data-loading=true] .altcha-checkbox-native-spinner {\n display: block;\n}\n.altcha-switch {\n align-items: center;\n border-radius: var(--altcha-switch-border-radius);\n background-color: var(--altcha-switch-background-color);\n display: flex;\n height: var(--altcha-switch-height);\n padding: var(--altcha-switch-padding);\n position: relative;\n width: var(--altcha-switch-width);\n}\n.altcha-switch:focus-within {\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-switch input {\n appearance: none;\n cursor: pointer;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.altcha-switch-toggle {\n align-items: center;\n background-color: var(--altcha-switch-toggle-color);\n border-radius: var(--altcha-switch-toggle-border-radius);\n cursor: pointer;\n display: flex;\n height: var(--altcha-switch-toggle-size);\n justify-content: center;\n left: var(--altcha-switch-padding);\n position: absolute;\n transition: width 150ms ease-out, left 150ms ease-out;\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch-spinner {\n display: none;\n height: var(--altcha-switch-toggle-size);\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch[data-loading=true] {\n pointer-events: none;\n}\n.altcha-switch[data-loading=true] .altcha-switch-spinner {\n display: block;\n}\n.altcha-switch[data-loading=true] .altcha-switch-toggle {\n background-color: transparent;\n left: calc(50% - var(--altcha-switch-toggle-size) / 2);\n}\n[data-state=verified] .altcha-switch {\n --altcha-switch-background-color: var(--altcha-color-success);\n}\n[data-state=verified] .altcha-switch-toggle {\n background-color: var(--altcha-color-success-content);\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl] .altcha-switch-toggle {\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl][data-state=verified] .altcha-switch-toggle {\n left: var(--altcha-switch-padding);\n}\n.altcha-floating-arrow {\n border: 6px solid transparent;\n border-bottom-color: var(--altcha-border-color);\n content: "";\n height: 0;\n left: 12px;\n position: absolute;\n top: -12px;\n width: 0;\n}\n.altcha-overlay-backdrop {\n bottom: 0;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha-overlay-close {\n display: inline-block;\n color: currentColor;\n cursor: pointer;\n font-size: 1rem;\n height: 1rem;\n line-height: 0.85;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1rem;\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] {\n animation: altcha-overlay-slidein var(--altcha-transition-duration) forwards;\n filter: var(--altcha-shadow);\n left: 50%;\n opacity: 0;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating] {\n display: none;\n filter: var(--altcha-shadow);\n left: var(--altcha-floating-left, -100%);\n position: fixed;\n top: var(--altcha-floating-top, -100%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=floating] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating][data-floating-position=top] .altcha-floating-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-border-color);\n bottom: -12px;\n top: auto;\n}\n.altcha[data-display=floating][data-visible] {\n display: flex;\n}\n.altcha[data-display=bar] {\n bottom: -100%;\n filter: var(--altcha-shadow);\n left: 0;\n position: fixed;\n right: 0;\n transition: bottom var(--altcha-transition-duration), top var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=bar] .altcha-main {\n align-items: center;\n border-radius: 0;\n border-width: var(--altcha-border-width) 0 0 0;\n flex-direction: row;\n max-width: 100% !important;\n}\n.altcha[data-display=bar] .altcha-main > * {\n width: auto;\n}\n.altcha[data-display=bar][data-placement=top] {\n bottom: auto;\n top: -100%;\n}\n.altcha[data-display=bar][data-placement=top] .altcha-main {\n border-width: 0 0 var(--altcha-border-width) 0;\n}\n.altcha[data-display=bar][data-placement=bottom]:not([data-state=unverified]) {\n bottom: 0;\n}\n.altcha[data-display=bar][data-placement=top]:not([data-state=unverified]) {\n top: 0;\n}\n.altcha[data-display=invisible] {\n display: none;\n}\n\n@keyframes altcha-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes altcha-bottomsheet-slideup {\n 100% {\n bottom: 0;\n }\n}\n@keyframes altcha-overlay-slidein {\n 100% {\n opacity: 1;\n top: 50%;\n }\n}'), $altcha.algorithms.set("SHA-256", () => new Ka), $altcha.algorithms.set("SHA-384", () => new Ka), $altcha.algorithms.set("SHA-512", () => new Ka), $altcha.algorithms.set("PBKDF2/SHA-256", () => new Ba), $altcha.algorithms.set("PBKDF2/SHA-384", () => new Ba), $altcha.algorithms.set("PBKDF2/SHA-512", () => new Ba); +})(); \ No newline at end of file diff --git a/frontend/static/lib/altcha.min.js b/frontend/static/lib/altcha.min.js new file mode 100644 index 00000000..c9cfa5bc --- /dev/null +++ b/frontend/static/lib/altcha.min.js @@ -0,0 +1 @@ +const e=!1;var t=Array.isArray,n=Array.prototype.indexOf,r=Array.prototype.includes,a=Array.from,o=Object.keys,i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyDescriptors,c=Object.prototype,u=Array.prototype,f=Object.getPrototypeOf,d=Object.isExtensible;const h=()=>{};function p(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const v=1<<24,g=16,m=32,b=64,y=512,w=1024,x=2048,k=4096,_=8192,$=16384,S=32768,C=1<<25,E=65536,T=1<<17,A=1<<19,I=65536,P=1<<21,O=1<<23,R=Symbol("$state"),L=Symbol("legacy props"),M=Symbol(""),D=Symbol("attributes"),U=Symbol("class"),V=Symbol("style"),N=Symbol("text"),z=Symbol("form reset"),j=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},B=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml");function F(e){return e===this.v}function H(e,t){return e!=e?t==t:e!==t||null!==e&&"object"==typeof e||"function"==typeof e}function K(e){return!H(e,this.v)}const q={},Y=Symbol("uninitialized"),G="http://www.w3.org/1999/xhtml";let W=null;function J(e){W=e}function Z(e,t=!1,n){W={p:W,i:!1,c:null,e:null,s:e,x:null,r:jt,l:null}}function X(e){var t=W,n=t.e;if(null!==n)for(var r of(t.e=null,n))gn(r);return void 0!==e&&(t.x=e),t.i=!0,W=t.p,e??{}}let Q=[];function ee(){var e=Q;Q=[],function(e){for(var t=0;t{t===Q&&ee()})}Q.push(e)}function ne(){for(;Q.length>0;)ee()}function re(e){console.warn("https://svelte.dev/e/hydration_mismatch")}let ae,oe=!1;function ie(e){oe=e}function le(e){if(null===e)throw re(),q;return ae=e}function se(){return le($e(ae))}function ce(e){if(oe){if(null!==$e(ae))throw re(),q;ae=e}}function ue(e=1){if(oe){for(var t=e,n=ae;t--;)n=$e(n);ae=n}}function fe(e=!0){for(var t=0,n=ae;;){if(8===n.nodeType){var r=n.data;if("]"===r){if(0===t)return n;t-=1}else("["===r||"[!"===r||"["===r[0]&&!isNaN(Number(r.slice(1))))&&(t+=1)}var a=$e(n);e&&n.remove(),n=a}}function de(e){if(!e||8!==e.nodeType)throw re(),q;return e.data}function he(e){if("object"!=typeof e||null===e||R in e)return e;const n=f(e);if(n!==c&&n!==u)return e;var r=new Map,a=t(e),o=St(0),i=Jt,s=e=>{if(Jt===i)return e();var t=Vt,n=Jt;zt(null),Zt(i);var r=e();return zt(t),Zt(n),r};return a&&r.set("length",St(e.length)),new Proxy(e,{defineProperty(e,t,n){"value"in n&&!1!==n.configurable&&!1!==n.enumerable&&!1!==n.writable||function(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}();var a=r.get(t);return void 0===a?s(()=>{var e=St(n.value);return r.set(t,e),e}):Et(a,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(void 0===n){if(t in e){const e=s(()=>St(Y));r.set(t,e),At(o)}}else Et(n,Y),At(o);return!0},get(t,n,a){if(n===R)return e;var o=r.get(n),i=n in t;if(void 0!==o||i&&!l(t,n)?.writable||(o=s(()=>St(he(i?t[n]:Y))),r.set(n,o)),void 0!==o){var c=ln(o);return c===Y?void 0:c}return Reflect.get(t,n,a)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&"value"in n){var a=r.get(t);a&&(n.value=ln(a))}else if(void 0===n){var o=r.get(t),i=o?.v;if(void 0!==o&&i!==Y)return{enumerable:!0,configurable:!0,value:i,writable:!0}}return n},has(e,t){if(t===R)return!0;var n=r.get(t),a=void 0!==n&&n.v!==Y||Reflect.has(e,t);if((void 0!==n||null!==jt&&(!a||l(e,t)?.writable))&&(void 0===n&&(n=s(()=>St(a?he(e[t]):Y)),r.set(t,n)),ln(n)===Y))return!1;return a},set(e,t,n,i){var c=r.get(t),u=t in e;if(a&&"length"===t)for(var f=n;fSt(Y)),r.set(f+"",d))}void 0===c?u&&!l(e,t)?.writable||(Et(c=s(()=>St(void 0)),he(n)),r.set(t,c)):(u=c.v!==Y,Et(c,s(()=>he(n))));var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(i,n),!u){if(a&&"string"==typeof t){var p=r.get("length"),v=Number(t);Number.isInteger(v)&&v>=p.v&&Et(p,v+1)}At(o)}return!0},ownKeys(e){ln(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return void 0===t||t.v!==Y});for(var[n,a]of r)a.v===Y||n in e||t.push(n);return t},setPrototypeOf(){!function(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}()}})}function pe(e){try{if(null!==e&&"object"==typeof e&&R in e)return e[R]}catch{}return e}function ve(e,t){return Object.is(pe(e),pe(t))}var ge,me,be,ye,we;function xe(){if(void 0===ge){ge=window,me=document,be=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;ye=l(t,"firstChild").get,we=l(t,"nextSibling").get,d(e)&&(e[U]=void 0,e[D]=null,e[V]=void 0,e.__e=void 0),d(n)&&(n[N]=void 0)}}function ke(e=""){return document.createTextNode(e)}function _e(e){return ye.call(e)}function $e(e){return we.call(e)}function Se(e,t){if(!oe)return _e(e);var n=_e(ae);if(null===n)n=ae.appendChild(ke());else if(t&&3!==n.nodeType){var r=ke();return n?.before(r),le(r),r}return t&&Ae(n),le(n),n}function Ce(e,t=!1){if(!oe){var n=_e(e);return n instanceof Comment&&""===n.data?$e(n):n}if(t){if(3!==ae?.nodeType){var r=ke();return ae?.before(r),le(r),r}Ae(ae)}return ae}function Ee(e,t=1,n=!1){let r=oe?ae:e;for(var a;t--;)a=r,r=$e(r);if(!oe)return r;if(n){if(3!==r?.nodeType){var o=ke();return null===r?a?.after(o):r.before(o),le(o),o}Ae(r)}return le(r),r}function Te(e,t,n){let r;return document.createElementNS(t??G,e,r)}function Ae(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;null!==t&&3===t.nodeType;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Ie(e){var t=jt;if(null===t)return Vt.f|=O,e;if(0===(t.f&S)&&!(4&t.f))throw e;Pe(e,t)}function Pe(e,t){for(;null!==t;){if(128&t.f){if(0===(t.f&S))throw e;try{return void t.b.error(e)}catch(t){e=t}}t=t.parent}throw e}const Oe=-7169;function Re(e,t){e.f=e.f&Oe|t}function Le(e){0!==(e.f&y)||null===e.deps?Re(e,w):Re(e,k)}function Me(e){if(null!==e)for(const t of e)2&t.f&&0!==(t.f&I)&&(t.f^=I,Me(t.deps))}function De(e,t,n){0!==(e.f&x)?t.add(e):0!==(e.f&k)&&n.add(e),Me(e.deps),Re(e,w)}function Ue(e,t,n){if(null==e)return t(void 0),h;const r=un(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const Ve=[];function Ne(e,t=h){let n=null;const r=new Set;function a(t){if(H(e,t)&&(e=t,n)){const t=!Ve.length;for(const t of r)t[1](),Ve.push(t,e);if(t){for(let e=0;e{r.delete(s),0===r.size&&n&&(n(),n=null)}}}}function ze(e){let t;return Ue(e,e=>t=e)(),t}let je=Symbol("unmounted");function Be(e,t,n){const r=n[t]??={store:null,source:Ct(void 0),unsubscribe:h};if(r.store!==e&&!(je in n))if(r.unsubscribe(),r.store=e??null,null==e)r.source.v=void 0,r.unsubscribe=h;else{var a=!0;r.unsubscribe=Ue(e,e=>{a?r.source.v=e:Et(r.source,e)}),a=!1}return e&&je in n?ze(e):ln(r.source)}let Fe=null,He=null,Ke=null,qe=null,Ye=null,Ge=null,We=!1,Je=!1,Ze=null,Xe=null;var Qe=0;let et=1;class tt{id=et++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;unblocked=new Set;#r=new Set;#a=new Set;#o=new Set;#i=0;#l=new Map;#s=null;#c=[];#u=[];#f=new Set;#d=new Set;#h=new Map;#p=new Set;is_fork=!1;#v=!1;#g(){if(this.is_fork)return!0;for(const n of this.#l.keys()){for(var e=n,t=!1;null!==e.parent;){if(this.#h.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#h.has(e)||this.#h.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#h.get(e);if(n){for(var r of(this.#h.delete(e),n.d))Re(r,x),t(r);for(r of n.m)Re(r,k),t(r)}this.#p.add(e)}#m(){if(this.#e=!0,Qe++>1e3&&(this.#b(),function(){try{!function(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}()}catch(e){Pe(e,Ge)}}()),!this.#g()){for(const e of this.#f)this.#d.delete(e),Re(e,x),this.schedule(e);for(const e of this.#d)Re(e,k),this.schedule(e)}const e=this.#c;this.#c=[],this.apply();var t=Ze=[],n=[],r=Xe=[];for(const r of e)try{this.#y(r,t,n)}catch(e){throw ct(r),e}if(Ke=null,r.length>0){var a=tt.ensure();for(const e of r)a.schedule(e)}if(Ze=null,Xe=null,this.#g()){this.#w(n),this.#w(t);for(const[e,t]of this.#h)st(e,t);return void(r.length>0&&Ke.#m())}const o=this.#x();if(o)o.#k(this);else{this.#f.clear(),this.#d.clear();for(const e of this.#r)e(this);this.#r.clear(),qe=this,at(n),at(t),qe=null,this.#s?.resolve();var i=Ke;if(this.linked&&0===this.#i&&this.#b(),this.#c.length>0){null===i&&(i=this,this.#_());const e=i;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}null!==i&&i.#m()}}#y(e,t,n){e.f^=w;for(var r=e.first;null!==r;){var a=r.f,o=!!(96&a);if(!(o&&0!==(a&w)||0!==(a&_)||this.#h.has(r))&&null!==r.fn){o?r.f^=w:4&a?t.push(r):Qt(r)&&(0!==(a&g)&&this.#d.add(r),an(r));var i=r.first;if(null!==i){r=i;continue}}for(;null!==r;){var l=r.next;if(null!==l){r=l;break}r=r.parent}}}#x(){for(var e=this.#t;null!==e;){if(!e.is_fork)for(const[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e;e=e.#t}return null}#k(e){for(const[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(const[t,n]of e.async_deriveds){const e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve)}const t=e=>{var n=e.reactions;if(null!==n)for(const e of n){var r=e.f;if(2&r)t(e);else{var a=e;4194320&r&&!this.async_deriveds.has(a)&&(this.#d.delete(a),Re(a,x),this.schedule(a))}}};for(const e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#b(),Ke=this,this.#m()}#w(e){for(var t=0;t!this.current.has(e));if(0===r.length)e&&c.discard();else if(t.length>0){if(e)for(const e of this.#p)c.unskip_effect(e,e=>{4194320&e.f?c.schedule(e):c.#w([e])});c.activate();var a=new Set,o=new Map;for(var i of t)ot(i,r,a,o);o=new Map;var l=[...c.current.keys()].filter(e=>!this.current.has(e)||this.current.get(e)[0]!==e.v);if(l.length>0)for(const e of this.#u)155648&e.f||!it(e,l,o)||(4194320&e.f?(Re(e,x),c.schedule(e)):c.#f.add(e));if(c.#c.length>0){for(var s of(c.apply(),c.#c))c.#y(s,[],[]);c.#c=[]}c.deactivate()}}}}increment(e,t){if(this.#i+=1,e){let e=this.#l.get(t)??0;this.#l.set(t,e+1)}}decrement(e,t){if(this.#i-=1,e){let e=this.#l.get(t)??0;1===e?this.#l.delete(t):this.#l.set(t,e-1)}this.#v||(this.#v=!0,te(()=>{this.#v=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(const t of e)this.#f.add(t);for(const e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#a.add(e)}on_fork_commit(e){this.#o.add(e)}run_fork_commit_callbacks(){for(const e of this.#o)e(this);this.#o.clear()}settled(){return(this.#s??=p()).promise}static ensure(){if(null===Ke){const e=Ke=new tt;e.#_(),Je||We||te(()=>{e.#e||e.flush()})}return Ke}apply(){Ye=null}schedule(e){if(Ge=e,e.b?.is_pending&&16777228&e.f&&0===(e.f&S))e.b.defer_effect(e);else{for(var t=e;null!==t.parent;){var n=(t=t.parent).f;if(!(null===Ze||t!==jt||null!==Vt&&2&Vt.f))return;if(96&n){if(0===(n&w))return;t.f^=w}}this.#c.push(t)}}#_(){null===He?Fe=He=this:(He.#n=this,this.#t=He),He=this}#b(){var e=this.#t,t=this.#n;null===e?Fe=t:e.#n=t,null===t?He=e:t.#t=e,this.linked=!1}}function nt(e){var t=We;We=!0;try{for(;;){if(ne(),null===Ke)return;Ke.flush()}}finally{We=t}}let rt=null;function at(e){var t=e.length;if(0!==t){for(var n=0;n0)){kt.clear();for(const e of rt){if(24576&e.f)continue;const t=[e];let n=e.parent;for(;null!==n;)rt.has(n)&&(rt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){const n=t[e];24576&n.f||an(n)}}rt.clear()}}rt=null}}function ot(e,t,n,r){if(!n.has(e)&&(n.add(e),null!==e.reactions))for(const a of e.reactions){const e=a.f;2&e?ot(a,t,n,r):4194320&e&&0===(e&x)&&it(a,t,r)&&(Re(a,x),lt(a))}}function it(e,t,n){const a=n.get(e);if(void 0!==a)return a;if(null!==e.deps)for(const a of e.deps){if(r.call(t,a))return!0;if(2&a.f&&it(a,t,n))return n.set(a,!0),!0}return n.set(e,!1),!1}function lt(e){Ke.schedule(e)}function st(e,t){if(0===(e.f&m)||0===(e.f&w)){0!==(e.f&x)?t.d.push(e):0!==(e.f&k)&&t.m.push(e),Re(e,w);for(var n=e.first;null!==n;)st(n,t),n=n.next}}function ct(e){Re(e,w);for(var t=e.first;null!==t;)ct(t),t=t.next}class ut{parent;is_pending=!1;transform_error;#S;#C=oe?ae:null;#E;#T;#A;#I=null;#P=null;#O=null;#R=null;#L=0;#M=0;#D=!1;#f=new Set;#d=new Set;#U=null;#V=function(e){let t,n=0,r=$t(0);return()=>{hn()&&(ln(r),bn(()=>(0===n&&(t=un(()=>e(()=>At(r)))),n+=1,()=>{te(()=>{n-=1,0===n&&(t?.(),t=void 0,At(r))})})))}}(()=>(this.#U=$t(this.#L),()=>{this.#U=null}));constructor(e,t,n,r){this.#S=e,this.#E=t,this.#T=e=>{var t=jt;t.b=this,t.f|=128,n(e)},this.parent=jt.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#A=wn(()=>{if(oe){const e=this.#C;se();const t="[!"===e.data;if(e.data.startsWith("[?")){const t=JSON.parse(e.data.slice(2));this.#N(t)}else t?this.#z():this.#j()}else this.#B()},589824),oe&&(this.#S=ae)}#j(){try{this.#I=kn(()=>this.#T(this.#S))}catch(e){this.error(e)}}#N(e){const t=this.#E.failed;t&&(this.#O=kn(()=>{t(this.#S,()=>e,()=>()=>{})}))}#z(){const e=this.#E.pending;e&&(this.is_pending=!0,this.#P=kn(()=>e(this.#S)),te(()=>{var e=this.#R=document.createDocumentFragment(),t=ke();e.append(t),this.#I=this.#F(()=>kn(()=>this.#T(t))),0===this.#M&&(this.#S.before(e),this.#R=null,Tn(this.#P,()=>{this.#P=null}),this.#H(Ke))}))}#B(){try{if(this.is_pending=this.has_pending_snippet(),this.#M=0,this.#L=0,this.#I=kn(()=>{this.#T(this.#S)}),this.#M>0){var e=this.#R=document.createDocumentFragment();On(this.#I,e);const t=this.#E.pending;this.#P=kn(()=>t(this.#S))}else this.#H(Ke)}catch(e){this.error(e)}}#H(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#d)}defer_effect(e){De(e,this.#f,this.#d)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#E.pending}#F(e){var t=jt,n=Vt,r=W;Bt(this.#A),zt(this.#A),J(this.#A.ctx);try{return tt.ensure(),e()}catch(e){return Ie(e),null}finally{Bt(t),zt(n),J(r)}}#K(e,t){this.has_pending_snippet()?(this.#M+=e,0===this.#M&&(this.#H(t),this.#P&&Tn(this.#P,()=>{this.#P=null}),this.#R&&(this.#S.before(this.#R),this.#R=null))):this.parent&&this.parent.#K(e,t)}update_pending_count(e,t){this.#K(e,t),this.#L+=e,this.#U&&!this.#D&&(this.#D=!0,te(()=>{this.#D=!1,this.#U&&Tt(this.#U,this.#L)}))}get_effect_pending(){return this.#V(),ln(this.#U)}error(e){if(!this.#E.onerror&&!this.#E.failed)throw e;Ke?.is_fork?(this.#I&&Ke.skip_effect(this.#I),this.#P&&Ke.skip_effect(this.#P),this.#O&&Ke.skip_effect(this.#O),Ke.on_fork_commit(()=>{this.#q(e)})):this.#q(e)}#q(e){this.#I&&(Sn(this.#I),this.#I=null),this.#P&&(Sn(this.#P),this.#P=null),this.#O&&(Sn(this.#O),this.#O=null),oe&&(le(this.#C),ue(),le(fe()));var t=this.#E.onerror;let n=this.#E.failed;var r=!1,a=!1;const o=()=>{r?console.warn("https://svelte.dev/e/svelte_boundary_reset_noop"):(r=!0,a&&function(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}(),null!==this.#O&&Tn(this.#O,()=>{this.#O=null}),this.#F(()=>{this.#B()}))},i=e=>{try{a=!0,t?.(e,o),a=!1}catch(e){Pe(e,this.#A&&this.#A.parent)}n&&(this.#O=this.#F(()=>{try{return kn(()=>{var t=jt;t.b=this,t.f|=128,n(this.#S,()=>e,()=>o)})}catch(e){return Pe(e,this.#A.parent),null}}))};te(()=>{var t;try{t=this.transform_error(e)}catch(e){return void Pe(e,this.#A&&this.#A.parent)}null!==t&&"object"==typeof t&&"function"==typeof t.then?t.then(i,e=>Pe(e,this.#A&&this.#A.parent)):i(t)})}}function ft(e,t,n,r){const a=pt;var o=e.filter(e=>!e.settled);if(0!==n.length||0!==o.length){var i,l,s,c,u=jt,f=(i=jt,l=Vt,s=W,c=Ke,function(e=!0){Bt(i),zt(l),J(s),e&&0===(i.f&$)&&(c?.activate(),c?.apply())}),d=1===o.length?o[0].promise:o.length>1?Promise.all(o.map(e=>e.promise)):null,h=ht();0!==n.length?d?d.then(()=>{f(),v(),dt()}):v():d.then(()=>p(t.map(a))).finally(h)}else r(t.map(a));function p(e){if(0===(u.f&$)){f();try{r(e)}catch(e){Pe(e,u)}dt()}}function v(){Promise.all(n.map(e=>gt(e))).then(e=>p([...t.map(a),...e])).catch(e=>Pe(e,u)).finally(h)}}function dt(e=!0){Bt(null),zt(null),J(null),e&&Ke?.deactivate()}function ht(){var e=jt,t=e.b,n=Ke,r=t.is_rendered();return t.update_pending_count(1,n),n.increment(r,e),()=>{t.update_pending_count(-1,n),n.decrement(r,e)}}function pt(e){null!==jt&&(jt.f|=A);return{ctx:W,deps:null,effects:null,equals:F,f:2050,fn:e,reactions:null,rv:0,v:Y,wv:0,parent:jt,ac:null}}const vt=Symbol("obsolete");function gt(e,t,n){let r=jt;null===r&&function(){throw new Error("https://svelte.dev/e/async_derived_orphan")}();var a=void 0,o=$t(Y),i=!Vt,l=new Set;return function(e){dn(4718592,e)}(()=>{var t=jt,n=p();a=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==j&&n.reject(e)}).finally(dt)}catch(e){n.reject(e),dt()}var s=Ke;if(i){if(0!==(t.f&S))var c=ht();if(r.b.is_rendered())s.async_deriveds.get(t)?.reject(vt);else for(const e of l.values())e.reject(vt);l.add(n),s.async_deriveds.set(t,n)}const u=(e,t=void 0)=>{c?.(),l.delete(n),t!==vt&&(s.activate(),t?(o.f|=O,Tt(o,t)):(0!==(o.f&O)&&(o.f^=O),Tt(o,e)),s.deactivate())};n.promise.then(u,e=>u(null,e||"unknown"))}),pn(()=>{for(const e of l)e.reject(vt)}),new Promise(e=>{!function t(n){function r(){n===a?e(o):t(a)}n.then(r,r)}(a)})}function mt(e){const t=pt(e);return Ht(t),t}function bt(e){var t,n=jt,r=e.parent;if(!Dt&&null!==r&&e.v!==Y&&24576&r.f)return console.warn("https://svelte.dev/e/derived_inert"),e.v;Bt(r);try{e.f&=-65537,function(e){var t=e.effects;if(null!==t){e.effects=null;for(var n=0;n0&&!_t&&function(){_t=!1;for(const e of xt){let t;0!==(e.f&w)&&Re(e,k);try{t=Qt(e)}catch{t=!0}t&&an(e)}xt.clear()}()}return t}function At(e){Et(e,e.v+1)}function It(e,t,n){var r=e.reactions;if(null!==r)for(var a=r.length,o=0;o{document.activeElement===t&&e.focus()})}}let Ot=!1;function Rt(){Ot||(Ot=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t[z]?.()})},{capture:!0}))}function Lt(e){var t=Vt,n=jt;zt(null),Bt(null);try{return e()}finally{zt(t),Bt(n)}}let Mt=!1,Dt=!1;function Ut(e){Dt=e}let Vt=null,Nt=!1;function zt(e){Vt=e}let jt=null;function Bt(e){jt=e}let Ft=null;function Ht(e){null!==Vt&&(null===Ft?Ft=[e]:Ft.push(e))}let Kt=null,qt=0,Yt=null;let Gt=1,Wt=0,Jt=Wt;function Zt(e){Jt=e}function Xt(){return++Gt}function Qt(e){var t=e.f;if(0!==(t&x))return!0;if(2&t&&(e.f&=-65537),0!==(t&k)){for(var n=e.deps,r=n.length,a=0;ae.wv)return!0}0!==(t&y)&&null===Ye&&Re(e,w)}return!1}function en(e,t,n=!0){var a=e.reactions;if(null!==a&&(null===Ft||!r.call(Ft,e)))for(var o=0;o{e.ac.abort(j)}),e.ac=null);try{e.f|=P;var u=(0,e.fn)();e.f|=S;var f=e.deps,d=Ke?.is_fork;if(null!==Kt){var h;if(d||rn(e,qt),null!==f&&qt>0)for(f.length=qt+Kt.length,h=0;h{dn(8,()=>e(...t.map(ln)))})}function wn(e,t=0){return dn(g|t,e)}function xn(e,t=0){return dn(v|t,e)}function kn(e){return dn(524320,e)}function _n(e){var t=e.teardown;if(null!==t){const e=Dt,n=Vt;Ut(!0),zt(null);try{t.call(null)}finally{Ut(e),zt(n)}}}function $n(e,t=!1){var n=e.first;for(e.first=e.last=null;null!==n;){const e=n.ac;null!==e&&Lt(()=>{e.abort(j)});var r=n.next;0!==(n.f&b)?n.parent=null:Sn(n,t),n=r}}function Sn(e,t=!0){var n=!1;(t||262144&e.f)&&null!==e.nodes&&null!==e.nodes.end&&(Cn(e.nodes.start,e.nodes.end),n=!0),Re(e,C),$n(e,t&&!n),rn(e,0);var r=e.nodes&&e.nodes.t;if(null!==r)for(const e of r)e.stop();_n(e),e.f^=C,e.f|=$;var a=e.parent;null!==a&&null!==a.first&&En(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Cn(e,t){for(;null!==e;){var n=e===t?null:$e(e);e.remove(),e=n}}function En(e){var t=e.parent,n=e.prev,r=e.next;null!==n&&(n.next=r),null!==r&&(r.prev=n),null!==t&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Tn(e,t,n=!0){var r=[];An(e,r,!0);var a=()=>{n&&Sn(e),t&&t()},o=r.length;if(o>0){var i=()=>--o||a();for(var l of r)l.out(i)}else a()}function An(e,t,n){if(0===(e.f&_)){e.f^=_;var r=e.nodes&&e.nodes.t;if(null!==r)for(const e of r)(e.is_global||n)&&t.push(e);for(var a=e.first;null!==a;){var o=a.next;if(0===(a.f&b))An(a,t,!!(0!==(a.f&E)||0!==(a.f&m)&&0!==(e.f&g))&&n);a=o}}}function In(e){Pn(e,!0)}function Pn(e,t){if(0!==(e.f&_)){e.f^=_,0===(e.f&w)&&(Re(e,x),tt.ensure().schedule(e));for(var n=e.first;null!==n;){var r=n.next;Pn(n,!!(0!==(n.f&E)||0!==(n.f&m))&&t),n=r}var a=e.nodes&&e.nodes.t;if(null!==a)for(const e of a)(e.is_global||t)&&e.in()}}function On(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;null!==n;){var a=n===r?null:$e(n);t.append(n),n=a}}function Rn(e){const t={get:e=>ze(t.store)[e],set:(e,n)=>{"string"==typeof e?Object.assign(ze(t.store),{[e]:n}):Object.assign(ze(t.store),e),t.store.set(ze(t.store))},store:Ne(e)};return t}globalThis.$altcha=globalThis.$altcha||{algorithms:new Map,defaults:Rn({}),i18n:Rn({}),instances:new Set,plugins:new Set};const Ln={ariaLinkLabel:"Altcha (official website)",cancel:"Cancel",enterCode:"Enter code",enterCodeAria:"Enter code you hear. Press Space to play audio.",enterCodeFromImage:"To proceed, please enter the code from the image below.",error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:'Protected by ALTCHA',getAudioChallenge:"Get an audio challenge",label:"I'm not a robot",loading:"Loading...",reload:"Reload",verify:"Verify",verificationRequired:"Verification required!",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait."};"$altcha"in globalThis&&globalThis.$altcha.i18n.set("en",Ln);"undefined"!=typeof window&&((window.__svelte??={}).v??=new Set).add("5");const Mn=Symbol("events"),Dn=new Set,Un=new Set;function Vn(e,t,n,r={}){function a(e){if(r.capture||Fn.call(t,e),!e.cancelBubble)return Lt(()=>n?.call(this,e))}return e.startsWith("pointer")||e.startsWith("touch")||"wheel"===e?te(()=>{t.addEventListener(e,a,r)}):t.addEventListener(e,a,r),a}function Nn(e,t,n,r,a){var o={capture:r,passive:a},i=Vn(e,t,n,o);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&pn(()=>{t.removeEventListener(e,i,o)})}function zn(e,t,n){(t[Mn]??={})[e]=n}function jn(e){for(var t=0;to||n});var f=Vt,d=jt;zt(null),Bt(null);try{for(var h,p=[];null!==o;){var v=o.assignedSlot||o.parentNode||o.host||null;try{var g=o[Mn]?.[r];null==g||o.disabled&&e.target!==o||g.call(o,e)}catch(e){h?p.push(e):h=e}if(e.cancelBubble||v===t||null===v)break;o=v}if(h){for(let e of p)queueMicrotask(()=>{throw e});throw h}}finally{e[Mn]=t,delete e.currentTarget,zt(f),Bt(d)}}}const Hn=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function Kn(e){var t=Te("template");return t.innerHTML=function(e){return Hn?.createHTML(e)??e}(e.replaceAll("","\x3c!----\x3e")),t.content}function qn(e,t){var n=jt;null===n.nodes&&(n.nodes={start:e,end:t,a:null,t:null})}function Yn(e,t){var n,r=!!(1&t),a=!!(2&t),o=!e.startsWith("");return()=>{if(oe)return qn(ae,null),ae;void 0===n&&(n=Kn(o?e:""+e),r||(n=_e(n)));var t=a||be?document.importNode(n,!0):n.cloneNode(!0);r?qn(_e(t),t.lastChild):qn(t,t);return t}}function Gn(e,t,n="svg"){var r,a=`<${n}>${!e.startsWith("")?e:""+e}`;return()=>{if(oe)return qn(ae,null),ae;if(!r){var e=Kn(a);r=_e(_e(e))}var t=r.cloneNode(!0);return qn(t,t),t}}function Wn(e,t){return Gn(e,0,"svg")}function Jn(e=""){if(!oe){var t=ke(e+"");return qn(t,t),t}var n=ae;return 3!==n.nodeType?(n.before(n=ke()),le(n)):Ae(n),qn(n,n),n}function Zn(){if(oe)return qn(ae,null),ae;var e=document.createDocumentFragment(),t=document.createComment(""),n=ke();return e.append(t,n),qn(t,n),e}function Xn(e,t){if(oe){var n=jt;return 0!==(n.f&S)&&null!==n.nodes.end||(n.nodes.end=ae),void se()}null!==e&&e.before(t)}function Qn(e){return e.endsWith("capture")&&"gotpointercapture"!==e&&"lostpointercapture"!==e}const er=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function tr(e){return er.includes(e)}const nr={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function rr(e){return e=e.toLowerCase(),nr[e]??e}const ar=["touchstart","touchmove"];function or(e){return ar.includes(e)}function ir(e,t){var n=null==t?"":"object"==typeof t?`${t}`:t;n!==(e[N]??=e.nodeValue)&&(e[N]=n,e.nodeValue=`${n}`)}function lr(e,t){return ur(e,t)}function sr(e,t){xe(),t.intro=t.intro??!1;const n=t.target,r=oe,a=ae;try{for(var o=_e(n);o&&(8!==o.nodeType||"["!==o.data);)o=$e(o);if(!o)throw q;ie(!0),le(o);const r=ur(e,{...t,anchor:o});return ie(!1),r}catch(r){if(r instanceof Error&&r.message.split("\n").some(e=>e.startsWith("https://svelte.dev/e/")))throw r;return r!==q&&console.warn("Failed to hydrate: ",r),!1===t.recover&&function(){throw new Error("https://svelte.dev/e/hydration_failed")}(),xe(),n.textContent="",ie(!1),lr(e,t)}finally{ie(r),le(a)}}const cr=new Map;function ur(e,{target:t,anchor:n,props:r={},events:o,context:i,intro:l=!0,transformError:s}){xe();var c=void 0,u=function(e){tt.ensure();const t=dn(524352,e);return(e={})=>new Promise(n=>{e.outro?Tn(t,()=>{Sn(t),n(void 0)}):(Sn(t),n(void 0))})}(()=>{var l=n??t.appendChild(ke());!function(e,t,n,r){new ut(e,t,n,r)}(l,{pending:()=>{}},t=>{if(Z({}),i&&(W.c=i),o&&(r.$$events=o),oe&&qn(t,null),c=e(t,r)||{},oe&&(jt.nodes.end=ae,null===ae||8!==ae.nodeType||"]"!==ae.data))throw re(),q;X()},s);var u=new Set,f=e=>{for(var n=0;n{for(var e of u)for(const n of[t,document]){var r=cr.get(n),a=r.get(e);0==--a?(n.removeEventListener(e,Fn),r.delete(e),0===r.size&&cr.delete(n)):r.set(e,a)}Un.delete(f),l!==n&&l.parentNode?.removeChild(l)}});return fr.set(c,u),c}let fr=new WeakMap;class dr{anchor;#Y=new Map;#G=new Map;#W=new Map;#J=new Set;#Z=!0;constructor(e,t=!0){this.anchor=e,this.#Z=t}#$=e=>{if(this.#Y.has(e)){var t=this.#Y.get(e),n=this.#G.get(t);if(n)In(n),this.#J.delete(t);else{var r=this.#W.get(t);r&&(this.#G.set(t,r.effect),this.#W.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(const[t,n]of this.#Y){if(this.#Y.delete(t),t===e)break;const r=this.#W.get(n);r&&(Sn(r.effect),this.#W.delete(n))}for(const[e,r]of this.#G){if(e===t||this.#J.has(e))continue;const a=()=>{if(Array.from(this.#Y.values()).includes(e)){var t=document.createDocumentFragment();On(r,t),t.append(ke()),this.#W.set(e,{effect:r,fragment:t})}else Sn(r);this.#J.delete(e),this.#G.delete(e)};this.#Z||!n?(this.#J.add(e),Tn(r,a,!1)):a()}}};#X=e=>{this.#Y.delete(e);const t=Array.from(this.#Y.values());for(const[e,n]of this.#W)t.includes(e)||(Sn(n.effect),this.#W.delete(e))};ensure(e,t){var n=Ke;!t||this.#G.has(e)||this.#W.has(e)||this.#G.set(e,kn(()=>t(this.anchor)));this.#Y.set(n,e),oe&&(this.anchor=ae),this.#$(n)}}function hr(e){null===W&&function(){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}(),vn(()=>{const t=un(e);if("function"==typeof t)return t})}function pr(e,t,n=!1){var r;oe&&(r=ae,se());var a=new dr(e);function o(e,t){if(oe){var n=de(r);if(e!==parseInt(n.substring(1))){var o=fe();return le(o),a.anchor=o,ie(!1),a.ensure(e,t),void ie(!0)}}a.ensure(e,t)}wn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},n?E:0)}const vr=Symbol("NaN");function gr(e,t,n=!1,r=!1,a=!1,o=!1){var i=e,l="";if(n){var s=e;oe&&(i=le(_e(s)))}yn(()=>{var e=jt;if(l!==(l=t()??"")){if(n&&!oe)return e.nodes=null,s.innerHTML=l,void(""!==l&&qn(_e(s),s.lastChild));if(null!==e.nodes&&(Cn(e.nodes.start,e.nodes.end),e.nodes=null),""!==l){if(oe){ae.data;for(var o=se(),c=o;null!==o&&(8!==o.nodeType||""!==o.data);)c=o,o=$e(o);if(null===o)throw re(),q;return qn(ae,c),void(i=le(o))}var u=Te(r?"svg":a?"math":"template",r?"http://www.w3.org/2000/svg":a?"http://www.w3.org/1998/Math/MathML":void 0);u.innerHTML=l;var f=r||a?u:u.content;if(qn(_e(f),f.lastChild),r||a)for(;_e(f);)i.before(_e(f));else i.before(f)}}else oe&&se()})}function mr(e,t){var n,r=void 0;xn(()=>{r!==(r=t())&&(n&&(Sn(n),n=null),r&&(n=kn(()=>{mn(()=>r(e))})))})}function br(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t=0;){var l=i+o;0!==i&&!wr.includes(r[i-1])||l!==r.length&&!wr.includes(r[l])?i=l:r=(0===i?"":r.substring(0,i))+r.substring(l+1)}return""===r?null:r}(n,0,o);oe&&l===e.getAttribute("class")||(null==l?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l)),e[U]=n}else if(o&&a!==o)for(var s in o){var c=!!o[s];null!=a&&c===!!a[s]||e.classList.toggle(s,c)}return o}function $r(e,t={},n,r){for(var a in n){var o=n[a];t[a]!==o&&(null==n[a]?e.style.removeProperty(a):e.style.setProperty(a,o,r))}}function Sr(e,t,n,r){var a=e[V];if(oe||a!==t){var o=function(e,t){if(t){var n,r,a="";if(Array.isArray(t)?(n=t[0],r=t[1]):n=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var o=!1,i=0,l=!1,s=[];n&&s.push(...Object.keys(n).map(kr)),r&&s.push(...Object.keys(r).map(kr));var c=0,u=-1;const t=e.length;for(var f=0;f{if(!t){if(t=!0,e.hasAttribute("value")){var n=e.value;Nr(e,"value",null),e.value=n}if(e.hasAttribute("checked")){var r=e.checked;Nr(e,"checked",null),e.checked=r}}};e[z]=n,te(n),Rt()}}function Vr(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function Nr(e,t,n,r){var a=jr(e);oe&&(a[t]=e.getAttribute(t),"src"===t||"srcset"===t||"href"===t&&e.nodeName===Or)||a[t]!==(a[t]=n)&&("loading"===t&&(e[M]=n),null==n?e.removeAttribute(t):"string"!=typeof n&&Fr(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function zr(e,t,n=[],r=[],a=[],o,i=!1,l=!1){ft(a,n,r,n=>{var r=void 0,a={},o=e.nodeName===Mr,s=!1;if(xn(()=>{var c=t(...n.map(ln)),u=function(e,t,n,r,a=!1){if(oe&&a&&e.nodeName===Rr){var o=e;("checkbox"===o.type?"defaultChecked":"defaultValue")in n||Ur(o)}var i=jr(e),l=i[Ir],s=!i[Pr];let c=oe&&l;c&&ie(!1);var u=t||{},f=e.nodeName===Lr;for(var d in t)d in n||(n[d]=null);n.class?n.class=yr(n.class):n[Tr]&&(n.class=null),n[Ar]&&(n.style??=null);var h=Fr(e);for(const r in n){let a=n[r];if(f&&"value"===r&&null==a)e.value=e.__value="",u[r]=a;else if("class"!==r)if("style"!==r){var p=u[r];if(a!==p||void 0===a&&e.hasAttribute(r)){u[r]=a;var v=r[0]+r[1];if("$$"!==v)if("on"===v){const t={},n="$$"+r;let o=r.slice(2);var g=tr(o);if(Qn(o)&&(o=o.slice(0,-7),t.capture=!0),!g&&p){if(null!=a)continue;e.removeEventListener(o,u[n],t),u[n]=null}if(g)zn(o,e,a),jn([o]);else if(null!=a){let a=function(e){u[r].call(this,e)};u[n]=Vn(o,e,a,t)}}else if("style"===r)Nr(e,r,a);else if("autofocus"===r)Pt(e,Boolean(a));else if(l||"__value"!==r&&("value"!==r||null==a))if("selected"===r&&f)Vr(e,a);else{var m=r;s||(m=rr(m));var b="defaultValue"===m||"defaultChecked"===m;if(null!=a||l||b)b||h.includes(m)&&(l||"string"!=typeof a)?(e[m]=a,m in i&&(i[m]=Y)):"function"!=typeof a&&Nr(e,m,a);else if(i[r]=null,"value"===m||"checked"===m){let n=e;const r=void 0===t;if("value"===m){let e=n.defaultValue;n.removeAttribute(m),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(m),n.defaultChecked=e,n.checked=!!r&&e}}else e.removeAttribute(r)}else e.value=e.__value=a}}else Sr(e,a,t?.[Ar],n[Ar]),u[r]=a,u[Ar]=n[Ar];else _r(e,"http://www.w3.org/1999/xhtml"===e.namespaceURI,a,0,t?.[Tr],n[Tr]),u[r]=a,u[Tr]=n[Tr]}return c&&ie(!0),u}(e,r,c,0,i,l);s&&o&&"value"in c&&Cr(e,c.value);for(let e of Object.getOwnPropertySymbols(a))c[e]||Sn(a[e]);for(let t of Object.getOwnPropertySymbols(c)){var f=c[t];"@attach"!==t.description||r&&f===r[t]||(a[t]&&Sn(a[t]),a[t]=kn(()=>mr(e,()=>f))),u[t]=f}r=u}),o){var c=e;mn(()=>{Cr(c,r.value,!0),function(e){var t=new MutationObserver(()=>{Cr(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),pn(()=>{t.disconnect()})}(c)})}s=!0})}function jr(e){return e[D]??={[Ir]:e.nodeName.includes("-"),[Pr]:e.namespaceURI===G}}var Br=new Map;function Fr(e){var t,n=e.getAttribute("is")||e.nodeName,r=Br.get(n);if(r)return r;Br.set(n,r=[]);for(var a=e,o=Element.prototype;o!==a;){for(var i in t=s(a))t[i].set&&"innerHTML"!==i&&"textContent"!==i&&"innerText"!==i&&r.push(i);a=f(a)}return r}function Hr(e,t,n=t){var r=new WeakSet;!function(e,t,n,r=n){e.addEventListener(t,()=>Lt(n));const a=e[z];e[z]=a?()=>{a(),r(!0)}:()=>r(!0),Rt()}(e,"input",async a=>{var o=a?e.defaultValue:e.value;if(o=Kr(e)?qr(o):o,n(o),null!==Ke&&r.add(Ke),await on(),o!==(o=t())){var i=e.selectionStart,l=e.selectionEnd,s=e.value.length;if(e.value=o??"",null!==l){var c=e.value.length;i===l&&l===s&&c>s?(e.selectionStart=c,e.selectionEnd=c):(e.selectionStart=i,e.selectionEnd=Math.min(l,c))}}}),(oe&&e.defaultValue!==e.value||null==un(t)&&e.value)&&(n(Kr(e)?qr(e.value):e.value),null!==Ke&&r.add(Ke)),bn(()=>{var n=t();if(e===document.activeElement){var a=Ke;if(r.has(a))return}Kr(e)&&n===qr(e.value)||("date"!==e.type||n||e.value)&&n!==e.value&&(e.value=n??"")})}function Kr(e){var t=e.type;return"number"===t||"range"===t}function qr(e){return""===e?null:+e}function Yr(e,t){return e===t||e?.[R]===t}function Gr(e={},t,n,r){var a=W.r,o=jt;return mn(()=>{var r,i;return bn(()=>{r=i,i=[],un(()=>{Yr(n(...i),e)||(t(e,...i),r&&Yr(n(...r),e)&&t(null,...r))})}),()=>{let r=o;for(;r!==a&&null!==r.parent&&r.parent.f&C;)r=r.parent;const l=r.teardown;r.teardown=()=>{i&&Yr(n(...i),e)&&t(null,...i),l?.()}}}),e}const Wr={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set:(e,t)=>!1,getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t))return t in e.props?{enumerable:!0,configurable:!0,value:e.props[t]}:void 0},has:(e,t)=>!e.exclude.includes(t)&&t in e.props,ownKeys:e=>Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))};function Jr(e,t,n){return new Proxy({props:e,exclude:t},Wr)}function Zr(e,t,n,r){var a,o=r,i=!0,l=()=>(i&&(i=!1,o=r),o);void 0===e[t]&&void 0!==r&&l(),a=()=>{var n=e[t];return void 0===n?l():(i=!0,n)};var s=!1,c=pt(()=>(s=!1,a())),u=jt;return function(e,t){if(arguments.length>0){const n=t?ln(c):e;return Et(c,n),s=!0,void 0!==o&&(o=n),e}return Dt&&s||0!==(u.f&$)?c.v:ln(c)}}class Xr{#Q;#ee;constructor(e){var t=new Map,n=(e,n)=>{var r=Ct(n,!1,!1);return t.set(e,r),r};const r=new Proxy({...e.props||{},$$events:{}},{get:(e,r)=>ln(t.get(r)??n(r,Reflect.get(e,r))),has:(e,r)=>r===L||(ln(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r)),set:(e,r,a)=>(Et(t.get(r)??n(r,a),a),Reflect.set(e,r,a))});this.#ee=(e.hydrate?sr:lr)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),e?.props?.$$host&&!1!==e.sync||nt(),this.#Q=r.$$events;for(const e of Object.keys(this.#ee))"$set"!==e&&"$destroy"!==e&&"$on"!==e&&i(this,e,{get(){return this.#ee[e]},set(t){this.#ee[e]=t},enumerable:!0});this.#ee.$set=e=>{Object.assign(r,e)},this.#ee.$destroy=()=>{!function(e,t){const n=fr.get(e);n?(fr.delete(e),n(t)):Promise.resolve()}(this.#ee)}}$set(e){this.#ee.$set(e)}$on(e,t){this.#Q[e]=this.#Q[e]||[];const n=(...e)=>t.call(this,...e);return this.#Q[e].push(n),()=>{this.#Q[e]=this.#Q[e].filter(e=>e!==n)}}$destroy(){this.#ee.$destroy()}}let Qr=class{};function ea(e,t,n,r){const a=n[e]?.type;if(t="Boolean"===a&&"boolean"!=typeof t?null!=t:t,!r||!n[e])return t;if("toAttribute"===r)switch(a){case"Object":case"Array":return null==t?null:JSON.stringify(t);case"Boolean":return t?"":null;case"Number":return null==t?null:t;default:return t}else switch(a){case"Object":case"Array":return t&&JSON.parse(t);case"Boolean":default:return t;case"Number":return null!=t?+t:t}}function ta(e,t,n,r,a,s){let c=class extends Qr{constructor(){super(e,n,a),this.$$p_d=t}static get observedAttributes(){return o(t).map(e=>(t[e].attribute||e).toLowerCase())}};return o(t).forEach(e=>{i(c.prototype,e,{get(){return this.$$c&&e in this.$$c?this.$$c[e]:this.$$d[e]},set(n){n=ea(e,n,t),this.$$d[e]=n;var r=this.$$c;if(r){var a=l(r,e)?.get;a?r[e]=n:r.$set({[e]:n})}}})}),r.forEach(e=>{i(c.prototype,e,{get(){return this.$$c?.[e]}})}),e.element=c,c}"function"==typeof HTMLElement&&(Qr=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;$$shadowRoot=null;constructor(e,t,n){super(),this.$$ctor=e,this.$$s=t,n&&(this.$$shadowRoot=this.attachShadow(n))}addEventListener(e,t,n){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const n=this.$$c.$on(e,t);this.$$l_u.set(t,n)}super.addEventListener(e,t,n)}removeEventListener(e,t,n){if(super.removeEventListener(e,t,n),this.$$c){const e=this.$$l_u.get(t);e&&(e(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let t=function(e){return t=>{const n=Te("slot");"default"!==e&&(n.name=e),Xn(t,n)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const n={},r=function(e){const t={};return e.childNodes.forEach(e=>{t[e.slot||"default"]=!0}),t}(this);for(const e of this.$$s)e in r&&("default"!==e||this.$$d.children?n[e]=t(e):(this.$$d.children=t(e),n.default=!0));for(const e of this.attributes){const t=this.$$g_p(e.name);t in this.$$d||(this.$$d[t]=ea(t,e.value,this.$$p_d,"toProp"))}for(const e in this.$$p_d)e in this.$$d||void 0===this[e]||(this.$$d[e]=this[e],delete this[e]);this.$$c=(e={component:this.$$ctor,target:this.$$shadowRoot||this,props:{...this.$$d,$$slots:n,$$host:this}},new Xr(e)),this.$$me=function(e){tt.ensure();const t=dn(524352,e);return()=>{Sn(t)}}(()=>{bn(()=>{this.$$r=!0;for(const e of o(this.$$c)){if(!this.$$p_d[e]?.reflect)continue;this.$$d[e]=this.$$c[e];const t=ea(e,this.$$d[e],this.$$p_d,"toAttribute");null==t?this.removeAttribute(this.$$p_d[e].attribute||e):this.setAttribute(this.$$p_d[e].attribute||e,t)}this.$$r=!1})});for(const e in this.$$l)for(const t of this.$$l[e]){const n=this.$$c.$on(e,t);this.$$l_u.set(t,n)}this.$$l={}}var e}attributeChangedCallback(e,t,n){this.$$r||(e=this.$$g_p(e),this.$$d[e]=ea(e,n,this.$$p_d,"toProp"),this.$$c?.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(e){return o(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});var na=Yn('
');function ra(e,t){Z(t,!0);let n,r=Zr(t,"loading"),a=Jr(t,["$$slots","$$events","$$legacy","$$host","loading"]);var o={get loading(){return r()},set loading(e){r(e),nt()}},i=na(),l=Se(i);zr(l,()=>({type:"checkbox",...a}),void 0,void 0,void 0,0,!0),Gr(l,e=>n=e,()=>n);var s=Ee(l,2);return ue(2),ce(i),yn(()=>Nr(i,"data-loading",r())),zn("click",s,function(){n?.click()}),Xn(e,i),X(o)}jn(["click"]),ta(ra,{loading:{}},[],[],{mode:"open"});var aa=Yn('
');function oa(e,t){Z(t,!0);let n=Zr(t,"loading"),r=Jr(t,["$$slots","$$events","$$legacy","$$host","loading"]);var a={get loading(){return n()},set loading(e){n(e),nt()}},o=aa();return zr(Se(o),()=>({type:"checkbox",...r}),void 0,void 0,void 0,0,!0),ue(2),ce(o),yn(()=>Nr(o,"data-loading",n())),Xn(e,o),X(a)}ta(oa,{loading:{}},[],[],{mode:"open"});var ia=Yn('
');function la(e,t){Z(t,!0);let n=Zr(t,"strings");var r={get strings(){return n()},set strings(e){n(e),nt()}},a=ia(),o=Se(a);return Nr(o,"href","https://altcha.org"),ce(a),yn(()=>Nr(o,"aria-label",n().ariaLinkLabel)),Xn(e,a),X(r)}ta(la,{strings:{}},[],[],{mode:"open"});var sa=Yn('');function ca(e,t){Z(t,!0);let n=Zr(t,"logo"),r=Zr(t,"strings");var a={get logo(){return n()},set logo(e){n(e),nt()},get strings(){return r()},set strings(e){r(e),nt()}},o=sa(),i=Se(o);gr(i,()=>r().footer,!0),ce(i);var l=Ee(i,2),s=e=>{la(e,{get strings(){return r()}})};return pr(l,e=>{n()&&e(s)}),ce(o),Xn(e,o),X(a)}ta(ca,{logo:{},strings:{}},[],[],{mode:"open"});var ua=Yn('
');function fa(e,t){Z(t,!0);let n,r=Zr(t,"loading"),a=Jr(t,["$$slots","$$events","$$legacy","$$host","loading"]);var o={get loading(){return r()},set loading(e){r(e),nt()}},i=ua(),l=Se(i);zr(l,()=>({type:"checkbox",...a}),void 0,void 0,void 0,0,!0),Gr(l,e=>n=e,()=>n);var s=Ee(l,2);return ce(i),yn(()=>Nr(i,"data-loading",r())),zn("click",s,function(){n?.click()}),Xn(e,i),X(o)}jn(["click"]),ta(fa,{loading:{}},[],[],{mode:"open"});var da=(e=>(e.ERROR="error",e.LOADING="loading",e.PLAYING="playing",e.PAUSED="paused",e.READY="ready",e))(da||{}),ha=(e=>(e.CODE="code",e.ERROR="error",e.VERIFIED="verified",e.VERIFYING="verifying",e.UNVERIFIED="unverified",e.EXPIRED="expired",e))(ha||{}),pa=Yn('
'),va=Yn('
'),ga=Wn(''),ma=Wn(''),ba=Wn(''),ya=Yn(''),wa=Yn(''),xa=Yn('
');function ka(e,t){Z(t,!0);let n=Zr(t,"audioUrl"),r=Zr(t,"codeChallenge"),a=Zr(t,"config"),o=Zr(t,"imageUrl"),i=Zr(t,"onCancel"),l=Zr(t,"onReload"),s=Zr(t,"onSubmit"),c=Zr(t,"strings"),u=St(void 0),f=St(void 0),d=St(void 0),h=St(!1),p=St(""),v=St(!1);function g(){Et(u,da.PAUSED,!0)}function m(e){Et(u,da.ERROR,!0)}function b(){Et(u,da.READY,!0)}function y(){Et(u,da.LOADING,!0)}function w(){Et(u,da.PLAYING,!0)}function x(){Et(u,da.PAUSED,!0)}function k(){ln(f)?ln(u)===da.LOADING||(ln(f).paused?(n()&&ln(f).src!==n()&&(ln(f).src=n()),ln(f).currentTime=0,ln(f).play()):ln(f).pause()):(Et(v,!0),requestAnimationFrame(()=>{ln(f)&&n()&&(ln(f).src=n(),ln(f).play())}))}hr(()=>(a().disableAutoFocus||on().then(()=>{ln(d)?.focus()}),()=>{ln(f)&&(ln(f).pause(),Et(f,void 0))}));var _={get audioUrl(){return n()},set audioUrl(e){n(e),nt()},get codeChallenge(){return r()},set codeChallenge(e){r(e),nt()},get config(){return a()},set config(e){a(e),nt()},get imageUrl(){return o()},set imageUrl(e){o(e),nt()},get onCancel(){return i()},set onCancel(e){i(e),nt()},get onReload(){return l()},set onReload(e){l(e),nt()},get onSubmit(){return s()},set onSubmit(e){s(e),nt()},get strings(){return c()},set strings(e){c(e),nt()}},$=xa(),S=Se($),C=Se(S),E=e=>{var t=pa(),n=Se(t,!0);ce(t),yn(()=>ir(n,c().verificationRequired)),Xn(e,t)};pr(C,e=>{"standard"!==a().codeChallengeDisplay&&e(E)});var T=Ee(C,2),A=Se(T,!0);ce(T);var I=Ee(T,2),P=Ee(I,2),O=Se(P);Ur(O),O.disabled=ln(h),Gr(O,e=>Et(d,e),()=>ln(d));var R=Ee(O,2),L=e=>{var t=ya(),n=Se(t),r=e=>{Xn(e,va())},a=e=>{Xn(e,ga())},o=e=>{Xn(e,ma())},i=e=>{Xn(e,ba())};pr(n,e=>{ln(u)===da.LOADING?e(r):ln(u)===da.ERROR?e(a,1):ln(u)===da.PLAYING?e(o,2):e(i,-1)}),ce(t),yn(()=>{Nr(t,"title",c().getAudioChallenge),t.disabled=ln(u)===da.LOADING||ln(u)===da.ERROR,Nr(t,"aria-label",ln(u)===da.LOADING?c().loading:c().getAudioChallenge)}),Nn("click",t,()=>k(),!0),Xn(e,t)};pr(R,e=>{r().audio&&e(L)});var M=Ee(R,2);ce(P);var D=Ee(P,2),U=Se(D),V=Se(U,!0);ce(U);var N=Ee(U,2),z=Se(N,!0);ce(N),ce(D),ce(S);var j=Ee(S,2),B=e=>{var t=wa();Gr(t,e=>Et(f,e),()=>ln(f)),Nn("error",t,m),Nn("loadstart",t,y),Nn("canplay",t,b),Nn("pause",t,x),Nn("playing",t,w),Nn("ended",t,g),Xn(e,t)};return pr(j,e=>{ln(v)&&e(B)}),ce($),yn(()=>{ir(A,c().enterCodeFromImage),Nr(I,"src",o()),Nr(O,"minlength",r().length||1),Nr(O,"maxlength",r().length),Nr(O,"placeholder",c().enterCode),Nr(O,"aria-label",ln(u)===da.LOADING?c().loading:ln(u)===da.PLAYING?"":c().enterCodeAria),Nr(O,"aria-live",ln(u)?"assertive":"polite"),Nr(O,"aria-busy",ln(u)===da.LOADING),Nr(M,"title",c().reload),Nr(M,"aria-label",c().reload),Nr(U,"aria-label",c().verify),ir(V,c().verify),Nr(N,"aria-label",c().cancel),ir(z,c().cancel)}),Nn("submit",S,function(e){e.preventDefault(),e.stopPropagation(),s()?.(ln(p))},!0),zn("keydown",O,function(e){"Space"===e.code?(e.preventDefault(),e.stopPropagation(),k()):"Escape"===e.code&&(e.preventDefault(),e.stopPropagation(),i()?.())}),Hr(O,()=>ln(p),e=>Et(p,e)),Nn("click",M,()=>l()?.(),!0),Nn("click",N,()=>i()?.(),!0),Xn(e,$),X(_)}jn(["keydown"]),ta(ka,{audioUrl:{},codeChallenge:{},config:{},imageUrl:{},onCancel:{},onReload:{},onSubmit:{},strings:{}},[],[],{mode:"open"});var _a=Yn('
'),$a=Yn('
'),Sa=Yn('
×
'),Ca=Yn('
',1);function Ea(e,t){Z(t,!0);let n=Zr(t,"anchor"),r=Zr(t,"children"),a=Zr(t,"display",0,"standard"),o=Zr(t,"backdrop",0,!1),i=Zr(t,"onClickOutside"),l=Zr(t,"onClickOutsideDelay",0,600),s=Zr(t,"onClose"),c=Zr(t,"placement",0,"auto"),u=Zr(t,"updateUISignal"),f=Zr(t,"variant",0,"neutral"),d=Jr(t,["$$slots","$$events","$$legacy","$$host","anchor","children","display","backdrop","onClickOutside","onClickOutsideDelay","onClose","placement","updateUISignal","variant"]),p=St(void 0),v=St(void 0),g=St(!1),m=St(0);function b(){s()?.()}function y(){if(n()&&"auto"===c()&&ln(p)){const e=n().getBoundingClientRect(),t=document.documentElement.clientHeight-(e.top+e.height){"auto"!==c()&&Et(g,"top"===c())}),vn(()=>{u()&&y()}),hr(()=>{const e="bottomsheet"===a()||"overlay"===a();return e&&(ln(v)&&document.body.append(ln(v)),ln(p)&&document.body.append(ln(p))),y(),on().then(()=>{Et(m,Date.now(),!0)}),()=>{e&&(ln(v)&&document.body.removeChild(ln(v)),ln(p)&&document.body.removeChild(ln(p)))}});var w={get anchor(){return n()},set anchor(e){n(e),nt()},get children(){return r()},set children(e){r(e),nt()},get display(){return a()},set display(e="standard"){a(e),nt()},get backdrop(){return o()},set backdrop(e=!1){o(e),nt()},get onClickOutside(){return i()},set onClickOutside(e){i(e),nt()},get onClickOutsideDelay(){return l()},set onClickOutsideDelay(e=600){l(e),nt()},get onClose(){return s()},set onClose(e){s(e),nt()},get placement(){return c()},set placement(e="auto"){c(e),nt()},get updateUISignal(){return u()},set updateUISignal(e){u(e),nt()},get variant(){return f()},set variant(e="neutral"){f(e),nt()}},x=Ca();Nn("click",ge,function(e){const t=e.target;ln(p)?.contains(t)||l()&&!(ln(m)+l(){var t=_a();Gr(t,e=>Et(v,e),()=>ln(v)),Xn(e,t)};pr(k,e=>{o()&&e(_)});var $=Ee(k,2);zr($,()=>({...d,class:`altcha-popover ${(t.class||"")??""}`,"data-popover":!0,"data-variant":f(),"data-top":ln(g),"data-display":a()}));var S=Se($),C=e=>{Xn(e,$a())};pr(S,e=>{"standard"===a()&&e(C)});var T=Ee(S,2),A=e=>{var t=Sa();Nn("click",t,b,!0),Xn(e,t)};pr(T,e=>{"standard"!==a()&&e(A)});var I=Ee(T,2);return function(e,t,...n){var r=new dr(e);wn(()=>{const e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},E)}(Se(I),()=>r()??h),ce(I),ce($),Gr($,e=>Et(p,e),()=>ln(p)),Xn(e,x),X(w)}async function Ta(e){const{challenge:t,concurrency:n=navigator.hardwareConcurrency,controller:r=new AbortController,createWorker:a,onOutOfMemory:o=e=>e>1?Math.floor(e/2):0,counterMode:i,timeout:l=9e4}=e,s=Math.min(16,Math.max(1,n)),c=[],u=()=>{for(const e of c)e.terminate()};for(let e=0;e(r.signal.addEventListener("abort",()=>{e.postMessage({type:"abort"})}),new Promise((r,a)=>{e.addEventListener("error",e=>{a(e)}),e.addEventListener("message",t=>{if(t.data){for(const t of c)t!==e&&t.postMessage({type:"abort"});if(t.data.error)return a(new Error(t.data.error))}r(t.data)}),e.postMessage({challenge:t,counterMode:i,counterStart:n,counterStep:s,timeout:l,type:"work"})}))))}catch(n){if(n instanceof Error&&!!n?.message?.includes("Out of memory")&&o){u();const n=o(s);if(n)return Ta({...e,challenge:t,controller:r,concurrency:n,createWorker:a})}throw n}finally{u()}return r.signal.aborted?null:f||null}ta(Ea,{anchor:{},children:{},display:{},backdrop:{},onClickOutside:{},onClickOutsideDelay:{},onClose:{},placement:{},updateUISignal:{},variant:{}},[],[],{mode:"open"});class Aa{TAG_CODES={INPUT:1,TEXTAREA:2,SELECT:3,BUTTON:4,A:5,DETAILS:6,SUMMARY:7,IFRAME:8,VIDEO:9,AUDIO:10};maxSamples;sampleInterval;target;focusStartTime=0;focusInteraction=0;focusInteractionTimer=null;lastPointerSample=0;lastTouchSample=0;lastScrollSample=0;pendingPointer=null;pendingTouch=null;focus=[];pointer=[];scroll=[];touch=[];constructor(e={}){const{maxSamples:t=60,sampleInterval:n=50,target:r=window}=e;this.maxSamples=t,this.sampleInterval=n,this.target=r,this.attach()}destroy(){const e={capture:!0};this.target.removeEventListener("focusin",this.onFocus,e),this.target.removeEventListener("keydown",this.onInteraction,e),this.target.removeEventListener("pointerdown",this.onInteraction,e),this.target.removeEventListener("pointermove",this.onPointer,e),this.target.removeEventListener("scroll",this.onScroll,e),this.target.removeEventListener("touchmove",this.onTouchMove,e)}export(){return{focus:this.focus,maxTouchPoints:navigator.maxTouchPoints||0,pointer:this.pointer,scroll:this.scroll,time:Date.now(),touch:this.touch}}attach(){const e={passive:!0,capture:!0};this.target.addEventListener("focusin",this.onFocus,e),this.target.addEventListener("keydown",this.onInteraction,e),this.target.addEventListener("pointerdown",this.onInteraction,e),this.target.addEventListener("pointermove",this.onPointer,e),this.target.addEventListener("scroll",this.onScroll,e),this.target.addEventListener("touchmove",this.onTouchMove,e)}evict(e){e.length>this.maxSamples&&e.splice(0,e.length-this.maxSamples)}onFocus=e=>{if(2===this.focusInteraction)return;const t=e.target;if(!(t instanceof Element))return;const n=performance.now();0===this.focusStartTime&&(this.focusStartTime=n),this.focus.push([Math.round(n-this.focusStartTime),t.tabIndex,this.TAG_CODES[t.tagName]??0,this.focusInteraction?1:0]),this.evict(this.focus)};onInteraction=e=>{this.focusInteraction="keyCode"in e?1:2,this.focusInteractionTimer&&clearTimeout(this.focusInteractionTimer),this.focusInteractionTimer=setTimeout(()=>{this.focusInteraction=0},100)};onPointer=e=>{if("touch"===e.pointerType)return;const t=e.timeStamp||performance.now();this.pendingPointer=[Math.round(e.clientX),Math.round(e.clientY),Math.round(t)],t-this.lastPointerSample>=this.sampleInterval&&(this.pointer.push(this.pendingPointer),this.lastPointerSample=t,this.pendingPointer=null,this.evict(this.pointer))};onScroll=()=>{const e=performance.now();e-this.lastScrollSample{const t=e.timeStamp||performance.now(),n=e.touches[0];n&&(this.pendingTouch=[Math.round(n.clientX),Math.round(n.clientY),Math.round(t),Math.round(1e3*n.force)/1e3,Math.round(n.radiusX||0),Math.round(n.radiusY||0)],t-this.lastTouchSample>=this.sampleInterval&&(this.touch.push(this.pendingTouch),this.lastTouchSample=t,this.pendingTouch=null,this.evict(this.touch)))}}var Ia=Yn('
'),Pa=Yn('
'),Oa=Yn('
×
',1),Ra=Yn('
'),La=Yn(''),Ma=Yn('
Secure context (HTTPS) required.
'),Da=Yn('
'),Ua=Yn('
'),Va=Yn(" ",1),Na=Yn('
',1);"undefined"!=typeof window&&window.customElements&&!customElements.get("altcha-widget")&&customElements.define("altcha-widget",ta(function(e,t){Z(t,!0);const[n,r]=function(){const e={};return[e,function(){pn(()=>{for(var t in e)e[t].unsubscribe();i(e,je,{enumerable:!1,value:!0})})}]}(),a=["ar","fa","he","ur"],{isSecureContext:o}=globalThis,{store:l}=globalThis.$altcha.defaults,s=navigator.hardwareConcurrency||2,c=navigator.deviceMemory||0,u=c&&c<=4?Math.min(4,s):s,f=globalThis.$altcha.i18n.store,d=t.$$host,h=(e,t)=>{on().then(()=>{d?.dispatchEvent(new CustomEvent(e,{detail:t}))})};let p=null,v=St(he(new URL(location.origin))),g=St(!1),m=St(null),b=St(null),y=St(null),w=St(he(ha.UNVERIFIED)),x=St(void 0),k=St(void 0),_=St(null),$=St(void 0),S=St(null),C=St(null),T=St(null),A=St(null),I=St(he([])),P=St(0),O=St(he({})),R=St(!0);const L=mt(()=>({fetch:(e,t)=>fetch(e,t),audioChallengeLanguage:"",auto:"off",barPlacement:"bottom",challenge:"",codeChallenge:null,codeChallengeDisplay:"standard",credentials:null,debug:!1,disableAutoFocus:!1,display:"standard",floatingAnchor:"",floatingOffset:8,floatingPersist:!1,floatingPlacement:"auto",hideFooter:!1,hideLogo:!1,humanInteractionSignature:!0,language:"",mockError:!1,minDuration:500,overlayContent:"",name:"altcha",popoverPlacement:"auto",retryOnOutOfMemoryError:!0,setCookie:null,serverVerificationFields:!1,serverVerificationTimeZone:!1,test:!1,timeout:9e4,type:"checkbox",validationMessage:"",verifyFunction:null,verifyUrl:"",workers:u,...Be(l,"$altchaDefaults",n),...ln(O)})),M=mt(()=>`altcha-checkbox-${t.id||Math.floor(1e12*Math.random()).toString(16)}`),D=mt(()=>function(e){switch(e){case"checkbox":return ra;case"switch":return fa;default:return oa}}(ln(L).type)),U=mt(()=>ln(L).auto),V=mt(()=>ln(w)===ha.VERIFYING),N=mt(()=>!ln(L).hideFooter),z=mt(()=>!ln(L).hideLogo&&"bar"!==ln(L).display),j=mt(()=>function(e,t){const n=Object.keys(e).map(e=>e.toLowerCase());let r=t.reduce((t,r)=>(r=r.toLowerCase(),t||(e[r]?r:null)||n.find(e=>r.split("-")[0]===e.split("-")[0])||null),null);e[r||""]||(r="en");return{language:r,strings:e[r]}}(Be(f,"$altchaI18nStore",n),[ln(L).language,document.documentElement.lang,...navigator.languages])),B=mt(()=>a.includes(ln(j).language)?"rtl":void 0),F=mt(()=>({...ln(j).strings})),H=mt(()=>ln(m)?.audio?.match(/^(https?:)?\//)?Q(ln(m).audio,ln(v),{language:ln(L).audioChallengeLanguage||ln(j).language}).toString():ln(m)?.audio),K=mt(()=>ln(m)?.image?.match(/^(https?:)?\//)?Q(ln(m).image,ln(v)):ln(m)?.image);async function q(e,...t){let n;for(const r of ln(I))n=await r[e].call(r,...t);return n}async function Y(e){await new Promise(t=>setTimeout(t,e))}async function G(e=ln(L).challenge,t){const n=await q("onFetchChallenge",e);let r=null;if(void 0!==n)return n;if("string"==typeof e)if(e.startsWith("{")){_e("parsing JSON challenge");try{r=JSON.parse(e)}catch{throw new Error("Unable to parse JSON challenge.")}}else{_e("fetching challenge from",t?.method||"GET",e),Et(v,new URL(e,location.origin),!0);const n=await ln(L).fetch(e,{credentials:ln(L).credentials||void 0,...t});await ye(n);const a=n.headers.get("x-altcha-config");a&&function(e){try{const t=JSON.parse(e);t&&"object"==typeof t&&xe({serverVerificationFields:t?.sentinel?.fields,serverVerificationTimeZone:t?.sentinel?.timeZone,verifyUrl:t.verifyurl,...t})}catch(e){_e("unable to configure from x-altcha-config header",e)}}(a);const o=await n.json();if(o&&"his"in o&&o.his){if(_e("requested HIS"),!p)throw new Error("Server requested HIS data but collector is disabled.");return G(Q(o.his.url,ln(v)),{body:JSON.stringify({his:p.export()}),headers:{"content-type":"application/json"},method:"POST"})}o&&"hisResult"in o&&o.hisResult&&_e("HIS result",o.hisResult),r=o}else if(e&&"object"==typeof e)try{r=JSON.parse(JSON.stringify(e))}catch{throw new Error("Unable to parse JSON challenge.")}if(function(e){return"object"==typeof e&&"challenge"in e}(r)&&(r=function(e){const[t,n]=e.salt.split("?"),r={};if(n)try{Object.assign(r,Object.fromEntries(new URLSearchParams(n).entries()))}catch{}const a={codeChallenge:e.codeChallenge,parameters:{algorithm:e.algorithm,cost:1,data:r,expiresAt:r?.expires?parseInt(r.expires,10):void 0,keyLength:"SHA-512"===e.algorithm?64:"SHA-384"===e.algorithm?48:32,nonce:(o=(new TextEncoder).encode(e.salt),Array.from(new Uint8Array(o)).map(e=>e.toString(16).padStart(2,"0")).join("")),keyPrefix:e.challenge,salt:""},signature:e.signature};var o;return Object.defineProperties(a,{_originalSalt:{enumerable:!1,value:e.salt,writable:!1},_version:{enumerable:!1,value:1,writable:!1}}),a}(r)),!function(e){return!!e&&"object"==typeof e&&"parameters"in e&&!!e.parameters&&"object"==typeof e.parameters&&"algorithm"in e.parameters&&"nonce"in e.parameters&&"salt"in e.parameters&&"keyPrefix"in e.parameters}(r))throw new Error("Challenge validation failed.");return r}function W(){return document.getElementById(ln(M))}function J(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function Q(e,t,n){const r=new URL(e,t);if(r.search||(r.search=t.search),n)for(const e in n)void 0!==n[e]&&null!==n[e]&&r.searchParams.set(e,n[e]);return r.toString()}function ee(e){!ln(g)&&e.currentTarget.checked?(e.preventDefault(),e.currentTarget.checked=!1,ln(w)!==ha.VERIFYING&&Pe()):e.currentTarget.checked||(e.preventDefault(),$e())}function te(e){ln(w)===ha.VERIFYING?e.currentTarget.setCustomValidity(ln(F).waitAlert):ln(L).validationMessage&&e.currentTarget.setCustomValidity(ln(L).validationMessage)}function ne(){be(ln(L).display),$e()}function re(e){"onfocus"===ln(U)&&ln(w)===ha.UNVERIFIED&&Pe()}function ue(){be(ln(L).display),$e()}function pe(e){const t=e.target;"true"!==t?.getAttribute("data-code-challenge")&&"onsubmit"===ln(U)&&ln(w)===ha.UNVERIFIED&&(e.preventDefault(),e.stopPropagation(),Et(S,e.submitter,!0),Ae(),Pe().then(e=>{e&&!ln(m)&&on().then(()=>{ve(ln(S))})}))}function ve(e){ln(_)&&"requestSubmit"in ln(_)?ln(_).requestSubmit(e):ln(_)?.reportValidity()&&(e?e.click():ln(_).submit())}function be(e){switch(e){case"bar":case"floating":case"overlay":ke(),ln(U)&&"off"!==ln(U)||(ln(O).auto="onsubmit");break;case"standard":Ae()}ln(y)!==e&&Et(y,e,!0)}async function ye(e){if(e.status>=400){if(e.headers.get("content-type")?.includes("/json")){let t;try{t=await e.json()}catch{}if(t&&"error"in t)throw new Error(`Server responded with ${e.status} - ${t.error}`)}throw new Error(`Server responded with ${e.status}.`)}const t=e.headers.get("content-type");if(!t||!t.includes("/json"))throw new Error(`Server responded with invalid content-type. Expected application/json, received ${t}.`)}async function we(e){if(!ln(A))return void Te(ha.ERROR,"Cannot verify code challenge without PoW payload.");Te(ha.VERIFYING);let t=null;if(ln(L).verifyUrl)t=await async function(e,t){const n=await q("onRequestServerVerification",e,t);if(void 0!==n)return n;if(_e("requesting server verification from",ln(L).verifyUrl),!ln(L).verifyUrl)throw new Error("Parameter verifyUrl must be set for server verification.");const r=await ln(L).fetch(Q(ln(L).verifyUrl,ln(v)),{body:JSON.stringify({code:t,fields:ln(L).serverVerificationFields?[...ln(_)?.querySelectorAll('input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')||[]].reduce((e,t)=>{const n=t.name,r=t.value;return n&&r&&(e[n]=/\n/.test(r)?r.replace(new RegExp("(?{ve(ln(S))})):Te(ha.ERROR,t?.reason||"Verification failed."),ln(L).disableAutoFocus||W()?.focus()}function xe(e){Object.assign(ln(O),{...Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t))})}function ke(){Et(R,!1)}function _e(...e){(ln(L).debug||e.some(e=>e instanceof Error))&&console[e[0]instanceof Error?"error":"log"]("ALTCHA",`[name=${ln(L).name}]`,...e)}function $e(e=ha.UNVERIFIED,t=null){Et(g,!1),Et(C,t,!0),Et(A,null),ln(b)&&ln(b).abort(),ln(T)&&(clearTimeout(ln(T)),Et(T,null)),Te(e)}function Te(e,t=null){Et(w,e,!0),Et(C,t,!0),h("statechange",{payload:ln(A),state:ln(w)})}function Ae(){Et(R,!0),on().then(()=>{Ie()})}function Ie(){if("floating"===ln(L).display)return function(e=20){if(!ln($))return;const t=ln(L).floatingPlacement;if(!ln(k)&&(Et(k,(ln(L).floatingAnchor instanceof HTMLElement?ln(L).floatingAnchor:ln(L).floatingAnchor?document.querySelector(ln(L).floatingAnchor):ln(_)?.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])'))||ln(_),!0),!ln(k)))return void _e("unable to find floating anchor element");const n=parseInt(ln(L).floatingOffset,10)||12,r=ln(k).getBoundingClientRect(),a=ln($).getBoundingClientRect(),o=document.documentElement.clientHeight,i=document.documentElement.clientWidth,l=t&&"auto"!==t?"top"===t:r.bottom+a.height+n+e>o,s=Math.max(e,Math.min(i-e-a.width,r.left+r.width/2-a.width/2));if(ln($).style.setProperty("--altcha-floating-left",`${s}px`),ln($).style.setProperty("--altcha-floating-top",l?r.top-(a.height+n)+"px":`${r.bottom+n}px`),ln($).setAttribute("data-floating-position",l?"top":"bottom"),ln(x)){const e=ln(x).getBoundingClientRect();ln(x).style.left=r.left-s+r.width/2-e.width/2+"px"}}();Et(P,ln(P)+1)}async function Pe(e={}){const{concurrency:t=Math.max(1,ln(L).workers),controller:n=new AbortController,minDuration:r=ln(L).minDuration}=e,a=performance.now();let i=null,l=null,s=!1;const c=await q("onVerify",e);if(void 0!==c)return c;$e(ha.VERIFYING),Et(b,n,!0);try{if(!o)throw new Error("Secure context (HTTPS) required.");if(ln(L).mockError)throw new Error("Mock error.");if(ln(L).test)return _e("running test mode with null challenge"),await Y(Math.max(0,r-(performance.now()-a))),ln(b)?.signal.aborted?($e(),null):(Et(A,btoa(JSON.stringify({challenge:null,solution:null,test:!0})),!0),_e("verified"),Te(ha.VERIFIED),h("verified",{payload:ln(A)}),{payload:ln(A)});if(i=await G(),!i)throw new Error("Failed to fetch challenge.");_e("challenge",i),"configuration"in i&&(_e("re-configuring from challenge",i.configuration),xe(i.configuration)),i.parameters.expiresAt&&function(e){ln(T)&&clearTimeout(ln(T));const t=()=>{ln(w)!==ha.UNVERIFIED?(Et(g,!1),Te(ha.EXPIRED)):$e(),h("expired")},n=1e3*e-Date.now();n>=1?Et(T,setTimeout(t,n),!0):t()}(i.parameters.expiresAt),s="_version"in i&&1===i._version;const e=globalThis.$altcha.algorithms.get(i.parameters.algorithm);if(!e)throw new Error(`Unsupported algorithm ${i.parameters.algorithm}.`);if(l=await Ta({challenge:i,concurrency:t,controller:n,createWorker:e,counterMode:s?"string":"uint32",onOutOfMemory:e=>{if(_e("out of memory error received"),h("outofmemory"),ln(L).retryOnOutOfMemoryError&&e>1){const t=Math.floor(e/2);return _e(`retrying with ${t} workers...`),t}},timeout:ln(L).timeout}),ln(b)?.signal.aborted)return $e(),null;if(!l)throw new Error("Failed to find solution.");_e("solution",l),await Y(Math.max(0,r-(performance.now()-a))),Et(m,i.codeChallenge||ln(L).codeChallenge||null,!0),Et(A,s?btoa(JSON.stringify(function(e,t){return{algorithm:e.parameters.algorithm,challenge:e.parameters.keyPrefix,number:t.counter,salt:"_originalSalt"in e?e._originalSalt:e.parameters.nonce,signature:e.signature,took:t.time||0}}(i,l))):btoa(JSON.stringify({challenge:{parameters:i.parameters,signature:i.signature},solution:l})),!0),ln(m)?(_e("requesting code verification"),Te(ha.CODE),h("codechallenge",{codeChallenge:ln(m)})):ln(L).verifyUrl?await we():(_e("verified"),Te(ha.VERIFIED),h("verified",{payload:ln(A)}))}catch(e){return _e("verification failed",e),Te(ha.ERROR,String(e)),null}finally{Et(b,null)}return{challenge:i,payload:ln(A),solution:l}}vn(()=>{xe({auto:t.auto,challenge:t.challenge,display:t.display,language:t.language,name:t.name,type:t.type,workers:t.workers})}),vn(()=>{if(t.configuration)try{xe(JSON.parse(t.configuration))}catch{_e("unable to parse the `configuration` attribute (JSON expected)")}}),vn(()=>{ln(y)!==ln(L).display&&be(ln(L).display)}),vn(()=>{ln(g)&&ln(w)===ha.VERIFYING&&Et(g,!1)}),vn(()=>{ln(g)||ln(w)!==ha.VERIFIED||Et(g,!0)}),vn(()=>{if(!ln(g)){const e=W();e&&e.checked&&(e.checked=!1)}}),vn(()=>{ln(w)===ha.VERIFIED&&W()?.setCustomValidity("")}),vn(()=>{if("onload"===ln(U)){const e=setTimeout(()=>{Pe()},1);return()=>{e&&clearTimeout(e)}}}),vn(()=>{ln(C)&&_e("error:",ln(C))}),vn(()=>{ln(A)&&ln(L).setCookie&&function(e,t={}){const{domain:n,name:r=ln(L).name,maxAge:a,path:o,sameSite:i,secure:l}=t;let s=`${encodeURIComponent(r)}=${encodeURIComponent(e)}`;n&&(s+=`; Domain=${n}`);null!=a&&(s+=`; Max-Age=${a}`);o&&(s+=`; Path=${o}`);i&&(s+=`; SameSite=${i}`);l&&(s+="; Secure");document.cookie=s}(ln(A),ln(L).setCookie)}),hr(()=>(_e("mounted","3.0.11"),d&&globalThis.$altcha.instances.add(d),Et(_,ln($)?.closest("form"),!0),ln(_)?.addEventListener("reset",ue),ln(_)?.addEventListener("submit",pe,{capture:!0}),ln(_)?.addEventListener("focusin",re),function(){Et(I,[...globalThis.$altcha.plugins].map(e=>new e(d)),!0),_e("activating plugins",ln(I).map(e=>e.constructor.name));for(const e of ln(I))e.activate()}(),ln(L).humanInteractionSignature&&(_e("human interaction signature enabled"),p=new Aa),h("load"),o||_e("secure context (HTTPS) required"),()=>{!function(){for(const e of ln(I))e.destroy()}(),d&&globalThis.$altcha.instances.delete(d),ln(T)&&clearTimeout(ln(T)),ln(_)?.removeEventListener("reset",ue),ln(_)?.removeEventListener("submit",pe,{capture:!0}),ln(_)?.removeEventListener("focusin",re),p?.destroy()}));var Oe={configure:xe,getConfiguration:function(){return{...ln(L)}},getState:function(){return ln(w)},hide:ke,log:_e,reset:$e,setState:Te,show:Ae,updateUI:Ie,verify:Pe},Re=Na();Nn("scroll",me,function(){Ie()}),Nn("click",me,function(e){const t=e.target;"floating"!==ln(L).display||!t||d?.contains(t)||t.hasAttribute("data-backdrop")||t.closest("[data-popover]")||ln(w)===ha.VERIFIED||ln(L).floatingPersist||ke()}),Nn("pageshow",ge,function(e){e.persisted&&(be(ln(L).display),$e())}),Nn("resize",ge,function(){Ie()});var Le=Ce(Re),Me=e=>{Xn(e,Ia())};pr(Le,e=>{"overlay"===ln(L).display&&ln(R)&&e(Me)});var De=Ee(Le,2),Ue=Se(De),Ve=e=>{var t=Oa(),n=Ce(t),r=Ee(n,2),a=e=>{var t=Pa();gr(t,()=>document.querySelector(ln(L).overlayContent)?.innerHTML,!0),ce(t),Xn(e,t)};pr(r,e=>{ln(L).overlayContent&&e(a)}),Nn("click",n,ne,!0),Xn(e,t)};pr(Ue,e=>{"overlay"===ln(L).display&&ln(R)&&e(Ve)});var Ne=Ee(Ue,2),ze=Se(Ne),Fe=Se(ze),He=Se(Fe);{let e=mt(()=>"standard"===ln(L).display&&"onsubmit"!==ln(U)||ln(w)===ha.VERIFYING);!function(e,t,n){var r;oe&&(r=ae,se());var a=new dr(e);wn(()=>{var e=t()??null;if(oe&&"["===de(r)!=(null!==e)){var o=fe();return le(o),a.anchor=o,ie(!1),a.ensure(e,e&&(t=>n(t,e))),void ie(!0)}a.ensure(e,e&&(t=>n(t,e)))},E)}(He,()=>ln(D),(t,n)=>{n(t,{get id(){return ln(M)},name:"",get required(){return ln(e)},get loading(){return ln(V)},get checked(){return ln(g)},onchange:ee,oninvalid:te})})}var Ke=Ee(He,2),qe=Se(Ke),Ye=e=>{var t=Jn();yn(()=>ir(t,ln(F).verificationRequired)),Xn(e,t)},Ge=e=>{var t=Jn();yn(()=>ir(t,ln(F).verifying)),Xn(e,t)},We=e=>{var t=Jn();yn(()=>ir(t,ln(F).verified)),Xn(e,t)},Je=e=>{var t=Jn();yn(()=>ir(t,ln(F).label)),Xn(e,t)};pr(qe,e=>{ln(w)===ha.CODE&&ln(m)?e(Ye):ln(w)===ha.VERIFYING?e(Ge,1):ln(w)===ha.VERIFIED?e(We,2):e(Je,-1)}),ce(Ke),ce(Fe);var Ze=Ee(Fe,2),Xe=e=>{la(e,{get strings(){return ln(F)}})};pr(Ze,e=>{ln(z)&&e(Xe)}),ce(ze);var Qe=Ee(ze,2),et=e=>{{let t=mt(()=>"bar"===ln(L).display&&ln(z));ca(e,{get logo(){return ln(t)},get strings(){return ln(F)}})}};pr(Qe,e=>{ln(N)&&e(et)});var tt=Ee(Qe,2),nt=e=>{var t=Ra();Gr(t,e=>Et(x,e),()=>ln(x)),Xn(e,t)};pr(tt,e=>{"floating"===ln(L).display&&e(nt)});var rt=Ee(tt,2),at=e=>{var t=La();Ur(t),yn(()=>{var e,n,r;Nr(t,"name",ln(L).name),e=t,n=ln(A),(r=jr(e)).value!==(r.value=n??void 0)&&(e.value!==n||0===n&&e.nodeName===Dr)&&(e.value=n??"")}),Xn(e,t)};pr(rt,e=>{ln(L).setCookie||e(at)}),ce(Ne);var ot=Ee(Ne,2),it=e=>{Ea(e,{get anchor(){return ln($)},onClickOutside:()=>{o&&$e()},get placement(){return ln(L).popoverPlacement},role:"alert",variant:"error",get dir(){return ln(B)},get updateUISignal(){return ln(P)},children:(e,t)=>{var n=Zn(),r=Ce(n),a=e=>{Xn(e,Ma())},i=e=>{var t=Da(),n=Se(t,!0);ce(t),yn(()=>ir(n,ln(F).expired)),Xn(e,t)},l=e=>{var t=Ua(),n=Se(t,!0);ce(t),yn(()=>{Nr(t,"title",ln(C)),ir(n,ln(F).error)}),Xn(e,t)};pr(r,e=>{ln(C)||o?ln(C)||ln(w)!==ha.EXPIRED?e(l,-1):e(i,1):e(a)}),Xn(e,n)},$$slots:{default:!0}})},lt=e=>{var t=Zn();!function(e,t,n){oe&&se();var r=new dr(e);wn(()=>{var e=t();e!=e&&(e=vr),r.ensure(e,n)})}(Ce(t),()=>ln(m),e=>{{let t=mt(()=>"standard"!==ln(L).codeChallengeDisplay);Ea(e,{get anchor(){return ln($)},get backdrop(){return ln(t)},get display(){return ln(L).codeChallengeDisplay},onClose:()=>{$e()},get placement(){return ln(L).popoverPlacement},role:"dialog",get"aria-label"(){return ln(F).verificationRequired},get dir(){return ln(B)},get updateUISignal(){return ln(P)},children:(e,t)=>{var n=Va(),r=Ce(n);ka(r,{get audioUrl(){return ln(H)},get imageUrl(){return ln(K)},onCancel:()=>$e(),onReload:()=>Pe(),onSubmit:e=>we(e),get codeChallenge(){return ln(m)},get config(){return ln(L)},get strings(){return ln(F)}});var a=Ee(r,2),o=e=>{ca(e,{get logo(){return ln(z)},get strings(){return ln(F)}})};pr(a,e=>{ln(N)&&"standard"!==ln(L).codeChallengeDisplay&&e(o)}),Xn(e,n)},$$slots:{default:!0}})}}),Xn(e,t)};pr(ot,e=>{ln(C)||ln(w)===ha.EXPIRED||!o?e(it):ln(m)&&ln(w)===ha.CODE&&e(lt,1)}),ce(De),Gr(De,e=>Et($,e),()=>ln($)),yn(e=>{Nr(De,"data-state",ln(w)),Nr(De,"data-display",ln(L).display||void 0),Nr(De,"data-placement",e),Nr(De,"data-visible",ln(R)||void 0),Nr(De,"dir",ln(B)),Nr(Ke,"for",ln(M)),De.dir=De.dir},[()=>function(e){switch(e){case"bar":return ln(L).barPlacement||"bottom";case"floating":return ln(L).floatingPlacement||"auto";default:return}}(ln(L).display)]),Xn(e,Re);var st=X(Oe);return r(),st},{auto:{type:"String"},challenge:{type:"String"},configuration:{type:"String"},display:{type:"String"},language:{type:"String"},name:{type:"String"},theme:{type:"String"},type:{type:"String"},workers:{type:"Number"}},[],["configure","getConfiguration","getState","hide","log","reset","setState","show","updateUI","verify"]));const za='(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n function getDigest(algorithm) {\n switch (algorithm) {\n case "PBKDF2/SHA-512":\n return "SHA-512";\n case "PBKDF2/SHA-384":\n return "SHA-384";\n case "PBKDF2/SHA-256":\n default:\n return "SHA-256";\n }\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, cost, keyLength = 32 } = parameters;\n const passwordKey = await crypto.subtle.importKey(\n "raw",\n password,\n { name: "PBKDF2" },\n false,\n ["deriveKey"]\n );\n const derivedKey = await crypto.subtle.deriveKey(\n {\n name: "PBKDF2",\n salt,\n iterations: cost,\n hash: getDigest(algorithm)\n },\n passwordKey,\n { name: "AES-GCM", length: keyLength * 8 },\n true,\n ["encrypt"]\n );\n return {\n derivedKey: new Uint8Array(await crypto.subtle.exportKey("raw", derivedKey))\n };\n }\n handler({\n deriveKey\n });\n})();\n',ja="undefined"!=typeof self&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",za],{type:"text/javascript;charset=utf-8"});function Ba(e){let t;try{if(t=ja&&(self.URL||self.webkitURL).createObjectURL(ja),!t)throw"";const n=new Worker(t,{name:e?.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(za),{name:e?.name})}}const Fa='(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, keyLength = 32 } = parameters;\n const iterations = Math.max(1, parameters.cost);\n let data = void 0;\n let derivedKey = void 0;\n for (let i = 0; i < iterations; i++) {\n if (i === 0) {\n data = concatBuffers(salt, password);\n } else {\n data = derivedKey;\n }\n derivedKey = new Uint8Array(\n (await crypto.subtle.digest(algorithm, data)).slice(0, keyLength)\n );\n }\n return {\n parameters: {},\n derivedKey\n };\n }\n handler({\n deriveKey\n });\n})();\n',Ha="undefined"!=typeof self&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",Fa],{type:"text/javascript;charset=utf-8"});function Ka(e){let t;try{if(t=Ha&&(self.URL||self.webkitURL).createObjectURL(Ha),!t)throw"";const n=new Worker(t,{name:e?.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Fa),{name:e?.name})}}!function(e,t="altcha-css"){if("undefined"!=typeof document&&document&&!document.getElementById(t)){const n=document.createElement("style");n.id=t,n.textContent=e;const r=document.currentScript?.nonce??document.querySelector('meta[name="csp-nonce"]')?.content;r&&(n.nonce=r),document.head.appendChild(n)}}(':root {\n --altcha-border-color: var(--altcha-color-neutral);\n --altcha-border-width: 1px;\n --altcha-border-radius: 6px;\n --altcha-color-base: light-dark(oklch(100% 0.00011 271.152), oklch(20.904% 0.00002 271.152));\n --altcha-color-base-content: light-dark(\n \toklch(20.904% 0.00002 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-error: oklch(51.284% 0.20527 28.678);\n --altcha-color-error-content: oklch(100% 0.00011 271.152);\n --altcha-color-neutral: light-dark(oklch(83.591% 0.0001 271.152), oklch(46.04% 0.00005 271.152));\n --altcha-color-neutral-content: light-dark(\n \toklch(46.76% 0.00005 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-primary: oklch(40.279% 0.2449 268.131);\n --altcha-color-primary-content: oklch(100% 0.00011 271.152);\n --altcha-color-success: oklch(55.748% 0.18968 142.511);\n --altcha-color-success-content: oklch(100% 0.00011 271.152);\n --altcha-checkbox-border-color: light-dark(\n \toklch(66.494% 0.00233 15.434),\n \toklch(51.028% 0.00006 271.152)\n );\n --altcha-checkbox-border-radius: 5px;\n --altcha-checkbox-border-width: var(--altcha-border-width);\n --altcha-checkbox-outline: 2px solid var(--altcha-checkbox-outline-color);\n --altcha-checkbox-outline-color: -webkit-focus-ring-color;\n --altcha-checkbox-outline-offset: 2px;\n --altcha-checkbox-size: 22px;\n --altcha-checkbox-transition-duration: var(--altcha-transition-duration);\n --altcha-input-background-color: var(--altcha-color-base);\n --altcha-input-border-radius: 3px;\n --altcha-input-border-width: 1px;\n --altcha-input-color: var(--altcha-color-base-content);\n --altcha-max-width: 320px;\n --altcha-padding: 0.75rem;\n --altcha-popover-arrow-size: 6px;\n --altcha-popover-color: var(--altcha-border-color);\n --altcha-shadow: drop-shadow(3px 3px 6px oklch(0% 0 0 / 0.2));\n --altcha-spinner-color: var(--altcha-color-base-content);\n --altcha-switch-background-color: var(--altcha-color-neutral);\n --altcha-switch-border-radius: calc(infinity * 1px);\n --altcha-switch-height: var(--altcha-checkbox-size);\n --altcha-switch-padding: 0.25rem;\n --altcha-switch-width: calc(var(--altcha-checkbox-size) * 1.75);\n --altcha-switch-toggle-border-radius: 100%;\n --altcha-switch-toggle-color: var(--altcha-color-neutral-content);\n --altcha-switch-toggle-size: calc(\n \tvar(--altcha-switch-height) - calc(var(--altcha-switch-padding) * 2)\n );\n --altcha-transition-duration: 0.6s;\n --altcha-z-index: 99999999;\n --altcha-z-index-popover: 999999999;\n}\n\n@supports (-moz-appearance: none) {\n :root {\n --altcha-checkbox-outline-color: var(--altcha-color-primary);\n }\n}\n.altcha {\n all: revert-layer;\n display: none;\n font-family: inherit;\n font-size: inherit;\n position: relative;\n}\n.altcha[data-visible] {\n display: block;\n}\n.altcha-popover, .altcha-popover * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha a, .altcha-popover a {\n color: currentColor;\n text-decoration: none;\n}\n.altcha a:hover, .altcha-popover a:hover {\n color: currentColor;\n}\n.altcha-main {\n align-items: start;\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width, 1px) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius, 0);\n color: var(--altcha-color-base-content);\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: space-between;\n padding: var(--altcha-padding);\n max-width: var(--altcha-max-width, 100%);\n}\n.altcha-main > * {\n display: flex;\n width: 100%;\n}\n.altcha-main > *:first-child {\n flex-grow: 1;\n}\n.altcha-checkbox-wrap {\n align-items: center;\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n gap: 0.5rem;\n}\n.altcha-checkbox-wrap > * {\n display: flex;\n}\n.altcha-logo {\n opacity: 0.7;\n}\n.altcha-footer {\n align-items: center;\n display: flex;\n flex-grow: 1;\n gap: 0.5rem;\n justify-content: flex-end;\n font-size: 0.7rem;\n opacity: 0.7;\n}\n.altcha-footer p {\n margin: 0;\n padding: 0;\n}\n.altcha-error {\n font-size: 0.85rem;\n}\n.altcha-button {\n align-items: center;\n background: var(--altcha-color-primary);\n border: var(--altcha-input-border-width) solid var(--altcha-color-primary);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-color-primary-content);\n cursor: pointer;\n display: flex;\n font-size: 0.9rem;\n gap: 0.5rem;\n padding: 0.35rem;\n}\n.altcha-button:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-button > .altcha-spinner, .altcha-button > svg {\n height: 20px;\n width: 20px;\n}\n.altcha-button-secondary {\n background: transparent;\n border-color: var(--altcha-color-neutral);\n color: var(--altcha-color-neutral-content);\n}\n.altcha-input {\n background: var(--altcha-input-background-color);\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-input-color);\n flex-grow: 1;\n font-size: 1rem;\n min-width: 0;\n padding: 0.25rem;\n width: auto;\n}\n.altcha-input:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-spinner {\n animation: altcha-rotate 0.6s linear infinite;\n border-radius: 100%;\n border: var(--altcha-checkbox-border-width) solid var(--altcha-spinner-color);\n border-bottom-color: transparent;\n border-right-color: transparent;\n opacity: 0.7;\n}\n.altcha-popover {\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius);\n color: var(--altcha-color-base-content);\n filter: var(--altcha-shadow);\n position: absolute;\n left: calc(var(--altcha-padding) / 2);\n max-width: calc(var(--altcha-max-width) - var(--altcha-padding));\n top: calc(var(--altcha-padding) + var(--altcha-checkbox-size) + var(--altcha-popover-arrow-size));\n z-index: var(--altcha-z-index-popover);\n}\n.altcha-popover-arrow {\n border: var(--altcha-popover-arrow-size) solid transparent;\n border-bottom-color: var(--altcha-popover-color);\n content: "";\n height: 0;\n left: calc(var(--altcha-checkbox-size) / 2);\n position: absolute;\n top: calc(var(--altcha-popover-arrow-size) * -2);\n width: 0;\n}\n.altcha-popover-content {\n max-height: 100dvh;\n overflow: auto;\n padding: var(--altcha-padding);\n}\n.altcha-popover[data-top=true][data-display=standard] {\n bottom: calc(100% - (var(--altcha-padding) - var(--altcha-popover-arrow-size)));\n top: auto;\n}\n.altcha-popover[data-top=true][data-display=standard] .altcha-popover-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-popover-color);\n bottom: calc(var(--altcha-popover-arrow-size) * -2);\n top: auto;\n}\n.altcha-popover[data-variant=error] {\n --altcha-popover-color: var(--altcha-color-error);\n background-color: var(--altcha-color-error);\n border-color: var(--altcha-color-error);\n color: var(--altcha-color-error-content);\n}\n.altcha-popover[data-variant=error] .altcha-popover-content {\n padding: calc(var(--altcha-padding) / 1.5) var(--altcha-padding);\n}\n.altcha-popover[data-display=overlay] {\n animation: altcha-overlay-slidein 0.5s forwards;\n left: 50%;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] {\n animation: altcha-bottomsheet-slideup 0.5s forwards;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-bottom: 0;\n bottom: -100%;\n left: 50%;\n position: fixed;\n top: auto;\n transform: translate(-50%, 0);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] .altcha-popover-content {\n padding-bottom: calc(var(--altcha-padding) * 2);\n}\n.altcha-popover-backdrop {\n background: var(--altcha-color-base-content);\n bottom: 0;\n left: 0;\n opacity: 0.1;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity 0.5s;\n z-index: var(--altcha-z-index);\n}\n.altcha-popover-close {\n color: var(--altcha-color-base-content);\n cursor: pointer;\n display: inline-block;\n font-size: 1rem;\n height: 1.25rem;\n line-height: 0.95;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1.25rem;\n z-index: var(--altcha-z-index);\n}\n[dir=rtl] .altcha-popover {\n left: auto;\n right: calc(var(--altcha-padding) / 2);\n}\n[dir=rtl] .altcha-popover-arrow {\n left: auto;\n right: calc(var(--altcha-checkbox-size) / 2);\n}\n[dir=rtl] .altcha-popover-close {\n left: 0;\n right: auto;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer, .altcha-popover[data-display=overlay] .altcha-footer {\n align-items: center;\n justify-content: center;\n padding-top: 1rem;\n gap: 0.5rem;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer svg, .altcha-popover[data-display=overlay] .altcha-footer svg {\n height: 18px;\n width: 18px;\n vertical-align: middle;\n}\n.altcha-code-challenge > form {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n.altcha-code-challenge-title {\n font-weight: 600;\n}\n.altcha-code-challenge-text {\n font-size: 0.85rem;\n}\n.altcha-code-challenge-image {\n background: white;\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n object-fit: contain;\n height: 50px;\n}\n.altcha-code-challenge-row {\n display: flex;\n gap: 0.5rem;\n}\n.altcha-code-challenge-buttons {\n align-items: center;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-top: var(--altcha-padding);\n justify-content: space-between;\n}\n.altcha-code-challenge-buttons button {\n justify-content: center;\n width: 100%;\n}\n.altcha-checkbox {\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input {\n appearance: none;\n background: var(--altcha-input-background-color);\n border: var(--altcha-checkbox-border-width, 2px) solid var(--altcha-checkbox-border-color);\n border-radius: var(--altcha-checkbox-border-radius);\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n left: 0;\n margin: 0;\n padding: 0;\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input:before {\n border-radius: var(--altcha-checkbox-border-radius);\n content: "";\n width: 100%;\n height: 100%;\n background: var(--altcha-color-neutral);\n display: block;\n transform: scale(0);\n}\n.altcha-checkbox input:checked {\n background-color: var(--altcha-color-success);\n border-color: var(--altcha-color-success);\n}\n.altcha-checkbox input:checked::before {\n background-color: var(--altcha-color-success);\n opacity: 0;\n transform: scale(2.2);\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox svg {\n --altcha-radio-svg-size: calc(var(--altcha-checkbox-size) * 0.5);\n --altcha-radio-svg-offset: calc(var(--altcha-checkbox-size) * 0.25);\n fill: none;\n left: var(--altcha-radio-svg-offset);\n height: var(--altcha-radio-svg-size);\n opacity: 0;\n position: absolute;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n top: var(--altcha-radio-svg-offset);\n transform: translate3d(0, 0, 0);\n width: var(--altcha-radio-svg-size);\n}\n.altcha-checkbox input:checked + svg {\n color: var(--altcha-color-success-content);\n opacity: 1;\n stroke-dashoffset: 0;\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox[data-loading=true] .altcha-checkbox-spinner {\n display: block;\n}\n.altcha-checkbox-native {\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native input {\n height: var(--altcha-checkbox-size);\n margin: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox-native[data-loading=true] .altcha-checkbox-native-spinner {\n display: block;\n}\n.altcha-switch {\n align-items: center;\n border-radius: var(--altcha-switch-border-radius);\n background-color: var(--altcha-switch-background-color);\n display: flex;\n height: var(--altcha-switch-height);\n padding: var(--altcha-switch-padding);\n position: relative;\n width: var(--altcha-switch-width);\n}\n.altcha-switch:focus-within {\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-switch input {\n appearance: none;\n cursor: pointer;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.altcha-switch-toggle {\n align-items: center;\n background-color: var(--altcha-switch-toggle-color);\n border-radius: var(--altcha-switch-toggle-border-radius);\n cursor: pointer;\n display: flex;\n height: var(--altcha-switch-toggle-size);\n justify-content: center;\n left: var(--altcha-switch-padding);\n position: absolute;\n transition: width 150ms ease-out, left 150ms ease-out;\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch-spinner {\n display: none;\n height: var(--altcha-switch-toggle-size);\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch[data-loading=true] {\n pointer-events: none;\n}\n.altcha-switch[data-loading=true] .altcha-switch-spinner {\n display: block;\n}\n.altcha-switch[data-loading=true] .altcha-switch-toggle {\n background-color: transparent;\n left: calc(50% - var(--altcha-switch-toggle-size) / 2);\n}\n[data-state=verified] .altcha-switch {\n --altcha-switch-background-color: var(--altcha-color-success);\n}\n[data-state=verified] .altcha-switch-toggle {\n background-color: var(--altcha-color-success-content);\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl] .altcha-switch-toggle {\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl][data-state=verified] .altcha-switch-toggle {\n left: var(--altcha-switch-padding);\n}\n.altcha-floating-arrow {\n border: 6px solid transparent;\n border-bottom-color: var(--altcha-border-color);\n content: "";\n height: 0;\n left: 12px;\n position: absolute;\n top: -12px;\n width: 0;\n}\n.altcha-overlay-backdrop {\n bottom: 0;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha-overlay-close {\n display: inline-block;\n color: currentColor;\n cursor: pointer;\n font-size: 1rem;\n height: 1rem;\n line-height: 0.85;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1rem;\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] {\n animation: altcha-overlay-slidein var(--altcha-transition-duration) forwards;\n filter: var(--altcha-shadow);\n left: 50%;\n opacity: 0;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating] {\n display: none;\n filter: var(--altcha-shadow);\n left: var(--altcha-floating-left, -100%);\n position: fixed;\n top: var(--altcha-floating-top, -100%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=floating] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating][data-floating-position=top] .altcha-floating-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-border-color);\n bottom: -12px;\n top: auto;\n}\n.altcha[data-display=floating][data-visible] {\n display: flex;\n}\n.altcha[data-display=bar] {\n bottom: -100%;\n filter: var(--altcha-shadow);\n left: 0;\n position: fixed;\n right: 0;\n transition: bottom var(--altcha-transition-duration), top var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=bar] .altcha-main {\n align-items: center;\n border-radius: 0;\n border-width: var(--altcha-border-width) 0 0 0;\n flex-direction: row;\n max-width: 100% !important;\n}\n.altcha[data-display=bar] .altcha-main > * {\n width: auto;\n}\n.altcha[data-display=bar][data-placement=top] {\n bottom: auto;\n top: -100%;\n}\n.altcha[data-display=bar][data-placement=top] .altcha-main {\n border-width: 0 0 var(--altcha-border-width) 0;\n}\n.altcha[data-display=bar][data-placement=bottom]:not([data-state=unverified]) {\n bottom: 0;\n}\n.altcha[data-display=bar][data-placement=top]:not([data-state=unverified]) {\n top: 0;\n}\n.altcha[data-display=invisible] {\n display: none;\n}\n\n@keyframes altcha-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes altcha-bottomsheet-slideup {\n 100% {\n bottom: 0;\n }\n}\n@keyframes altcha-overlay-slidein {\n 100% {\n opacity: 1;\n top: 50%;\n }\n}'),$altcha.algorithms.set("SHA-256",()=>new Ka),$altcha.algorithms.set("SHA-384",()=>new Ka),$altcha.algorithms.set("SHA-512",()=>new Ka),$altcha.algorithms.set("PBKDF2/SHA-256",()=>new Ba),$altcha.algorithms.set("PBKDF2/SHA-384",()=>new Ba),$altcha.algorithms.set("PBKDF2/SHA-512",()=>new Ba); diff --git a/frontend/static/yw/javascript/owot.js b/frontend/static/yw/javascript/owot.js index 0a0c5265..e2821d05 100644 --- a/frontend/static/yw/javascript/owot.js +++ b/frontend/static/yw/javascript/owot.js @@ -8664,4 +8664,4 @@ function begin() { }); } -begin(); +window._beginAfterCaptcha = begin; diff --git a/frontend/templates/yourworld.html b/frontend/templates/yourworld.html index ea7605db..37787561 100644 --- a/frontend/templates/yourworld.html +++ b/frontend/templates/yourworld.html @@ -49,6 +49,15 @@ +

Loading...

@@ -146,5 +155,56 @@

Loading...

+ + \ No newline at end of file diff --git a/package.json b/package.json index f85f0fbc..c5450556 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "description": "OurWorldOfText server", "dependencies": { "adm-zip": "^0.5.16", + "altcha": "^3.0.11", + "altcha-lib": "^2.2.0", "nodemailer": "^7.0.10", "pg": "^8.13.1", "sqlite3": "^5.1.7", diff --git a/runserver.js b/runserver.js index a0e21de1..4c42fb60 100644 --- a/runserver.js +++ b/runserver.js @@ -572,6 +572,7 @@ var pages = { shell: require("./backend/pages/admin/shell.js") }, other: { + altcha: require("./backend/pages/other/altcha.js"), ipaddress: require("./backend/pages/other/ipaddress.js"), load_backgrounds: require("./backend/pages/other/load_backgrounds.js"), random_color: require("./backend/pages/other/random_color.js"), @@ -1167,6 +1168,7 @@ function createEndpoints(server) { server.registerEndpoint("world_style", pages.world_style); server.registerEndpoint("world_props", pages.world_props); + server.registerEndpoint("other/altcha", pages.other.altcha, { no_login: true }); server.registerEndpoint("other/random_color", pages.other.random_color, { no_login: true }); server.registerEndpoint("other/backgrounds/*", pages.other.load_backgrounds, { no_login: true }); server.registerEndpoint("other/test/*", pages.other.test, { no_login: true });