define(["exports"], function (t) { "use strict"; try { self["workbox:core:6.4.1"] && _(); } catch (t) {} const e = (t, ...e) => { let s = t; return e.length > 0 && (s += ` :: ${JSON.stringify(e)}`), s; }; class s extends Error { constructor(t, s) { super(e(t, s)), (this.name = t), (this.details = s); } } try { self["workbox:routing:6.4.1"] && _(); } catch (t) {} const n = (t) => (t && "object" == typeof t ? t : { handle: t }); class r { constructor(t, e, s = "GET") { (this.handler = n(e)), (this.match = t), (this.method = s); } setCatchHandler(t) { this.catchHandler = n(t); } } class i extends r { constructor(t, e, s) { super( ({ url: e }) => { const s = t.exec(e.href); if (s && (e.origin === location.origin || 0 === s.index)) return s.slice(1); }, e, s ); } } class o { constructor() { (this.t = new Map()), (this.i = new Map()); } get routes() { return this.t; } addFetchListener() { self.addEventListener("fetch", (t) => { const { request: e } = t, s = this.handleRequest({ request: e, event: t }); s && t.respondWith(s); }); } addCacheListener() { self.addEventListener("message", (t) => { if (t.data && "CACHE_URLS" === t.data.type) { const { payload: e } = t.data, s = Promise.all( e.urlsToCache.map((e) => { "string" == typeof e && (e = [e]); const s = new Request(...e); return this.handleRequest({ request: s, event: t }); }) ); t.waitUntil(s), t.ports && t.ports[0] && s.then(() => t.ports[0].postMessage(!0)); } }); } handleRequest({ request: t, event: e }) { const s = new URL(t.url, location.href); if (!s.protocol.startsWith("http")) return; const n = s.origin === location.origin, { params: r, route: i } = this.findMatchingRoute({ event: e, request: t, sameOrigin: n, url: s, }); let o = i && i.handler; const a = t.method; if ((!o && this.i.has(a) && (o = this.i.get(a)), !o)) return; let c; try { c = o.handle({ url: s, request: t, event: e, params: r }); } catch (t) { c = Promise.reject(t); } const h = i && i.catchHandler; return ( c instanceof Promise && (this.o || h) && (c = c.catch(async (n) => { if (h) try { return await h.handle({ url: s, request: t, event: e, params: r, }); } catch (t) { t instanceof Error && (n = t); } if (this.o) return this.o.handle({ url: s, request: t, event: e }); throw n; })), c ); } findMatchingRoute({ url: t, sameOrigin: e, request: s, event: n }) { const r = this.t.get(s.method) || []; for (const i of r) { let r; const o = i.match({ url: t, sameOrigin: e, request: s, event: n }); if (o) return (r = o), ((Array.isArray(r) && 0 === r.length) || (o.constructor === Object && 0 === Object.keys(o).length) || "boolean" == typeof o) && (r = void 0), { route: i, params: r }; } return {}; } setDefaultHandler(t, e = "GET") { this.i.set(e, n(t)); } setCatchHandler(t) { this.o = n(t); } registerRoute(t) { this.t.has(t.method) || this.t.set(t.method, []), this.t.get(t.method).push(t); } unregisterRoute(t) { if (!this.t.has(t.method)) throw new s("unregister-route-but-not-found-with-method", { method: t.method, }); const e = this.t.get(t.method).indexOf(t); if (!(e > -1)) throw new s("unregister-route-route-not-registered"); this.t.get(t.method).splice(e, 1); } } let a; const c = () => (a || ((a = new o()), a.addFetchListener(), a.addCacheListener()), a); function h(t, e, n) { let o; if ("string" == typeof t) { const s = new URL(t, location.href); o = new r(({ url: t }) => t.href === s.href, e, n); } else if (t instanceof RegExp) o = new i(t, e, n); else if ("function" == typeof t) o = new r(t, e, n); else { if (!(t instanceof r)) throw new s("unsupported-route-type", { moduleName: "workbox-routing", funcName: "registerRoute", paramName: "capture", }); o = t; } return c().registerRoute(o), o; } const u = { googleAnalytics: "googleAnalytics", precache: "precache-v2", prefix: "workbox", runtime: "runtime", suffix: "undefined" != typeof registration ? registration.scope : "", }, l = (t) => [u.prefix, t, u.suffix].filter((t) => t && t.length > 0).join("-"), f = (t) => t || l(u.precache), w = (t) => t || l(u.runtime); function d(t, e) { const s = new URL(t); for (const t of e) s.searchParams.delete(t); return s.href; } class p { constructor() { this.promise = new Promise((t, e) => { (this.resolve = t), (this.reject = e); }); } } const y = new Set(); try { self["workbox:strategies:6.4.1"] && _(); } catch (t) {} function g(t) { return "string" == typeof t ? new Request(t) : t; } class R { constructor(t, e) { (this.h = {}), Object.assign(this, e), (this.event = e.event), (this.u = t), (this.l = new p()), (this.p = []), (this.g = [...t.plugins]), (this.R = new Map()); for (const t of this.g) this.R.set(t, {}); this.event.waitUntil(this.l.promise); } async fetch(t) { const { event: e } = this; let n = g(t); if ("navigate" === n.mode && e instanceof FetchEvent && e.preloadResponse) { const t = await e.preloadResponse; if (t) return t; } const r = this.hasCallback("fetchDidFail") ? n.clone() : null; try { for (const t of this.iterateCallbacks("requestWillFetch")) n = await t({ request: n.clone(), event: e }); } catch (t) { if (t instanceof Error) throw new s("plugin-error-request-will-fetch", { thrownErrorMessage: t.message, }); } const i = n.clone(); try { let t; t = await fetch(n, "navigate" === n.mode ? void 0 : this.u.fetchOptions); for (const s of this.iterateCallbacks("fetchDidSucceed")) t = await s({ event: e, request: i, response: t }); return t; } catch (t) { throw ( (r && (await this.runCallbacks("fetchDidFail", { error: t, event: e, originalRequest: r.clone(), request: i.clone(), })), t) ); } } async fetchAndCachePut(t) { const e = await this.fetch(t), s = e.clone(); return this.waitUntil(this.cachePut(t, s)), e; } async cacheMatch(t) { const e = g(t); let s; const { cacheName: n, matchOptions: r } = this.u, i = await this.getCacheKey(e, "read"), o = Object.assign(Object.assign({}, r), { cacheName: n }); s = await caches.match(i, o); for (const t of this.iterateCallbacks("cachedResponseWillBeUsed")) s = (await t({ cacheName: n, matchOptions: r, cachedResponse: s, request: i, event: this.event, })) || void 0; return s; } async cachePut(t, e) { const n = g(t); var r; await ((r = 0), new Promise((t) => setTimeout(t, r))); const i = await this.getCacheKey(n, "write"); if (!e) throw new s("cache-put-with-no-response", { url: ((o = i.url), new URL(String(o), location.href).href.replace(new RegExp(`^${location.origin}`), "")), }); var o; const a = await this.m(e); if (!a) return !1; const { cacheName: c, matchOptions: h } = this.u, u = await self.caches.open(c), l = this.hasCallback("cacheDidUpdate"), f = l ? await (async function (t, e, s, n) { const r = d(e.url, s); if (e.url === r) return t.match(e, n); const i = Object.assign(Object.assign({}, n), { ignoreSearch: !0, }), o = await t.keys(e, i); for (const e of o) if (r === d(e.url, s)) return t.match(e, n); })(u, i.clone(), ["__WB_REVISION__"], h) : null; try { await u.put(i, l ? a.clone() : a); } catch (t) { if (t instanceof Error) throw ( ("QuotaExceededError" === t.name && (await (async function () { for (const t of y) await t(); })()), t) ); } for (const t of this.iterateCallbacks("cacheDidUpdate")) await t({ cacheName: c, oldResponse: f, newResponse: a.clone(), request: i, event: this.event, }); return !0; } async getCacheKey(t, e) { const s = `${t.url} | ${e}`; if (!this.h[s]) { let n = t; for (const t of this.iterateCallbacks("cacheKeyWillBeUsed")) n = g( await t({ mode: e, request: n, event: this.event, params: this.params, }) ); this.h[s] = n; } return this.h[s]; } hasCallback(t) { for (const e of this.u.plugins) if (t in e) return !0; return !1; } async runCallbacks(t, e) { for (const s of this.iterateCallbacks(t)) await s(e); } *iterateCallbacks(t) { for (const e of this.u.plugins) if ("function" == typeof e[t]) { const s = this.R.get(e), n = (n) => { const r = Object.assign(Object.assign({}, n), { state: s }); return e[t](r); }; yield n; } } waitUntil(t) { return this.p.push(t), t; } async doneWaiting() { let t; for (; (t = this.p.shift()); ) await t; } destroy() { this.l.resolve(null); } async m(t) { let e = t, s = !1; for (const t of this.iterateCallbacks("cacheWillUpdate")) if ( ((e = (await t({ request: this.request, response: e, event: this.event, })) || void 0), (s = !0), !e) ) break; return s || (e && 200 !== e.status && (e = void 0)), e; } } class m { constructor(t = {}) { (this.cacheName = w(t.cacheName)), (this.plugins = t.plugins || []), (this.fetchOptions = t.fetchOptions), (this.matchOptions = t.matchOptions); } handle(t) { const [e] = this.handleAll(t); return e; } handleAll(t) { t instanceof FetchEvent && (t = { event: t, request: t.request }); const e = t.event, s = "string" == typeof t.request ? new Request(t.request) : t.request, n = "params" in t ? t.params : void 0, r = new R(this, { event: e, request: s, params: n }), i = this.v(r, s, e); return [i, this.q(i, r, s, e)]; } async v(t, e, n) { let r; await t.runCallbacks("handlerWillStart", { event: n, request: e }); try { if (((r = await this.U(e, t)), !r || "error" === r.type)) throw new s("no-response", { url: e.url }); } catch (s) { if (s instanceof Error) for (const i of t.iterateCallbacks("handlerDidError")) if (((r = await i({ error: s, event: n, request: e })), r)) break; if (!r) throw s; } for (const s of t.iterateCallbacks("handlerWillRespond")) r = await s({ event: n, request: e, response: r }); return r; } async q(t, e, s, n) { let r, i; try { r = await t; } catch (i) {} try { await e.runCallbacks("handlerDidRespond", { event: n, request: s, response: r, }), await e.doneWaiting(); } catch (t) { t instanceof Error && (i = t); } if ( (await e.runCallbacks("handlerDidComplete", { event: n, request: s, response: r, error: i, }), e.destroy(), i) ) throw i; } } function v(t, e) { const s = e(); return t.waitUntil(s), s; } try { self["workbox:precaching:6.4.1"] && _(); } catch (t) {} function q(t) { if (!t) throw new s("add-to-cache-list-unexpected-type", { entry: t }); if ("string" == typeof t) { const e = new URL(t, location.href); return { cacheKey: e.href, url: e.href }; } const { revision: e, url: n } = t; if (!n) throw new s("add-to-cache-list-unexpected-type", { entry: t }); if (!e) { const t = new URL(n, location.href); return { cacheKey: t.href, url: t.href }; } const r = new URL(n, location.href), i = new URL(n, location.href); return r.searchParams.set("__WB_REVISION__", e), { cacheKey: r.href, url: i.href }; } class U { constructor() { (this.updatedURLs = []), (this.notUpdatedURLs = []), (this.handlerWillStart = async ({ request: t, state: e }) => { e && (e.originalRequest = t); }), (this.cachedResponseWillBeUsed = async ({ event: t, state: e, cachedResponse: s }) => { if ("install" === t.type && e && e.originalRequest && e.originalRequest instanceof Request) { const t = e.originalRequest.url; s ? this.notUpdatedURLs.push(t) : this.updatedURLs.push(t); } return s; }); } } class L { constructor({ precacheController: t }) { (this.cacheKeyWillBeUsed = async ({ request: t, params: e }) => { const s = (null == e ? void 0 : e.cacheKey) || this.L.getCacheKeyForURL(t.url); return s ? new Request(s, { headers: t.headers }) : t; }), (this.L = t); } } let b, E; async function C(t, e) { let n = null; if (t.url) { n = new URL(t.url).origin; } if (n !== self.location.origin) throw new s("cross-origin-copy-response", { origin: n }); const r = t.clone(), i = { headers: new Headers(r.headers), status: r.status, statusText: r.statusText, }, o = e ? e(i) : i, a = (function () { if (void 0 === b) { const t = new Response(""); if ("body" in t) try { new Response(t.body), (b = !0); } catch (t) { b = !1; } b = !1; } return b; })() ? r.body : await r.blob(); return new Response(a, o); } class O extends m { constructor(t = {}) { (t.cacheName = f(t.cacheName)), super(t), (this._ = !1 !== t.fallbackToNetwork), this.plugins.push(O.copyRedirectedCacheableResponsesPlugin); } async U(t, e) { const s = await e.cacheMatch(t); return s || (e.event && "install" === e.event.type ? await this.C(t, e) : await this.O(t, e)); } async O(t, e) { let n; const r = e.params || {}; if (!this._) throw new s("missing-precache-entry", { cacheName: this.cacheName, url: t.url, }); { const s = r.integrity, i = t.integrity, o = !i || i === s; (n = await e.fetch(new Request(t, { integrity: i || s }))), s && o && (this.N(), await e.cachePut(t, n.clone())); } return n; } async C(t, e) { this.N(); const n = await e.fetch(t); if (!(await e.cachePut(t, n.clone()))) throw new s("bad-precaching-response", { url: t.url, status: n.status, }); return n; } N() { let t = null, e = 0; for (const [s, n] of this.plugins.entries()) n !== O.copyRedirectedCacheableResponsesPlugin && (n === O.defaultPrecacheCacheabilityPlugin && (t = s), n.cacheWillUpdate && e++); 0 === e ? this.plugins.push(O.defaultPrecacheCacheabilityPlugin) : e > 1 && null !== t && this.plugins.splice(t, 1); } } (O.defaultPrecacheCacheabilityPlugin = { cacheWillUpdate: async ({ response: t }) => (!t || t.status >= 400 ? null : t), }), (O.copyRedirectedCacheableResponsesPlugin = { cacheWillUpdate: async ({ response: t }) => (t.redirected ? await C(t) : t), }); class x { constructor({ cacheName: t, plugins: e = [], fallbackToNetwork: s = !0 } = {}) { (this.k = new Map()), (this.K = new Map()), (this.T = new Map()), (this.u = new O({ cacheName: f(t), plugins: [...e, new L({ precacheController: this })], fallbackToNetwork: s, })), (this.install = this.install.bind(this)), (this.activate = this.activate.bind(this)); } get strategy() { return this.u; } precache(t) { this.addToCacheList(t), this.W || (self.addEventListener("install", this.install), self.addEventListener("activate", this.activate), (this.W = !0)); } addToCacheList(t) { const e = []; for (const n of t) { "string" == typeof n ? e.push(n) : n && void 0 === n.revision && e.push(n.url); const { cacheKey: t, url: r } = q(n), i = "string" != typeof n && n.revision ? "reload" : "default"; if (this.k.has(r) && this.k.get(r) !== t) throw new s("add-to-cache-list-conflicting-entries", { firstEntry: this.k.get(r), secondEntry: t, }); if ("string" != typeof n && n.integrity) { if (this.T.has(t) && this.T.get(t) !== n.integrity) throw new s("add-to-cache-list-conflicting-integrities", { url: r, }); this.T.set(t, n.integrity); } if ((this.k.set(r, t), this.K.set(r, i), e.length > 0)) { const t = `Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`; console.warn(t); } } } install(t) { return v(t, async () => { const e = new U(); this.strategy.plugins.push(e); for (const [e, s] of this.k) { const n = this.T.get(s), r = this.K.get(e), i = new Request(e, { integrity: n, cache: r, credentials: "same-origin", }); await Promise.all( this.strategy.handleAll({ params: { cacheKey: s }, request: i, event: t, }) ); } const { updatedURLs: s, notUpdatedURLs: n } = e; return { updatedURLs: s, notUpdatedURLs: n }; }); } activate(t) { return v(t, async () => { const t = await self.caches.open(this.strategy.cacheName), e = await t.keys(), s = new Set(this.k.values()), n = []; for (const r of e) s.has(r.url) || (await t.delete(r), n.push(r.url)); return { deletedURLs: n }; }); } getURLsToCacheKeys() { return this.k; } getCachedURLs() { return [...this.k.keys()]; } getCacheKeyForURL(t) { const e = new URL(t, location.href); return this.k.get(e.href); } getIntegrityForCacheKey(t) { return this.T.get(t); } async matchPrecache(t) { const e = t instanceof Request ? t.url : t, s = this.getCacheKeyForURL(e); if (s) { return (await self.caches.open(this.strategy.cacheName)).match(s); } } createHandlerBoundToURL(t) { const e = this.getCacheKeyForURL(t); if (!e) throw new s("non-precached-url", { url: t }); return (s) => ((s.request = new Request(t)), (s.params = Object.assign({ cacheKey: e }, s.params)), this.strategy.handle(s)); } } const N = () => (E || (E = new x()), E); class k extends r { constructor(t, e) { super(({ request: s }) => { const n = t.getURLsToCacheKeys(); for (const r of (function* (t, { ignoreURLParametersMatching: e = [/^utm_/, /^fbclid$/], directoryIndex: s = "index.html", cleanURLs: n = !0, urlManipulation: r } = {}) { const i = new URL(t, location.href); (i.hash = ""), yield i.href; const o = (function (t, e = []) { for (const s of [...t.searchParams.keys()]) e.some((t) => t.test(s)) && t.searchParams.delete(s); return t; })(i, e); if ((yield o.href, s && o.pathname.endsWith("/"))) { const t = new URL(o.href); (t.pathname += s), yield t.href; } if (n) { const t = new URL(o.href); (t.pathname += ".html"), yield t.href; } if (r) { const t = r({ url: i }); for (const e of t) yield e.href; } })(s.url, e)) { const e = n.get(r); if (e) { return { cacheKey: e, integrity: t.getIntegrityForCacheKey(e) }; } } }, t.strategy); } } (t.CacheFirst = class extends m { async U(t, e) { let n, r = await e.cacheMatch(t); if (!r) try { r = await e.fetchAndCachePut(t); } catch (t) { t instanceof Error && (n = t); } if (!r) throw new s("no-response", { url: t.url, error: n }); return r; } }), (t.precacheAndRoute = function (t, e) { !(function (t) { N().precache(t); })(t), (function (t) { const e = N(); h(new k(e, t)); })(e); }), (t.registerRoute = h); }); //# sourceMappingURL=workbox-962786f2.js.map