Index: frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.d.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,70 @@
+import { CacheDidUpdateCallbackParam } from 'workbox-core/types.js';
+import './_version.js';
+export interface BroadcastCacheUpdateOptions {
+    headersToCheck?: string[];
+    generatePayload?: (options: CacheDidUpdateCallbackParam) => Record<string, any>;
+    notifyAllClients?: boolean;
+}
+/**
+ * Uses the `postMessage()` API to inform any open windows/tabs when a cached
+ * response has been updated.
+ *
+ * For efficiency's sake, the underlying response bodies are not compared;
+ * only specific response headers are checked.
+ *
+ * @memberof workbox-broadcast-update
+ */
+declare class BroadcastCacheUpdate {
+    private readonly _headersToCheck;
+    private readonly _generatePayload;
+    private readonly _notifyAllClients;
+    /**
+     * Construct a BroadcastCacheUpdate instance with a specific `channelName` to
+     * broadcast messages on
+     *
+     * @param {Object} [options]
+     * @param {Array<string>} [options.headersToCheck=['content-length', 'etag', 'last-modified']]
+     *     A list of headers that will be used to determine whether the responses
+     *     differ.
+     * @param {string} [options.generatePayload] A function whose return value
+     *     will be used as the `payload` field in any cache update messages sent
+     *     to the window clients.
+     * @param {boolean} [options.notifyAllClients=true] If true (the default) then
+     *     all open clients will receive a message. If false, then only the client
+     *     that make the original request will be notified of the update.
+     */
+    constructor({ generatePayload, headersToCheck, notifyAllClients, }?: BroadcastCacheUpdateOptions);
+    /**
+     * Compares two [Responses](https://developer.mozilla.org/en-US/docs/Web/API/Response)
+     * and sends a message (via `postMessage()`) to all window clients if the
+     * responses differ. Neither of the Responses can be
+     * [opaque](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).
+     *
+     * The message that's posted has the following format (where `payload` can
+     * be customized via the `generatePayload` option the instance is created
+     * with):
+     *
+     * ```
+     * {
+     *   type: 'CACHE_UPDATED',
+     *   meta: 'workbox-broadcast-update',
+     *   payload: {
+     *     cacheName: 'the-cache-name',
+     *     updatedURL: 'https://example.com/'
+     *   }
+     * }
+     * ```
+     *
+     * @param {Object} options
+     * @param {Response} [options.oldResponse] Cached response to compare.
+     * @param {Response} options.newResponse Possibly updated response to compare.
+     * @param {Request} options.request The request.
+     * @param {string} options.cacheName Name of the cache the responses belong
+     *     to. This is included in the broadcast message.
+     * @param {Event} options.event event The event that triggered
+     *     this possible cache update.
+     * @return {Promise} Resolves once the update is sent.
+     */
+    notifyIfUpdated(options: CacheDidUpdateCallbackParam): Promise<void>;
+}
+export { BroadcastCacheUpdate };
Index: frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.js
===================================================================
--- frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,164 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+import { assert } from 'workbox-core/_private/assert.js';
+import { timeout } from 'workbox-core/_private/timeout.js';
+import { resultingClientExists } from 'workbox-core/_private/resultingClientExists.js';
+import { logger } from 'workbox-core/_private/logger.js';
+import { responsesAreSame } from './responsesAreSame.js';
+import { CACHE_UPDATED_MESSAGE_META, CACHE_UPDATED_MESSAGE_TYPE, DEFAULT_HEADERS_TO_CHECK, NOTIFY_ALL_CLIENTS, } from './utils/constants.js';
+import './_version.js';
+// UA-sniff Safari: https://stackoverflow.com/questions/7944460/detect-safari-browser
+// TODO(philipwalton): remove once this Safari bug fix has been released.
+// https://bugs.webkit.org/show_bug.cgi?id=201169
+const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+/**
+ * Generates the default payload used in update messages. By default the
+ * payload includes the `cacheName` and `updatedURL` fields.
+ *
+ * @return Object
+ * @private
+ */
+function defaultPayloadGenerator(data) {
+    return {
+        cacheName: data.cacheName,
+        updatedURL: data.request.url,
+    };
+}
+/**
+ * Uses the `postMessage()` API to inform any open windows/tabs when a cached
+ * response has been updated.
+ *
+ * For efficiency's sake, the underlying response bodies are not compared;
+ * only specific response headers are checked.
+ *
+ * @memberof workbox-broadcast-update
+ */
+class BroadcastCacheUpdate {
+    /**
+     * Construct a BroadcastCacheUpdate instance with a specific `channelName` to
+     * broadcast messages on
+     *
+     * @param {Object} [options]
+     * @param {Array<string>} [options.headersToCheck=['content-length', 'etag', 'last-modified']]
+     *     A list of headers that will be used to determine whether the responses
+     *     differ.
+     * @param {string} [options.generatePayload] A function whose return value
+     *     will be used as the `payload` field in any cache update messages sent
+     *     to the window clients.
+     * @param {boolean} [options.notifyAllClients=true] If true (the default) then
+     *     all open clients will receive a message. If false, then only the client
+     *     that make the original request will be notified of the update.
+     */
+    constructor({ generatePayload, headersToCheck, notifyAllClients, } = {}) {
+        this._headersToCheck = headersToCheck || DEFAULT_HEADERS_TO_CHECK;
+        this._generatePayload = generatePayload || defaultPayloadGenerator;
+        this._notifyAllClients = notifyAllClients !== null && notifyAllClients !== void 0 ? notifyAllClients : NOTIFY_ALL_CLIENTS;
+    }
+    /**
+     * Compares two [Responses](https://developer.mozilla.org/en-US/docs/Web/API/Response)
+     * and sends a message (via `postMessage()`) to all window clients if the
+     * responses differ. Neither of the Responses can be
+     * [opaque](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).
+     *
+     * The message that's posted has the following format (where `payload` can
+     * be customized via the `generatePayload` option the instance is created
+     * with):
+     *
+     * ```
+     * {
+     *   type: 'CACHE_UPDATED',
+     *   meta: 'workbox-broadcast-update',
+     *   payload: {
+     *     cacheName: 'the-cache-name',
+     *     updatedURL: 'https://example.com/'
+     *   }
+     * }
+     * ```
+     *
+     * @param {Object} options
+     * @param {Response} [options.oldResponse] Cached response to compare.
+     * @param {Response} options.newResponse Possibly updated response to compare.
+     * @param {Request} options.request The request.
+     * @param {string} options.cacheName Name of the cache the responses belong
+     *     to. This is included in the broadcast message.
+     * @param {Event} options.event event The event that triggered
+     *     this possible cache update.
+     * @return {Promise} Resolves once the update is sent.
+     */
+    async notifyIfUpdated(options) {
+        if (process.env.NODE_ENV !== 'production') {
+            assert.isType(options.cacheName, 'string', {
+                moduleName: 'workbox-broadcast-update',
+                className: 'BroadcastCacheUpdate',
+                funcName: 'notifyIfUpdated',
+                paramName: 'cacheName',
+            });
+            assert.isInstance(options.newResponse, Response, {
+                moduleName: 'workbox-broadcast-update',
+                className: 'BroadcastCacheUpdate',
+                funcName: 'notifyIfUpdated',
+                paramName: 'newResponse',
+            });
+            assert.isInstance(options.request, Request, {
+                moduleName: 'workbox-broadcast-update',
+                className: 'BroadcastCacheUpdate',
+                funcName: 'notifyIfUpdated',
+                paramName: 'request',
+            });
+        }
+        // Without two responses there is nothing to compare.
+        if (!options.oldResponse) {
+            return;
+        }
+        if (!responsesAreSame(options.oldResponse, options.newResponse, this._headersToCheck)) {
+            if (process.env.NODE_ENV !== 'production') {
+                logger.log(`Newer response found (and cached) for:`, options.request.url);
+            }
+            const messageData = {
+                type: CACHE_UPDATED_MESSAGE_TYPE,
+                meta: CACHE_UPDATED_MESSAGE_META,
+                payload: this._generatePayload(options),
+            };
+            // For navigation requests, wait until the new window client exists
+            // before sending the message
+            if (options.request.mode === 'navigate') {
+                let resultingClientId;
+                if (options.event instanceof FetchEvent) {
+                    resultingClientId = options.event.resultingClientId;
+                }
+                const resultingWin = await resultingClientExists(resultingClientId);
+                // Safari does not currently implement postMessage buffering and
+                // there's no good way to feature detect that, so to increase the
+                // chances of the message being delivered in Safari, we add a timeout.
+                // We also do this if `resultingClientExists()` didn't return a client,
+                // which means it timed out, so it's worth waiting a bit longer.
+                if (!resultingWin || isSafari) {
+                    // 3500 is chosen because (according to CrUX data) 80% of mobile
+                    // websites hit the DOMContentLoaded event in less than 3.5 seconds.
+                    // And presumably sites implementing service worker are on the
+                    // higher end of the performance spectrum.
+                    await timeout(3500);
+                }
+            }
+            if (this._notifyAllClients) {
+                const windows = await self.clients.matchAll({ type: 'window' });
+                for (const win of windows) {
+                    win.postMessage(messageData);
+                }
+            }
+            else {
+                // See https://github.com/GoogleChrome/workbox/issues/2895
+                if (options.event instanceof FetchEvent) {
+                    const client = await self.clients.get(options.event.clientId);
+                    client === null || client === void 0 ? void 0 : client.postMessage(messageData);
+                }
+            }
+        }
+    }
+}
+export { BroadcastCacheUpdate };
Index: frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.mjs
===================================================================
--- frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/BroadcastCacheUpdate.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export * from './BroadcastCacheUpdate.js';
Index: frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.d.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,41 @@
+import { WorkboxPlugin } from 'workbox-core/types.js';
+import { BroadcastCacheUpdateOptions } from './BroadcastCacheUpdate.js';
+import './_version.js';
+/**
+ * This plugin will automatically broadcast a message whenever a cached response
+ * is updated.
+ *
+ * @memberof workbox-broadcast-update
+ */
+declare class BroadcastUpdatePlugin implements WorkboxPlugin {
+    private readonly _broadcastUpdate;
+    /**
+     * Construct a {@link workbox-broadcast-update.BroadcastUpdate} instance with
+     * the passed options and calls its `notifyIfUpdated` method whenever the
+     * plugin's `cacheDidUpdate` callback is invoked.
+     *
+     * @param {Object} [options]
+     * @param {Array<string>} [options.headersToCheck=['content-length', 'etag', 'last-modified']]
+     *     A list of headers that will be used to determine whether the responses
+     *     differ.
+     * @param {string} [options.generatePayload] A function whose return value
+     *     will be used as the `payload` field in any cache update messages sent
+     *     to the window clients.
+     */
+    constructor(options?: BroadcastCacheUpdateOptions);
+    /**
+     * A "lifecycle" callback that will be triggered automatically by the
+     * `workbox-sw` and `workbox-runtime-caching` handlers when an entry is
+     * added to a cache.
+     *
+     * @private
+     * @param {Object} options The input object to this function.
+     * @param {string} options.cacheName Name of the cache being updated.
+     * @param {Response} [options.oldResponse] The previous cached value, if any.
+     * @param {Response} options.newResponse The new value in the cache.
+     * @param {Request} options.request The request that triggered the update.
+     * @param {Request} options.event The event that triggered the update.
+     */
+    cacheDidUpdate: WorkboxPlugin['cacheDidUpdate'];
+}
+export { BroadcastUpdatePlugin };
Index: frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.js
===================================================================
--- frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,51 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+import { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';
+import { BroadcastCacheUpdate, } from './BroadcastCacheUpdate.js';
+import './_version.js';
+/**
+ * This plugin will automatically broadcast a message whenever a cached response
+ * is updated.
+ *
+ * @memberof workbox-broadcast-update
+ */
+class BroadcastUpdatePlugin {
+    /**
+     * Construct a {@link workbox-broadcast-update.BroadcastUpdate} instance with
+     * the passed options and calls its `notifyIfUpdated` method whenever the
+     * plugin's `cacheDidUpdate` callback is invoked.
+     *
+     * @param {Object} [options]
+     * @param {Array<string>} [options.headersToCheck=['content-length', 'etag', 'last-modified']]
+     *     A list of headers that will be used to determine whether the responses
+     *     differ.
+     * @param {string} [options.generatePayload] A function whose return value
+     *     will be used as the `payload` field in any cache update messages sent
+     *     to the window clients.
+     */
+    constructor(options) {
+        /**
+         * A "lifecycle" callback that will be triggered automatically by the
+         * `workbox-sw` and `workbox-runtime-caching` handlers when an entry is
+         * added to a cache.
+         *
+         * @private
+         * @param {Object} options The input object to this function.
+         * @param {string} options.cacheName Name of the cache being updated.
+         * @param {Response} [options.oldResponse] The previous cached value, if any.
+         * @param {Response} options.newResponse The new value in the cache.
+         * @param {Request} options.request The request that triggered the update.
+         * @param {Request} options.event The event that triggered the update.
+         */
+        this.cacheDidUpdate = async (options) => {
+            dontWaitFor(this._broadcastUpdate.notifyIfUpdated(options));
+        };
+        this._broadcastUpdate = new BroadcastCacheUpdate(options);
+    }
+}
+export { BroadcastUpdatePlugin };
Index: frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.mjs
===================================================================
--- frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/BroadcastUpdatePlugin.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export * from './BroadcastUpdatePlugin.js';
Index: frontend/node_modules/workbox-broadcast-update/LICENSE
===================================================================
--- frontend/node_modules/workbox-broadcast-update/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+Copyright 2018 Google LLC
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
Index: frontend/node_modules/workbox-broadcast-update/README.md
===================================================================
--- frontend/node_modules/workbox-broadcast-update/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+This module's documentation can be found at https://developers.google.com/web/tools/workbox/modules/workbox-broadcast-update
Index: frontend/node_modules/workbox-broadcast-update/_version.js
===================================================================
--- frontend/node_modules/workbox-broadcast-update/_version.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/_version.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+"use strict";
+// @ts-ignore
+try {
+    self['workbox:broadcast-update:6.5.4'] && _();
+}
+catch (e) { }
Index: frontend/node_modules/workbox-broadcast-update/_version.mjs
===================================================================
--- frontend/node_modules/workbox-broadcast-update/_version.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/_version.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+try{self['workbox:broadcast-update:6.6.0']&&_()}catch(e){}// eslint-disable-line
Index: frontend/node_modules/workbox-broadcast-update/index.d.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,8 @@
+import { BroadcastCacheUpdate, BroadcastCacheUpdateOptions } from './BroadcastCacheUpdate.js';
+import { BroadcastUpdatePlugin } from './BroadcastUpdatePlugin.js';
+import { responsesAreSame } from './responsesAreSame.js';
+import './_version.js';
+/**
+ * @module workbox-broadcast-update
+ */
+export { BroadcastCacheUpdate, BroadcastCacheUpdateOptions, BroadcastUpdatePlugin, responsesAreSame, };
Index: frontend/node_modules/workbox-broadcast-update/index.js
===================================================================
--- frontend/node_modules/workbox-broadcast-update/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,15 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+import { BroadcastCacheUpdate, } from './BroadcastCacheUpdate.js';
+import { BroadcastUpdatePlugin } from './BroadcastUpdatePlugin.js';
+import { responsesAreSame } from './responsesAreSame.js';
+import './_version.js';
+/**
+ * @module workbox-broadcast-update
+ */
+export { BroadcastCacheUpdate, BroadcastUpdatePlugin, responsesAreSame, };
Index: frontend/node_modules/workbox-broadcast-update/index.mjs
===================================================================
--- frontend/node_modules/workbox-broadcast-update/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/index.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export * from './index.js';
Index: frontend/node_modules/workbox-broadcast-update/package.json
===================================================================
--- frontend/node_modules/workbox-broadcast-update/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+{
+  "name": "workbox-broadcast-update",
+  "version": "6.6.0",
+  "license": "MIT",
+  "author": "Google's Web DevRel Team",
+  "description": "A service worker helper library that uses the Broadcast Channel API to announce when a cached response has updated",
+  "repository": "googlechrome/workbox",
+  "bugs": "https://github.com/googlechrome/workbox/issues",
+  "homepage": "https://github.com/GoogleChrome/workbox",
+  "keywords": [
+    "workbox",
+    "workboxjs",
+    "service worker",
+    "sw",
+    "workbox-plugin"
+  ],
+  "workbox": {
+    "browserNamespace": "workbox.broadcastUpdate",
+    "packageType": "sw"
+  },
+  "main": "index.js",
+  "module": "index.mjs",
+  "types": "index.d.ts",
+  "dependencies": {
+    "workbox-core": "6.6.0"
+  },
+  "gitHead": "252644491d9bb5a67518935ede6df530107c9475"
+}
Index: frontend/node_modules/workbox-broadcast-update/responsesAreSame.d.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/responsesAreSame.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/responsesAreSame.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,14 @@
+import './_version.js';
+/**
+ * Given two `Response's`, compares several header values to see if they are
+ * the same or not.
+ *
+ * @param {Response} firstResponse
+ * @param {Response} secondResponse
+ * @param {Array<string>} headersToCheck
+ * @return {boolean}
+ *
+ * @memberof workbox-broadcast-update
+ */
+declare const responsesAreSame: (firstResponse: Response, secondResponse: Response, headersToCheck: string[]) => boolean;
+export { responsesAreSame };
Index: frontend/node_modules/workbox-broadcast-update/responsesAreSame.js
===================================================================
--- frontend/node_modules/workbox-broadcast-update/responsesAreSame.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/responsesAreSame.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,47 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+import { WorkboxError } from 'workbox-core/_private/WorkboxError.js';
+import { logger } from 'workbox-core/_private/logger.js';
+import './_version.js';
+/**
+ * Given two `Response's`, compares several header values to see if they are
+ * the same or not.
+ *
+ * @param {Response} firstResponse
+ * @param {Response} secondResponse
+ * @param {Array<string>} headersToCheck
+ * @return {boolean}
+ *
+ * @memberof workbox-broadcast-update
+ */
+const responsesAreSame = (firstResponse, secondResponse, headersToCheck) => {
+    if (process.env.NODE_ENV !== 'production') {
+        if (!(firstResponse instanceof Response && secondResponse instanceof Response)) {
+            throw new WorkboxError('invalid-responses-are-same-args');
+        }
+    }
+    const atLeastOneHeaderAvailable = headersToCheck.some((header) => {
+        return (firstResponse.headers.has(header) && secondResponse.headers.has(header));
+    });
+    if (!atLeastOneHeaderAvailable) {
+        if (process.env.NODE_ENV !== 'production') {
+            logger.warn(`Unable to determine where the response has been updated ` +
+                `because none of the headers that would be checked are present.`);
+            logger.debug(`Attempting to compare the following: `, firstResponse, secondResponse, headersToCheck);
+        }
+        // Just return true, indicating the that responses are the same, since we
+        // can't determine otherwise.
+        return true;
+    }
+    return headersToCheck.every((header) => {
+        const headerStateComparison = firstResponse.headers.has(header) === secondResponse.headers.has(header);
+        const headerValueComparison = firstResponse.headers.get(header) === secondResponse.headers.get(header);
+        return headerStateComparison && headerValueComparison;
+    });
+};
+export { responsesAreSame };
Index: frontend/node_modules/workbox-broadcast-update/responsesAreSame.mjs
===================================================================
--- frontend/node_modules/workbox-broadcast-update/responsesAreSame.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/responsesAreSame.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export * from './responsesAreSame.js';
Index: frontend/node_modules/workbox-broadcast-update/src/BroadcastCacheUpdate.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/src/BroadcastCacheUpdate.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/src/BroadcastCacheUpdate.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,215 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+
+import {assert} from 'workbox-core/_private/assert.js';
+import {timeout} from 'workbox-core/_private/timeout.js';
+import {resultingClientExists} from 'workbox-core/_private/resultingClientExists.js';
+import {CacheDidUpdateCallbackParam} from 'workbox-core/types.js';
+import {logger} from 'workbox-core/_private/logger.js';
+import {responsesAreSame} from './responsesAreSame.js';
+import {
+  CACHE_UPDATED_MESSAGE_META,
+  CACHE_UPDATED_MESSAGE_TYPE,
+  DEFAULT_HEADERS_TO_CHECK,
+  NOTIFY_ALL_CLIENTS,
+} from './utils/constants.js';
+
+import './_version.js';
+
+// UA-sniff Safari: https://stackoverflow.com/questions/7944460/detect-safari-browser
+// TODO(philipwalton): remove once this Safari bug fix has been released.
+// https://bugs.webkit.org/show_bug.cgi?id=201169
+const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+
+// Give TypeScript the correct global.
+declare let self: ServiceWorkerGlobalScope;
+
+export interface BroadcastCacheUpdateOptions {
+  headersToCheck?: string[];
+  generatePayload?: (
+    options: CacheDidUpdateCallbackParam,
+  ) => Record<string, any>;
+  notifyAllClients?: boolean;
+}
+
+/**
+ * Generates the default payload used in update messages. By default the
+ * payload includes the `cacheName` and `updatedURL` fields.
+ *
+ * @return Object
+ * @private
+ */
+function defaultPayloadGenerator(
+  data: CacheDidUpdateCallbackParam,
+): Record<string, any> {
+  return {
+    cacheName: data.cacheName,
+    updatedURL: data.request.url,
+  };
+}
+
+/**
+ * Uses the `postMessage()` API to inform any open windows/tabs when a cached
+ * response has been updated.
+ *
+ * For efficiency's sake, the underlying response bodies are not compared;
+ * only specific response headers are checked.
+ *
+ * @memberof workbox-broadcast-update
+ */
+class BroadcastCacheUpdate {
+  private readonly _headersToCheck: string[];
+  private readonly _generatePayload: (
+    options: CacheDidUpdateCallbackParam,
+  ) => Record<string, any>;
+  private readonly _notifyAllClients: boolean;
+
+  /**
+   * Construct a BroadcastCacheUpdate instance with a specific `channelName` to
+   * broadcast messages on
+   *
+   * @param {Object} [options]
+   * @param {Array<string>} [options.headersToCheck=['content-length', 'etag', 'last-modified']]
+   *     A list of headers that will be used to determine whether the responses
+   *     differ.
+   * @param {string} [options.generatePayload] A function whose return value
+   *     will be used as the `payload` field in any cache update messages sent
+   *     to the window clients.
+   * @param {boolean} [options.notifyAllClients=true] If true (the default) then
+   *     all open clients will receive a message. If false, then only the client
+   *     that make the original request will be notified of the update.
+   */
+  constructor({
+    generatePayload,
+    headersToCheck,
+    notifyAllClients,
+  }: BroadcastCacheUpdateOptions = {}) {
+    this._headersToCheck = headersToCheck || DEFAULT_HEADERS_TO_CHECK;
+    this._generatePayload = generatePayload || defaultPayloadGenerator;
+    this._notifyAllClients = notifyAllClients ?? NOTIFY_ALL_CLIENTS;
+  }
+
+  /**
+   * Compares two [Responses](https://developer.mozilla.org/en-US/docs/Web/API/Response)
+   * and sends a message (via `postMessage()`) to all window clients if the
+   * responses differ. Neither of the Responses can be
+   * [opaque](https://developer.chrome.com/docs/workbox/caching-resources-during-runtime/#opaque-responses).
+   *
+   * The message that's posted has the following format (where `payload` can
+   * be customized via the `generatePayload` option the instance is created
+   * with):
+   *
+   * ```
+   * {
+   *   type: 'CACHE_UPDATED',
+   *   meta: 'workbox-broadcast-update',
+   *   payload: {
+   *     cacheName: 'the-cache-name',
+   *     updatedURL: 'https://example.com/'
+   *   }
+   * }
+   * ```
+   *
+   * @param {Object} options
+   * @param {Response} [options.oldResponse] Cached response to compare.
+   * @param {Response} options.newResponse Possibly updated response to compare.
+   * @param {Request} options.request The request.
+   * @param {string} options.cacheName Name of the cache the responses belong
+   *     to. This is included in the broadcast message.
+   * @param {Event} options.event event The event that triggered
+   *     this possible cache update.
+   * @return {Promise} Resolves once the update is sent.
+   */
+  async notifyIfUpdated(options: CacheDidUpdateCallbackParam): Promise<void> {
+    if (process.env.NODE_ENV !== 'production') {
+      assert!.isType(options.cacheName, 'string', {
+        moduleName: 'workbox-broadcast-update',
+        className: 'BroadcastCacheUpdate',
+        funcName: 'notifyIfUpdated',
+        paramName: 'cacheName',
+      });
+      assert!.isInstance(options.newResponse, Response, {
+        moduleName: 'workbox-broadcast-update',
+        className: 'BroadcastCacheUpdate',
+        funcName: 'notifyIfUpdated',
+        paramName: 'newResponse',
+      });
+      assert!.isInstance(options.request, Request, {
+        moduleName: 'workbox-broadcast-update',
+        className: 'BroadcastCacheUpdate',
+        funcName: 'notifyIfUpdated',
+        paramName: 'request',
+      });
+    }
+
+    // Without two responses there is nothing to compare.
+    if (!options.oldResponse) {
+      return;
+    }
+
+    if (
+      !responsesAreSame(
+        options.oldResponse,
+        options.newResponse,
+        this._headersToCheck,
+      )
+    ) {
+      if (process.env.NODE_ENV !== 'production') {
+        logger.log(
+          `Newer response found (and cached) for:`,
+          options.request.url,
+        );
+      }
+
+      const messageData = {
+        type: CACHE_UPDATED_MESSAGE_TYPE,
+        meta: CACHE_UPDATED_MESSAGE_META,
+        payload: this._generatePayload(options),
+      };
+
+      // For navigation requests, wait until the new window client exists
+      // before sending the message
+      if (options.request.mode === 'navigate') {
+        let resultingClientId: string | undefined;
+        if (options.event instanceof FetchEvent) {
+          resultingClientId = options.event.resultingClientId;
+        }
+
+        const resultingWin = await resultingClientExists(resultingClientId);
+
+        // Safari does not currently implement postMessage buffering and
+        // there's no good way to feature detect that, so to increase the
+        // chances of the message being delivered in Safari, we add a timeout.
+        // We also do this if `resultingClientExists()` didn't return a client,
+        // which means it timed out, so it's worth waiting a bit longer.
+        if (!resultingWin || isSafari) {
+          // 3500 is chosen because (according to CrUX data) 80% of mobile
+          // websites hit the DOMContentLoaded event in less than 3.5 seconds.
+          // And presumably sites implementing service worker are on the
+          // higher end of the performance spectrum.
+          await timeout(3500);
+        }
+      }
+
+      if (this._notifyAllClients) {
+        const windows = await self.clients.matchAll({type: 'window'});
+        for (const win of windows) {
+          win.postMessage(messageData);
+        }
+      } else {
+        // See https://github.com/GoogleChrome/workbox/issues/2895
+        if (options.event instanceof FetchEvent) {
+          const client = await self.clients.get(options.event.clientId);
+          client?.postMessage(messageData);
+        }
+      }
+    }
+  }
+}
+
+export {BroadcastCacheUpdate};
Index: frontend/node_modules/workbox-broadcast-update/src/BroadcastUpdatePlugin.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/src/BroadcastUpdatePlugin.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/src/BroadcastUpdatePlugin.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,63 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+
+import {dontWaitFor} from 'workbox-core/_private/dontWaitFor.js';
+import {WorkboxPlugin} from 'workbox-core/types.js';
+
+import {
+  BroadcastCacheUpdate,
+  BroadcastCacheUpdateOptions,
+} from './BroadcastCacheUpdate.js';
+
+import './_version.js';
+
+/**
+ * This plugin will automatically broadcast a message whenever a cached response
+ * is updated.
+ *
+ * @memberof workbox-broadcast-update
+ */
+class BroadcastUpdatePlugin implements WorkboxPlugin {
+  private readonly _broadcastUpdate: BroadcastCacheUpdate;
+
+  /**
+   * Construct a {@link workbox-broadcast-update.BroadcastUpdate} instance with
+   * the passed options and calls its `notifyIfUpdated` method whenever the
+   * plugin's `cacheDidUpdate` callback is invoked.
+   *
+   * @param {Object} [options]
+   * @param {Array<string>} [options.headersToCheck=['content-length', 'etag', 'last-modified']]
+   *     A list of headers that will be used to determine whether the responses
+   *     differ.
+   * @param {string} [options.generatePayload] A function whose return value
+   *     will be used as the `payload` field in any cache update messages sent
+   *     to the window clients.
+   */
+  constructor(options?: BroadcastCacheUpdateOptions) {
+    this._broadcastUpdate = new BroadcastCacheUpdate(options);
+  }
+
+  /**
+   * A "lifecycle" callback that will be triggered automatically by the
+   * `workbox-sw` and `workbox-runtime-caching` handlers when an entry is
+   * added to a cache.
+   *
+   * @private
+   * @param {Object} options The input object to this function.
+   * @param {string} options.cacheName Name of the cache being updated.
+   * @param {Response} [options.oldResponse] The previous cached value, if any.
+   * @param {Response} options.newResponse The new value in the cache.
+   * @param {Request} options.request The request that triggered the update.
+   * @param {Request} options.event The event that triggered the update.
+   */
+  cacheDidUpdate: WorkboxPlugin['cacheDidUpdate'] = async (options) => {
+    dontWaitFor(this._broadcastUpdate.notifyIfUpdated(options));
+  };
+}
+
+export {BroadcastUpdatePlugin};
Index: frontend/node_modules/workbox-broadcast-update/src/_version.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/src/_version.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/src/_version.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+// @ts-ignore
+try{self['workbox:broadcast-update:6.6.0']&&_()}catch(e){}
Index: frontend/node_modules/workbox-broadcast-update/src/index.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/src/index.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/src/index.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,27 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+
+import {
+  BroadcastCacheUpdate,
+  BroadcastCacheUpdateOptions,
+} from './BroadcastCacheUpdate.js';
+import {BroadcastUpdatePlugin} from './BroadcastUpdatePlugin.js';
+import {responsesAreSame} from './responsesAreSame.js';
+
+import './_version.js';
+
+/**
+ * @module workbox-broadcast-update
+ */
+
+export {
+  BroadcastCacheUpdate,
+  BroadcastCacheUpdateOptions,
+  BroadcastUpdatePlugin,
+  responsesAreSame,
+};
Index: frontend/node_modules/workbox-broadcast-update/src/responsesAreSame.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/src/responsesAreSame.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/src/responsesAreSame.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,72 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+
+import {WorkboxError} from 'workbox-core/_private/WorkboxError.js';
+import {logger} from 'workbox-core/_private/logger.js';
+import './_version.js';
+
+/**
+ * Given two `Response's`, compares several header values to see if they are
+ * the same or not.
+ *
+ * @param {Response} firstResponse
+ * @param {Response} secondResponse
+ * @param {Array<string>} headersToCheck
+ * @return {boolean}
+ *
+ * @memberof workbox-broadcast-update
+ */
+const responsesAreSame = (
+  firstResponse: Response,
+  secondResponse: Response,
+  headersToCheck: string[],
+): boolean => {
+  if (process.env.NODE_ENV !== 'production') {
+    if (
+      !(firstResponse instanceof Response && secondResponse instanceof Response)
+    ) {
+      throw new WorkboxError('invalid-responses-are-same-args');
+    }
+  }
+
+  const atLeastOneHeaderAvailable = headersToCheck.some((header) => {
+    return (
+      firstResponse.headers.has(header) && secondResponse.headers.has(header)
+    );
+  });
+
+  if (!atLeastOneHeaderAvailable) {
+    if (process.env.NODE_ENV !== 'production') {
+      logger.warn(
+        `Unable to determine where the response has been updated ` +
+          `because none of the headers that would be checked are present.`,
+      );
+      logger.debug(
+        `Attempting to compare the following: `,
+        firstResponse,
+        secondResponse,
+        headersToCheck,
+      );
+    }
+
+    // Just return true, indicating the that responses are the same, since we
+    // can't determine otherwise.
+    return true;
+  }
+
+  return headersToCheck.every((header) => {
+    const headerStateComparison =
+      firstResponse.headers.has(header) === secondResponse.headers.has(header);
+    const headerValueComparison =
+      firstResponse.headers.get(header) === secondResponse.headers.get(header);
+
+    return headerStateComparison && headerValueComparison;
+  });
+};
+
+export {responsesAreSame};
Index: frontend/node_modules/workbox-broadcast-update/src/utils/constants.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/src/utils/constants.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/src/utils/constants.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+
+import '../_version.js';
+
+export const CACHE_UPDATED_MESSAGE_TYPE = 'CACHE_UPDATED';
+export const CACHE_UPDATED_MESSAGE_META = 'workbox-broadcast-update';
+export const NOTIFY_ALL_CLIENTS = true;
+export const DEFAULT_HEADERS_TO_CHECK: string[] = [
+  'content-length',
+  'etag',
+  'last-modified',
+];
Index: frontend/node_modules/workbox-broadcast-update/tsconfig.json
===================================================================
--- frontend/node_modules/workbox-broadcast-update/tsconfig.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/tsconfig.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,10 @@
+{
+  "extends": "../../tsconfig",
+  "compilerOptions": {
+    "outDir": "./",
+    "rootDir": "./src",
+    "tsBuildInfoFile": "./tsconfig.tsbuildinfo"
+  },
+  "include": ["src/**/*.ts"],
+  "references": [{"path": "../workbox-core/"}]
+}
Index: frontend/node_modules/workbox-broadcast-update/tsconfig.tsbuildinfo
===================================================================
--- frontend/node_modules/workbox-broadcast-update/tsconfig.tsbuildinfo	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/tsconfig.tsbuildinfo	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.webworker.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../infra/type-overrides.d.ts","../workbox-core/_version.d.ts","../workbox-core/types.d.ts","../workbox-core/_private/assert.d.ts","../workbox-core/_private/timeout.d.ts","../workbox-core/_private/resultingclientexists.d.ts","../workbox-core/_private/logger.d.ts","../workbox-core/_private/workboxerror.d.ts","./src/_version.ts","./src/responsesaresame.ts","./src/utils/constants.ts","./src/broadcastcacheupdate.ts","../workbox-core/_private/dontwaitfor.d.ts","./src/broadcastupdateplugin.ts","./src/index.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/babel__preset-env/index.d.ts","../../node_modules/@types/common-tags/index.d.ts","../../node_modules/@types/eslint/helpers.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/eslint/index.d.ts","../../node_modules/@types/eslint-scope/index.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/ts3.4/base.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/ts3.6/base.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/base.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/fs-extra/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/glob/index.d.ts","../../node_modules/@types/html-minifier-terser/index.d.ts","../../node_modules/@types/linkify-it/index.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../../node_modules/@types/mdurl/encode.d.ts","../../node_modules/@types/mdurl/decode.d.ts","../../node_modules/@types/mdurl/parse.d.ts","../../node_modules/@types/mdurl/format.d.ts","../../node_modules/@types/mdurl/index.d.ts","../../node_modules/@types/markdown-it/lib/common/utils.d.ts","../../node_modules/@types/markdown-it/lib/token.d.ts","../../node_modules/@types/markdown-it/lib/rules_inline/state_inline.d.ts","../../node_modules/@types/markdown-it/lib/helpers/parse_link_label.d.ts","../../node_modules/@types/markdown-it/lib/helpers/parse_link_destination.d.ts","../../node_modules/@types/markdown-it/lib/helpers/parse_link_title.d.ts","../../node_modules/@types/markdown-it/lib/helpers/index.d.ts","../../node_modules/@types/markdown-it/lib/ruler.d.ts","../../node_modules/@types/markdown-it/lib/rules_block/state_block.d.ts","../../node_modules/@types/markdown-it/lib/parser_block.d.ts","../../node_modules/@types/markdown-it/lib/rules_core/state_core.d.ts","../../node_modules/@types/markdown-it/lib/parser_core.d.ts","../../node_modules/@types/markdown-it/lib/parser_inline.d.ts","../../node_modules/@types/markdown-it/lib/renderer.d.ts","../../node_modules/@types/markdown-it/lib/index.d.ts","../../node_modules/@types/markdown-it/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/parse-json/index.d.ts","../../node_modules/@types/resolve/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/source-list-map/index.d.ts","../../node_modules/@types/stringify-object/index.d.ts","../../node_modules/@types/tapable/index.d.ts","../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts","../../node_modules/@types/uglify-js/index.d.ts","../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../node_modules/@types/webpack-sources/lib/source.d.ts","../../node_modules/@types/webpack-sources/lib/compatsource.d.ts","../../node_modules/@types/webpack-sources/lib/concatsource.d.ts","../../node_modules/@types/webpack-sources/lib/originalsource.d.ts","../../node_modules/@types/webpack-sources/lib/prefixsource.d.ts","../../node_modules/@types/webpack-sources/lib/rawsource.d.ts","../../node_modules/@types/webpack-sources/lib/replacesource.d.ts","../../node_modules/@types/webpack-sources/lib/sizeonlysource.d.ts","../../node_modules/@types/webpack-sources/lib/sourcemapsource.d.ts","../../node_modules/@types/webpack-sources/lib/index.d.ts","../../node_modules/@types/webpack-sources/lib/cachedsource.d.ts","../../node_modules/@types/webpack-sources/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"d3f4771304b6b07e5a2bb992e75af76ac060de78803b1b21f0475ffc5654d817","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"0396119f8b76a074eddc16de8dbc4231a448f2534f4c64c5ab7b71908eb6e646","affectsGlobalScope":true},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","f0ae1ac99c66a4827469b8942101642ae65971e36db438afe67d4985caa31222","7f5bced3f1bd3647585b59564e0b0fda67e1c2930325507ee922698fe8366aca","f69dd422840e809218633c76acb5eed2a6aa81914299f9b8d74101148526e27e","1b5906124bb3a63826d30d4ca5547143b0d6308e9db51ce453bd759ba88df530",{"version":"d763b9ef68a16f3896187af5b51b5a959b479218cc65c2930bcb440cbbf10728","affectsGlobalScope":true},"0b066351c69855f76970a460fe20a500d20f369a02d2069aa49e1195cd04c3c5",{"version":"b6b1cb5b993f338e55f2f8a18e2abf7f28ac379f1f0e1ba5066b73b5b1cebe5f","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","affectsGlobalScope":true},{"version":"29c4816f84d95542f7e5927328c6f63e459e51ebf2e3e43c1d48196e20fb9b0e","signature":"46cf5dafafde199251af03894df1326d4132338d5ed8787398acc1ffbc8060f0"},{"version":"dd7963835ab07991d0da9271a09fe1418bc94afedc44d6bf33d3202e51aadd35","signature":"cb2636e4ead2ccfba2f0adf6d0b5b84b5690c65676445bd1e4549242c8c37829"},{"version":"bd4f9c421a16a9e828ed68716b9839f0e8c97310e5d21cf3278bb98343dcd438","signature":"46b907ed13bd5023adeb5446ad96e9680b1a40d4e4288344d0d0e31d9034d20a"},"365f3bd8994af50572b562a002e0fa2e72e74f54ed996e2444ea3df562678f50",{"version":"db0ca07c95df22c9004fbaad372b3dea21b761c5ed6fd14a99eb0f7b3e6c3866","signature":"5c1b58d0f72081d9cb7b56ae2658c7f61f9bc10c68b241bc067314dd4400bf5b"},{"version":"9ca83759a1dd18fb00739cfc3d4bc303c5de4b7d09ba2850ce9bb833a222d4d0","signature":"989ea68a123a6573bdd68264912093d6697646ceeecb7d82252deb463b32abc5"},"3eb8ad25895d53cc6229dc83decbc338d649ed6f3d5b537c9966293b056b1f57","b25c5f2970d06c729f464c0aeaa64b1a5b5f1355aa93554bb5f9c199b8624b1e","8678956904af215fe917b2df07b6c54f876fa64eb1f8a158e4ff38404cef3ff4","3051751533eee92572241b3cef28333212401408c4e7aa21718714b793c0f4ed","691aea9772797ca98334eb743e7686e29325b02c6931391bcee4cc7bf27a9f3b","6f1d39d26959517da3bd105c552eded4c34702705c64d75b03f54d864b6e41c2","5d1b955e6b1974fe5f47fbde474343113ab701ca30b80e463635a29e58d80944","3b93231babdb3ee9470a7e6103e48bf6585c4185f96941c08a77e097f8f469ae",{"version":"f345b0888d003fd69cb32bad3a0aa04c615ccafc572019e4bd86a52bd5e49e46","affectsGlobalScope":true},"0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","6a38e250306ceccbab257d11b846d5bd12491157d20901fa01afe4050c93c1b5","ffa048767a32a0f6354e611b15d8b53d882da1a9a35455c35c3f6811f2416d17","e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a",{"version":"68aba9c37b535b42ce96b78a4cfa93813bf4525f86dceb88a6d726c5f7c6c14f","affectsGlobalScope":true},"c438b413e94ff76dfa20ae005f33a1c84f2480d1d66e0fd687501020d0de9b50","bc6a78961535181265845bf9b9e8a147ffd0ca275097ceb670a9b92afa825152","1fc4b0908c44f39b1f2e5a728d472670a0ea0970d2c6b5691c88167fe541ff82","123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803",{"version":"51851805d06a6878796c3a00ccf0839fe18111a38d1bae84964c269f16bcc2b7","affectsGlobalScope":true},"90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720","c5ecc351d5eaa36dc682b4c398b57a9d37c108857b71a09464a06e0185831ac2","7ecfe97b43aa6c8b8f90caa599d5648bb559962e74e6f038f73a77320569dd78","7db7569fbb3e2b01ba8751c761cdd3f0debd104170d5665b7dc20a11630df3a9",{"version":"cde4d7f6274468180fa39847b183aec22626e8212ff885d535c53f4cd7c225fd","affectsGlobalScope":true},{"version":"072b0ac82ae8fe05b0d4f2eadb7f6edd0ebd84175ecad2f9e09261290a86bcee","affectsGlobalScope":true},"f6eedd1053167b8a651d8d9c70b1772e1b501264a36dfa881d7d4b30d623a9bc","fb28748ff8d015f52e99daee4f454e57cec1a22141f1257c317f3630a15edeb7","08fb2b0e1ef13a2df43f6d8e97019c36dfbc0475cf4d274c6838e2c9223fe39d","5d9394b829cfd504b2fe17287aaad8ce1dcfb2a2183c962a90a85b96da2c1c90","c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a","6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947","bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665","46cac76114704902baa535b30fb66a26aeaf9430f3b3ab44746e329f12e85498","ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34","84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35","6999f789ed86a40f3bc4d7e644e8d42ffda569465969df8077cd6c4e3505dd76",{"version":"0c9f2b308e5696d0802b613aff47c99f092add29408e654f7ab6026134250c18","affectsGlobalScope":true},"4a9008d79750801375605e6cfefa4e04643f20f2aaa58404c6aae1c894e9b049","884560fda6c3868f925f022adc3a1289fe6507bbb45adb10fa1bbcc73a941bb0","6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9","dd3706b25d06fe23c73d16079e8c66ac775831ef419da00716bf2aee530a04a4","1298327149e93a60c24a3b5db6048f7cc8fd4e3259e91d05fc44306a04b1b873","d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457","b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9","3181290a158e54a78c1a57c41791ec1cbdc860ae565916daa1bf4e425b7edac7","a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638","3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748","826d48e49c905cedb906cbde6ccaf758827ff5867d4daa006b5a79e0fb489357","5ef157fbb39494a581bd24f21b60488fe248d452c479738b5e41b48720ea69b8","289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953","a1136cf18dbe1b9b600c65538fd48609a1a4772d115a0c1d775839fe6544487c","24638ed25631a94a9b0d7b580b146329f82e158e8d1e90171a73d87bebf79255","638f49a0db5d30977533a8cfabf3e10ab30724360424698e8d5fd41ca272e070","d44028ae0127eb3e9fcfa5f55a8b81d64775ce15aca1020fe25c511bbb055834",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3","0f04bc8950ad634ac8ac70f704f200ef06f8852af9017f97c446de4def5b3546","d0c575d48d6dad75648017ff18762eb97f9398cc9486541b3070e79ce12719e6","d20072cb51d8baad944bedd935a25c7f10c29744e9a648d2c72c215337356077","35cbbc58882d2c158032d7f24ba8953d7e1caeb8cb98918d85819496109f55d2","8d01c38ccb9af3a4035a68818799e5ef32ccc8cf70bdb83e181e1921d7ad32f6","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0","6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d","6503fb6addf62f9b10f8564d9869ad824565a914ec1ac3dd7d13da14a3f57036","3594c022901a1c8993b0f78a3f534cfb81e7b619ed215348f7f6882f3db02abc","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c9f396e71966bd3a890d8a36a6a497dbf260e9b868158ea7824d4b5421210afe","509235563ea2b939e1bbe92aae17e71e6a82ceab8f568b45fb4fce7d72523a32","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","c311349ec71bb69399ffc4092853e7d8a86c1ca39ddb4cd129e775c19d985793","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","4908e4c00832b26ce77a629de8501b0e23a903c094f9e79a7fec313a15da796a","2630a7cbb597e85d713b7ef47f2946d4280d3d4c02733282770741d40672b1a5",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"f313731860257325f13351575f381fef333d4dfe30daf5a2e72f894208feea08","951b37f7d86f6012f09e6b35f1de57c69d75f16908cb0adaa56b93675ea0b853","3816fc03ffd9cbd1a7a3362a264756a4a1d547caabea50ca68303046be40e376","0c417b4ec46b88fb62a43ec00204700b560d01eb5677c7faa8ecd34610f096a8","13d29cdeb64e8496424edf42749bbb47de5e42d201cf958911a4638cbcffbd3f","0f9e381eecc5860f693c31fe463b3ca20a64ca9b8db0cf6208cd4a053f064809","95902d5561c6aac5dfc40568a12b0aca324037749dcd32a81f23423bfde69bab","5dfb2aca4136abdc5a2740f14be8134a6e6b66fd53470bb2e954e40f8abfaf3e","577463167dd69bd81f76697dfc3f7b22b77a6152f60a602a9218e52e3183ad67","b8396e9024d554b611cbe31a024b176ba7116063d19354b5a02dccd8f0118989","4b28e1c5bf88d891e07a1403358b81a51b3ba2eae1ffada51cca7476b5ac6407","7150ad575d28bf98fae321a1c0f10ad17b127927811f488ded6ff1d88d4244e5","8b155c4757d197969553de3762c8d23d5866710301de41e1b66b97c9ed867003","93733466609dd8bf72eace502a24ca7574bd073d934216e628f1b615c8d3cb3c","45e9228761aabcadb79c82fb3008523db334491525bdb8e74e0f26eaf7a4f7f4","aeacac2778c9821512b6b889da79ac31606a863610c8f28da1e483579627bf90","569fdb354062fc098a6a3ba93a029edf22d6fe480cf72b231b3c07832b2e7c97","bf9876e62fb7f4237deafab8c7444770ef6e82b4cad2d5dc768664ff340feeb2","6cf60e76d37faf0fbc2f80a873eab0fd545f6b1bf300e7f0823f956ddb3083e9","6adaa6103086f931e3eee20f0987e86e8879e9d13aa6bd6075ccfc58b9c5681c","ee0af0f2b8d3b4d0baf669f2ff6fcef4a8816a473c894cc7c905029f7505fed0","3602dfff3072caea42f23a9b63fb34a7b0c95a62b93ce2add5fe6b159447845e","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","67d3e19b3b6e2c082ffd11ae5064c7a81b13d151326953b90fc26103067a1945","d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","9d74c7330800b325bb19cc8c1a153a612c080a60094e1ab6cfb6e39cf1b88c36","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762"],"options":{"composite":true,"declaration":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","preserveConstEnums":true,"rootDir":"./src","strict":true,"target":4,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"fileIdsList":[[45],[45,46,47,48,49],[45,47],[55,56],[53,54,55],[70,104],[69,104,106],[110,112,113,114,115,116,117,118,119,120,121,122],[110,111,113,114,115,116,117,118,119,120,121,122],[111,112,113,114,115,116,117,118,119,120,121,122],[110,111,112,114,115,116,117,118,119,120,121,122],[110,111,112,113,115,116,117,118,119,120,121,122],[110,111,112,113,114,116,117,118,119,120,121,122],[110,111,112,113,114,115,117,118,119,120,121,122],[110,111,112,113,114,115,116,118,119,120,121,122],[110,111,112,113,114,115,116,117,119,120,121,122],[110,111,112,113,114,115,116,117,118,120,121,122],[110,111,112,113,114,115,116,117,118,119,121,122],[110,111,112,113,114,115,116,117,118,119,120,122],[110,111,112,113,114,115,116,117,118,119,120,121],[142],[127],[131,132,133],[130],[132],[109,128,129,134,137,139,140,141],[129,135,136,142],[135,138],[129,130,135,142],[129,142],[123,124,125,126],[101,102],[69,70,77,86],[61,69,77],[93],[65,70,78],[86],[67,69,77],[69],[69,71,86,92],[70],[77,86,92],[69,70,72,77,86,89,92],[69,72,89,92],[103],[92],[67,69,86],[59],[91],[69,86],[84,93,95],[65,67,77,86],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],[98,99,100],[77],[83],[69,71,86,92,95],[104],[148,187],[148,172,187],[187],[148],[148,173,187],[148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],[173,187],[191],[104,194,195,196,197,198,199,200,201,202,203,204],[193,194,203],[194,203],[188,193,194,203],[193,194,195,196,197,198,199,200,201,202,204],[194],[65,193,203],[32,33,34,35,36,39,40],[32,41,42],[39,41,43],[36,37],[32],[32,41]],"referencedMap":[[47,1],[50,2],[46,1],[48,3],[49,1],[57,4],[56,5],[105,6],[107,7],[111,8],[112,9],[110,10],[113,11],[114,12],[115,13],[116,14],[117,15],[118,16],[119,17],[120,18],[121,19],[122,20],[143,21],[128,22],[134,23],[131,24],[133,25],[142,26],[137,27],[139,28],[140,29],[141,30],[136,30],[138,30],[130,30],[126,22],[127,31],[125,22],[103,32],[61,33],[62,34],[63,35],[64,36],[65,37],[66,38],[68,39],[70,40],[71,41],[72,42],[73,43],[74,44],[104,45],[75,39],[76,46],[77,47],[80,48],[81,49],[84,50],[85,51],[86,39],[89,52],[98,53],[101,54],[91,55],[92,56],[94,37],[96,57],[97,37],[147,58],[172,59],[173,60],[148,61],[151,61],[170,59],[171,59],[161,59],[160,62],[158,59],[153,59],[166,59],[164,59],[168,59],[152,59],[165,59],[169,59],[154,59],[155,59],[167,59],[149,59],[156,59],[157,59],[159,59],[163,59],[174,63],[162,59],[150,59],[187,64],[181,63],[183,65],[182,63],[175,63],[176,63],[178,63],[180,63],[184,65],[185,65],[177,65],[179,65],[192,66],[205,67],[204,68],[195,69],[196,70],[203,71],[197,70],[198,69],[199,69],[200,69],[201,72],[194,73],[202,68],[41,74],[43,75],[44,76],[39,77],[33,78],[37,78]],"exportedModulesMap":[[47,1],[50,2],[46,1],[48,3],[49,1],[57,4],[56,5],[105,6],[107,7],[111,8],[112,9],[110,10],[113,11],[114,12],[115,13],[116,14],[117,15],[118,16],[119,17],[120,18],[121,19],[122,20],[143,21],[128,22],[134,23],[131,24],[133,25],[142,26],[137,27],[139,28],[140,29],[141,30],[136,30],[138,30],[130,30],[126,22],[127,31],[125,22],[103,32],[61,33],[62,34],[63,35],[64,36],[65,37],[66,38],[68,39],[70,40],[71,41],[72,42],[73,43],[74,44],[104,45],[75,39],[76,46],[77,47],[80,48],[81,49],[84,50],[85,51],[86,39],[89,52],[98,53],[101,54],[91,55],[92,56],[94,37],[96,57],[97,37],[147,58],[172,59],[173,60],[148,61],[151,61],[170,59],[171,59],[161,59],[160,62],[158,59],[153,59],[166,59],[164,59],[168,59],[152,59],[165,59],[169,59],[154,59],[155,59],[167,59],[149,59],[156,59],[157,59],[159,59],[163,59],[174,63],[162,59],[150,59],[187,64],[181,63],[183,65],[182,63],[175,63],[176,63],[178,63],[180,63],[184,65],[185,65],[177,65],[179,65],[192,66],[205,67],[204,68],[195,69],[196,70],[203,71],[197,70],[198,69],[199,69],[200,69],[201,72],[194,73],[202,68],[41,78],[43,79],[44,76],[33,78],[37,78]],"semanticDiagnosticsPerFile":[30,47,45,50,46,51,48,49,52,57,53,56,55,105,107,108,54,109,111,112,110,113,114,115,116,117,118,119,120,121,122,143,128,134,132,131,133,142,137,139,140,141,135,136,138,130,129,124,123,126,127,125,106,144,102,59,103,60,61,62,63,64,65,66,67,68,69,70,71,58,99,72,73,74,104,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,98,101,91,92,93,94,95,100,96,97,145,146,147,172,173,148,151,170,171,161,160,158,153,166,164,168,152,165,169,154,155,167,149,156,157,159,163,174,162,150,187,186,181,183,182,175,176,178,180,184,185,177,179,188,189,190,192,191,205,204,195,196,203,197,198,199,200,201,194,202,193,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,28,1,29,6,38,41,43,44,39,40,33,42,36,35,34,37,31,32],"latestChangedDtsFile":"./index.d.ts"},"version":"4.9.5"}
Index: frontend/node_modules/workbox-broadcast-update/utils/constants.d.ts
===================================================================
--- frontend/node_modules/workbox-broadcast-update/utils/constants.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/utils/constants.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,5 @@
+import '../_version.js';
+export declare const CACHE_UPDATED_MESSAGE_TYPE = "CACHE_UPDATED";
+export declare const CACHE_UPDATED_MESSAGE_META = "workbox-broadcast-update";
+export declare const NOTIFY_ALL_CLIENTS = true;
+export declare const DEFAULT_HEADERS_TO_CHECK: string[];
Index: frontend/node_modules/workbox-broadcast-update/utils/constants.js
===================================================================
--- frontend/node_modules/workbox-broadcast-update/utils/constants.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/utils/constants.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,16 @@
+/*
+  Copyright 2018 Google LLC
+
+  Use of this source code is governed by an MIT-style
+  license that can be found in the LICENSE file or at
+  https://opensource.org/licenses/MIT.
+*/
+import '../_version.js';
+export const CACHE_UPDATED_MESSAGE_TYPE = 'CACHE_UPDATED';
+export const CACHE_UPDATED_MESSAGE_META = 'workbox-broadcast-update';
+export const NOTIFY_ALL_CLIENTS = true;
+export const DEFAULT_HEADERS_TO_CHECK = [
+    'content-length',
+    'etag',
+    'last-modified',
+];
Index: frontend/node_modules/workbox-broadcast-update/utils/constants.mjs
===================================================================
--- frontend/node_modules/workbox-broadcast-update/utils/constants.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/workbox-broadcast-update/utils/constants.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export * from './constants.js';
