diff --git a/docs/advanced-features/dynamic-import.md b/docs/advanced-features/dynamic-import.md index 5551a084daeee..3cb20a86ad0e5 100644 --- a/docs/advanced-features/dynamic-import.md +++ b/docs/advanced-features/dynamic-import.md @@ -71,6 +71,8 @@ export default Home `DynamicComponent` will be the default component returned by `../components/hello`. It works like a regular React Component, and you can pass props to it as you normally would. +> **Note**: `import()` needs to be explicitly written without template strings. Furthermore the `import()` has to be inside the `dynamic()` call for Next.js to be able to match webpack bundles / module ids to the specific `dynamic()` call and preload them before rendering. `dynamic()` can't be used inside of React rendering as it needs to be marked in the top level of the module for preloading to work, similar to `React.lazy`. + ## With named exports If the dynamic component is not the default export, you can use a named export too. Consider the module `../components/hello.js` which has a named export `Hello`: diff --git a/docs/routing/introduction.md b/docs/routing/introduction.md index 5e43b335e88cc..8545a00277e5d 100644 --- a/docs/routing/introduction.md +++ b/docs/routing/introduction.md @@ -36,7 +36,7 @@ To match a dynamic segment you can use the bracket syntax. This allows you to ma ## Linking between pages -The Next.js router allows you to do client-side route transitions between pages, similarly to a single-page application. +The Next.js router allows you to do client-side route transitions between pages, similar to a single-page application. A React component called `Link` is provided to do this client-side route transition. diff --git a/lerna.json b/lerna.json index 5f6e66beee492..fb8a3000bd5c9 100644 --- a/lerna.json +++ b/lerna.json @@ -17,5 +17,5 @@ "registry": "https://registry.npmjs.org/" } }, - "version": "10.0.4-canary.4" + "version": "10.0.4-canary.5" } diff --git a/packages/create-next-app/package.json b/packages/create-next-app/package.json index ea879eeaf55c2..051c68d63f221 100644 --- a/packages/create-next-app/package.json +++ b/packages/create-next-app/package.json @@ -1,6 +1,6 @@ { "name": "create-next-app", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "keywords": [ "react", "next", diff --git a/packages/create-next-app/templates/default/README-template.md b/packages/create-next-app/templates/default/README-template.md index 4b5c883b29bd5..4b412a3cfa4ca 100644 --- a/packages/create-next-app/templates/default/README-template.md +++ b/packages/create-next-app/templates/default/README-template.md @@ -14,6 +14,10 @@ Open [http://localhost:3000](http://localhost:3000) with your browser to see the You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. +[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. + +The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. + ## Learn More To learn more about Next.js, take a look at the following resources: diff --git a/packages/eslint-plugin-next/package.json b/packages/eslint-plugin-next/package.json index d14480b780184..013193373aef3 100644 --- a/packages/eslint-plugin-next/package.json +++ b/packages/eslint-plugin-next/package.json @@ -1,6 +1,6 @@ { "name": "@next/eslint-plugin-next", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "description": "ESLint plugin for NextJS.", "main": "lib/index.js", "license": "MIT", diff --git a/packages/next-bundle-analyzer/package.json b/packages/next-bundle-analyzer/package.json index 1913939918e3b..4db78a1a4d192 100644 --- a/packages/next-bundle-analyzer/package.json +++ b/packages/next-bundle-analyzer/package.json @@ -1,6 +1,6 @@ { "name": "@next/bundle-analyzer", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "main": "index.js", "license": "MIT", "repository": { diff --git a/packages/next-codemod/package.json b/packages/next-codemod/package.json index 2cc6a2b453659..ad26690427345 100644 --- a/packages/next-codemod/package.json +++ b/packages/next-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@next/codemod", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "license": "MIT", "dependencies": { "chalk": "4.1.0", diff --git a/packages/next-env/package.json b/packages/next-env/package.json index 3eaf8940ea97f..b2759bcde614d 100644 --- a/packages/next-env/package.json +++ b/packages/next-env/package.json @@ -1,6 +1,6 @@ { "name": "@next/env", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "keywords": [ "react", "next", diff --git a/packages/next-mdx/package.json b/packages/next-mdx/package.json index 258366d5e1185..2cf8d74919389 100644 --- a/packages/next-mdx/package.json +++ b/packages/next-mdx/package.json @@ -1,6 +1,6 @@ { "name": "@next/mdx", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "main": "index.js", "license": "MIT", "repository": { diff --git a/packages/next-plugin-google-analytics/package.json b/packages/next-plugin-google-analytics/package.json index 6b1539d845fd8..964621189c1ef 100644 --- a/packages/next-plugin-google-analytics/package.json +++ b/packages/next-plugin-google-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@next/plugin-google-analytics", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "repository": { "url": "vercel/next.js", "directory": "packages/next-plugin-google-analytics" diff --git a/packages/next-plugin-sentry/package.json b/packages/next-plugin-sentry/package.json index 699e91598bcbf..6e1fad941d3a1 100644 --- a/packages/next-plugin-sentry/package.json +++ b/packages/next-plugin-sentry/package.json @@ -1,6 +1,6 @@ { "name": "@next/plugin-sentry", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "repository": { "url": "vercel/next.js", "directory": "packages/next-plugin-sentry" diff --git a/packages/next-plugin-storybook/package.json b/packages/next-plugin-storybook/package.json index 49dc458565926..2f0c43526c201 100644 --- a/packages/next-plugin-storybook/package.json +++ b/packages/next-plugin-storybook/package.json @@ -1,6 +1,6 @@ { "name": "@next/plugin-storybook", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "repository": { "url": "vercel/next.js", "directory": "packages/next-plugin-storybook" diff --git a/packages/next-polyfill-module/package.json b/packages/next-polyfill-module/package.json index b2d2d390fbb5e..b3c5c67e241bf 100644 --- a/packages/next-polyfill-module/package.json +++ b/packages/next-polyfill-module/package.json @@ -1,6 +1,6 @@ { "name": "@next/polyfill-module", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "description": "A standard library polyfill for ES Modules supporting browsers (Edge 16+, Firefox 60+, Chrome 61+, Safari 10.1+)", "main": "dist/polyfill-module.js", "license": "MIT", diff --git a/packages/next-polyfill-nomodule/package.json b/packages/next-polyfill-nomodule/package.json index e53583a4e6333..ecc92bdc22d78 100644 --- a/packages/next-polyfill-nomodule/package.json +++ b/packages/next-polyfill-nomodule/package.json @@ -1,6 +1,6 @@ { "name": "@next/polyfill-nomodule", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "description": "A polyfill for non-dead, nomodule browsers.", "main": "dist/polyfill-nomodule.js", "license": "MIT", diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index df932988f8d40..abfb6faf1a80b 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -4,7 +4,8 @@ import crypto from 'crypto' import { readFileSync, realpathSync } from 'fs' import chalk from 'chalk' import semver from 'next/dist/compiled/semver' -import TerserPlugin from 'next/dist/compiled/terser-webpack-plugin' +// @ts-ignore No typings yet +import TerserPlugin from './webpack/plugins/terser-webpack-plugin/src/index.js' import path from 'path' import webpack from 'webpack' import type { Configuration } from 'webpack' @@ -743,9 +744,8 @@ export default async function getBaseWebpackConfig( minimizer: [ // Minify JavaScript new TerserPlugin({ - extractComments: false, - cache: path.join(distDir, 'cache', 'next-minifier'), - parallel: config.experimental.cpus || true, + cacheDir: path.join(distDir, 'cache', 'next-minifier'), + parallel: config.experimental.cpus, terserOptions, }), // Minify CSS diff --git a/packages/next/compiled/terser-webpack-plugin/LICENSE b/packages/next/build/webpack/plugins/terser-webpack-plugin/LICENSE similarity index 100% rename from packages/next/compiled/terser-webpack-plugin/LICENSE rename to packages/next/build/webpack/plugins/terser-webpack-plugin/LICENSE diff --git a/packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js b/packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js new file mode 100644 index 0000000000000..f23bce097e4fd --- /dev/null +++ b/packages/next/build/webpack/plugins/terser-webpack-plugin/src/index.js @@ -0,0 +1,378 @@ +// @ts-nocheck +import * as path from 'path' + +import webpack, { ModuleFilenameHelpers } from 'webpack' +import sources from 'webpack-sources' +import pLimit from 'p-limit' +import jestWorker from 'jest-worker' +import crypto from 'crypto' +import cacache from 'next/dist/compiled/cacache' + +const isWebpack5 = parseInt(webpack.version) === 5 + +function getEcmaVersion(environment) { + // ES 6th + if ( + environment.arrowFunction || + environment.const || + environment.destructuring || + environment.forOf || + environment.module + ) { + return 2015 + } + + // ES 11th + if (environment.bigIntLiteral || environment.dynamicImport) { + return 2020 + } + + return 5 +} + +function buildError(error, file) { + if (error.line) { + return new Error( + `${file} from Terser\n${error.message} [${file}:${error.line},${ + error.col + }]${ + error.stack ? `\n${error.stack.split('\n').slice(1).join('\n')}` : '' + }` + ) + } + + if (error.stack) { + return new Error(`${file} from Terser\n${error.message}\n${error.stack}`) + } + + return new Error(`${file} from Terser\n${error.message}`) +} + +class Webpack4Cache { + constructor(cacheDir, { SourceMapSource, RawSource }) { + this.cacheDir = cacheDir + this.sources = { SourceMapSource, RawSource } + } + getLazyHashedEtag(obj) { + let str + if (obj.source) { + str = obj.source() + } + const hash = crypto.createHash('md4') + hash.update(str ? str : obj) + return hash.digest('base64') + } + + async getPromise(identifier, etag) { + let cachedResult + + try { + cachedResult = await cacache.get(this.cacheDir, etag) + } catch (ignoreError) { + // eslint-disable-next-line no-undefined + return undefined + } + + cachedResult = JSON.parse(cachedResult.data) + + const { code, name, map, input, inputSourceMap } = cachedResult + + let source + + if (map) { + source = new this.sources.SourceMapSource( + code, + name, + map, + input, + inputSourceMap, + true + ) + } else { + source = new this.sources.RawSource(code) + } + + return { source } + } + + async storePromise(identifier, etag, data) { + await cacache.put(this.cacheDir, etag, JSON.stringify(data)) + } +} + +class TerserPlugin { + constructor(options = {}) { + const { cacheDir, terserOptions = {}, parallel } = options + + this.options = { + cacheDir, + parallel, + terserOptions, + } + } + + async optimize( + compilation, + assets, + optimizeOptions, + cache, + { SourceMapSource, RawSource } + ) { + let numberOfAssetsForMinify = 0 + const assetsList = isWebpack5 + ? Object.keys(assets) + : [ + ...Array.from(compilation.additionalChunkAssets || []), + ...Array.from(assets).reduce((acc, chunk) => { + return acc.concat(Array.from(chunk.files || [])) + }, []), + ] + + const assetsForMinify = await Promise.all( + assetsList + .filter((name) => { + if ( + !ModuleFilenameHelpers.matchObject.bind( + // eslint-disable-next-line no-undefined + undefined, + { test: /\.[cm]?js(\?.*)?$/i } + )(name) + ) { + return false + } + + const res = compilation.getAsset(name) + if (!res) { + console.log(name) + return false + } + + const { info } = res + + // Skip double minimize assets from child compilation + if (info.minimized) { + return false + } + + return true + }) + .map(async (name) => { + const { info, source } = compilation.getAsset(name) + + const eTag = cache.getLazyHashedEtag(source) + const output = await cache.getPromise(name, eTag) + + if (!output) { + numberOfAssetsForMinify += 1 + } + + return { name, info, inputSource: source, output, eTag } + }) + ) + + const numberOfWorkers = Math.min( + numberOfAssetsForMinify, + optimizeOptions.availableNumberOfCores + ) + + let initializedWorker + + // eslint-disable-next-line consistent-return + const getWorker = () => { + if (initializedWorker) { + return initializedWorker + } + + initializedWorker = new jestWorker(path.join(__dirname, './minify.js'), { + numWorkers: numberOfWorkers, + enableWorkerThreads: true, + }) + + initializedWorker.getStdout().pipe(process.stdout) + initializedWorker.getStderr().pipe(process.stderr) + + return initializedWorker + } + + const limit = pLimit( + numberOfAssetsForMinify > 0 ? numberOfWorkers : Infinity + ) + const scheduledTasks = [] + + for (const asset of assetsForMinify) { + scheduledTasks.push( + limit(async () => { + const { name, inputSource, info, eTag } = asset + let { output } = asset + + if (!output) { + let input + let inputSourceMap + + const { + source: sourceFromInputSource, + map, + } = inputSource.sourceAndMap() + + input = sourceFromInputSource + + if (Buffer.isBuffer(input)) { + input = input.toString() + } + + const options = { + name, + input, + inputSourceMap: map, + terserOptions: { ...this.options.terserOptions }, + } + + if (typeof options.terserOptions.module === 'undefined') { + if (typeof info.javascriptModule !== 'undefined') { + options.terserOptions.module = info.javascriptModule + } else if (/\.mjs(\?.*)?$/i.test(name)) { + options.terserOptions.module = true + } else if (/\.cjs(\?.*)?$/i.test(name)) { + options.terserOptions.module = false + } + } + + try { + output = await getWorker().minify(options) + } catch (error) { + compilation.errors.push(buildError(error, name)) + + return + } + + if (output.map) { + output.source = new SourceMapSource( + output.code, + name, + output.map, + input, + /** @type {SourceMapRawSourceMap} */ (inputSourceMap), + true + ) + } else { + output.source = new RawSource(output.code) + } + + if (isWebpack5) { + await cache.storePromise(name, eTag, { source: output.source }) + } else { + await cache.storePromise(name, eTag, { + code: output.code, + map: output.map, + name, + input, + inputSourceMap, + }) + } + } + + /** @type {AssetInfo} */ + const newInfo = { minimized: true } + const { source } = output + + compilation.updateAsset(name, source, newInfo) + }) + ) + } + + await Promise.all(scheduledTasks) + + if (initializedWorker) { + await initializedWorker.end() + } + } + + /** + * @param {Compiler} compiler + * @returns {void} + */ + apply(compiler) { + const { SourceMapSource, RawSource } = compiler?.webpack?.sources || sources + const { output } = compiler.options + + if (typeof this.options.terserOptions.ecma === 'undefined') { + this.options.terserOptions.ecma = getEcmaVersion(output.environment || {}) + } + + const pluginName = this.constructor.name + const availableNumberOfCores = this.options.parallel + + compiler.hooks.compilation.tap(pluginName, (compilation) => { + const cache = isWebpack5 + ? compilation.getCache('TerserWebpackPlugin') + : new Webpack4Cache(this.options.cacheDir, { + SourceMapSource, + RawSource, + }) + + const handleHashForChunk = (hash, chunk) => { + hash.update('a') + } + + if (isWebpack5) { + const JSModulesHooks = webpack.javascript.JavascriptModulesPlugin.getCompilationHooks( + compilation + ) + JSModulesHooks.chunkHash.tap(pluginName, (chunk, hash) => { + if (!chunk.hasRuntime()) return + return handleHashForChunk(hash, chunk) + }) + + compilation.hooks.processAssets.tapPromise( + { + name: pluginName, + stage: + compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE, + }, + (assets) => + this.optimize( + compilation, + assets, + { + availableNumberOfCores, + }, + cache, + { SourceMapSource, RawSource } + ) + ) + + compilation.hooks.statsPrinter.tap(pluginName, (stats) => { + stats.hooks.print + .for('asset.info.minimized') + .tap('terser-webpack-plugin', (minimized, { green, formatFlag }) => + // eslint-disable-next-line no-undefined + minimized ? green(formatFlag('minimized')) : undefined + ) + }) + } else { + compilation.mainTemplate.hooks.hashForChunk.tap( + pluginName, + handleHashForChunk + ) + compilation.chunkTemplate.hooks.hashForChunk.tap( + pluginName, + handleHashForChunk + ) + + compilation.hooks.optimizeChunkAssets.tapPromise(pluginName, (assets) => + this.optimize( + compilation, + assets, + { + availableNumberOfCores, + }, + cache, + { SourceMapSource, RawSource } + ) + ) + } + }) + } +} + +export default TerserPlugin diff --git a/packages/next/build/webpack/plugins/terser-webpack-plugin/src/minify.js b/packages/next/build/webpack/plugins/terser-webpack-plugin/src/minify.js new file mode 100644 index 0000000000000..fd747171be2c1 --- /dev/null +++ b/packages/next/build/webpack/plugins/terser-webpack-plugin/src/minify.js @@ -0,0 +1,36 @@ +// @ts-nocheck +import terser from 'next/dist/compiled/terser' + +function buildTerserOptions(terserOptions = {}) { + return { + ...terserOptions, + mangle: + terserOptions.mangle == null + ? true + : typeof terserOptions.mangle === 'boolean' + ? terserOptions.mangle + : { ...terserOptions.mangle }, + // Ignoring sourceMap from options + // eslint-disable-next-line no-undefined + sourceMap: undefined, + // the `output` option is deprecated + ...(terserOptions.format + ? { format: { beautify: false, ...terserOptions.format } } + : { output: { beautify: false, ...terserOptions.output } }), + } +} + +export async function minify(options) { + const { name, input, inputSourceMap, terserOptions } = options + // Copy terser options + const opts = buildTerserOptions(terserOptions) + + // Let terser generate a SourceMap + if (inputSourceMap) { + // @ts-ignore + opts.sourceMap = { asObject: true } + } + + const result = await terser.minify({ [name]: input }, opts) + return result +} diff --git a/packages/next/compiled/find-up/index.js b/packages/next/compiled/find-up/index.js index f154c404513e6..8e3e8b6235a5e 100644 --- a/packages/next/compiled/find-up/index.js +++ b/packages/next/compiled/find-up/index.js @@ -1 +1 @@ -module.exports=(()=>{"use strict";var e={235:(e,t,r)=>{const n=r(404);const s=e=>{if(!((Number.isInteger(e)||e===Infinity)&&e>0)){return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"))}const t=[];let r=0;const s=()=>{r--;if(t.length>0){t.shift()()}};const c=(e,t,...c)=>{r++;const o=n(e,...c);t(o);o.then(s,s)};const o=(n,s,...o)=>{if(rnew Promise(r=>o(e,r,...t));Object.defineProperties(i,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length},clearQueue:{value:()=>{t.length=0}}});return i};e.exports=s;e.exports.default=s},404:e=>{const t=(e,...t)=>new Promise(r=>{r(e(...t))});e.exports=t;e.exports.default=t},21:(e,t,r)=>{const n=r(622);const s=r(387);const c=r(164);const o=Symbol("findUp.stop");e.exports=(async(e,t={})=>{let r=n.resolve(t.cwd||"");const{root:c}=n.parse(r);const i=[].concat(e);const a=async t=>{if(typeof e!=="function"){return s(i,t)}const r=await e(t.cwd);if(typeof r==="string"){return s([r],t)}return r};while(true){const e=await a({...t,cwd:r});if(e===o){return}if(e){return n.resolve(r,e)}if(r===c){return}r=n.dirname(r)}});e.exports.sync=((e,t={})=>{let r=n.resolve(t.cwd||"");const{root:c}=n.parse(r);const i=[].concat(e);const a=t=>{if(typeof e!=="function"){return s.sync(i,t)}const r=e(t.cwd);if(typeof r==="string"){return s.sync([r],t)}return r};while(true){const e=a({...t,cwd:r});if(e===o){return}if(e){return n.resolve(r,e)}if(r===c){return}r=n.dirname(r)}});e.exports.exists=c;e.exports.sync.exists=c.sync;e.exports.stop=o},387:(e,t,r)=>{const n=r(622);const s=r(747);const{promisify:c}=r(669);const o=r(940);const i=c(s.stat);const a=c(s.lstat);const u={directory:"isDirectory",file:"isFile"};function checkType({type:e}){if(e in u){return}throw new Error(`Invalid type specified: ${e}`)}const p=(e,t)=>e===undefined||t[u[e]]();e.exports=(async(e,t)=>{t={cwd:process.cwd(),type:"file",allowSymlinks:true,...t};checkType(t);const r=t.allowSymlinks?i:a;return o(e,async e=>{try{const s=await r(n.resolve(t.cwd,e));return p(t.type,s)}catch(e){return false}},t)});e.exports.sync=((e,t)=>{t={cwd:process.cwd(),allowSymlinks:true,type:"file",...t};checkType(t);const r=t.allowSymlinks?s.statSync:s.lstatSync;for(const s of e){try{const e=r(n.resolve(t.cwd,s));if(p(t.type,e)){return s}}catch(e){}}})},940:(e,t,r)=>{const n=r(235);class EndError extends Error{constructor(e){super();this.value=e}}const s=async(e,t)=>t(await e);const c=async e=>{const t=await Promise.all(e);if(t[1]===true){throw new EndError(t[0])}return false};const o=async(e,t,r)=>{r={concurrency:Infinity,preserveOrder:true,...r};const o=n(r.concurrency);const i=[...e].map(e=>[e,o(s,e,t)]);const a=n(r.preserveOrder?1:Infinity);try{await Promise.all(i.map(e=>a(c,e)))}catch(e){if(e instanceof EndError){return e.value}throw e}};e.exports=o;e.exports.default=o},164:(e,t,r)=>{const n=r(747);const{promisify:s}=r(669);const c=s(n.access);e.exports=(async e=>{try{await c(e);return true}catch(e){return false}});e.exports.sync=(e=>{try{n.accessSync(e);return true}catch(e){return false}})},747:e=>{e.exports=require("fs")},622:e=>{e.exports=require("path")},669:e=>{e.exports=require("util")}};var t={};function __webpack_require__(r){if(t[r]){return t[r].exports}var n=t[r]={exports:{}};var s=true;try{e[r](n,n.exports,__webpack_require__);s=false}finally{if(s)delete t[r]}return n.exports}__webpack_require__.ab=__dirname+"/";return __webpack_require__(21)})(); \ No newline at end of file +module.exports=(()=>{"use strict";var e={404:e=>{const t=(e,...t)=>new Promise(r=>{r(e(...t))});e.exports=t;e.exports.default=t},21:(e,t,r)=>{const n=r(622);const s=r(387);const c=r(164);const o=Symbol("findUp.stop");e.exports=(async(e,t={})=>{let r=n.resolve(t.cwd||"");const{root:c}=n.parse(r);const i=[].concat(e);const a=async t=>{if(typeof e!=="function"){return s(i,t)}const r=await e(t.cwd);if(typeof r==="string"){return s([r],t)}return r};while(true){const e=await a({...t,cwd:r});if(e===o){return}if(e){return n.resolve(r,e)}if(r===c){return}r=n.dirname(r)}});e.exports.sync=((e,t={})=>{let r=n.resolve(t.cwd||"");const{root:c}=n.parse(r);const i=[].concat(e);const a=t=>{if(typeof e!=="function"){return s.sync(i,t)}const r=e(t.cwd);if(typeof r==="string"){return s.sync([r],t)}return r};while(true){const e=a({...t,cwd:r});if(e===o){return}if(e){return n.resolve(r,e)}if(r===c){return}r=n.dirname(r)}});e.exports.exists=c;e.exports.sync.exists=c.sync;e.exports.stop=o},387:(e,t,r)=>{const n=r(622);const s=r(747);const{promisify:c}=r(669);const o=r(940);const i=c(s.stat);const a=c(s.lstat);const u={directory:"isDirectory",file:"isFile"};function checkType({type:e}){if(e in u){return}throw new Error(`Invalid type specified: ${e}`)}const p=(e,t)=>e===undefined||t[u[e]]();e.exports=(async(e,t)=>{t={cwd:process.cwd(),type:"file",allowSymlinks:true,...t};checkType(t);const r=t.allowSymlinks?i:a;return o(e,async e=>{try{const s=await r(n.resolve(t.cwd,e));return p(t.type,s)}catch(e){return false}},t)});e.exports.sync=((e,t)=>{t={cwd:process.cwd(),allowSymlinks:true,type:"file",...t};checkType(t);const r=t.allowSymlinks?s.statSync:s.lstatSync;for(const s of e){try{const e=r(n.resolve(t.cwd,s));if(p(t.type,e)){return s}}catch(e){}}})},940:(e,t,r)=>{const n=r(991);class EndError extends Error{constructor(e){super();this.value=e}}const s=async(e,t)=>t(await e);const c=async e=>{const t=await Promise.all(e);if(t[1]===true){throw new EndError(t[0])}return false};const o=async(e,t,r)=>{r={concurrency:Infinity,preserveOrder:true,...r};const o=n(r.concurrency);const i=[...e].map(e=>[e,o(s,e,t)]);const a=n(r.preserveOrder?1:Infinity);try{await Promise.all(i.map(e=>a(c,e)))}catch(e){if(e instanceof EndError){return e.value}throw e}};e.exports=o;e.exports.default=o},991:(e,t,r)=>{const n=r(404);const s=e=>{if(!((Number.isInteger(e)||e===Infinity)&&e>0)){return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"))}const t=[];let r=0;const s=()=>{r--;if(t.length>0){t.shift()()}};const c=(e,t,...c)=>{r++;const o=n(e,...c);t(o);o.then(s,s)};const o=(n,s,...o)=>{if(rnew Promise(r=>o(e,r,...t));Object.defineProperties(i,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length},clearQueue:{value:()=>{t.length=0}}});return i};e.exports=s;e.exports.default=s},164:(e,t,r)=>{const n=r(747);const{promisify:s}=r(669);const c=s(n.access);e.exports=(async e=>{try{await c(e);return true}catch(e){return false}});e.exports.sync=(e=>{try{n.accessSync(e);return true}catch(e){return false}})},747:e=>{e.exports=require("fs")},622:e=>{e.exports=require("path")},669:e=>{e.exports=require("util")}};var t={};function __webpack_require__(r){if(t[r]){return t[r].exports}var n=t[r]={exports:{}};var s=true;try{e[r](n,n.exports,__webpack_require__);s=false}finally{if(s)delete t[r]}return n.exports}__webpack_require__.ab=__dirname+"/";return __webpack_require__(21)})(); \ No newline at end of file diff --git a/packages/next/compiled/terser-webpack-plugin/cjs.js b/packages/next/compiled/terser-webpack-plugin/cjs.js deleted file mode 100644 index bfa80ef005bf3..0000000000000 --- a/packages/next/compiled/terser-webpack-plugin/cjs.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=(()=>{var e={7404:e=>{"use strict";const t=(e,...t)=>new Promise(s=>{s(e(...t))});e.exports=t;e.exports.default=t},8139:(e,t,s)=>{e.exports=s(6417).randomBytes},6393:(e,t,s)=>{"use strict";var n=s(8139);var r=16;var o=generateUID();var i=new RegExp('(\\\\)?"@__(F|R|D|M|S|U|I|B)-'+o+'-(\\d+)__@"',"g");var a=/\{\s*\[native code\]\s*\}/g;var u=/function.*?\(/;var l=/.*?=>.*?/;var c=/[<>\/\u2028\u2029]/g;var h=["*","async"];var d={"<":"\\u003C",">":"\\u003E","/":"\\u002F","\u2028":"\\u2028","\u2029":"\\u2029"};function escapeUnsafeChars(e){return d[e]}function generateUID(){var e=n(r);var t="";for(var s=0;s0});var r=n.filter(function(e){return h.indexOf(e)===-1});if(r.length>0){return(n.indexOf("async")>-1?"async ":"")+"function"+(n.join("").indexOf("*")>-1?"*":"")+t.substr(s)}return t}if(t.ignoreFunction&&typeof e==="function"){e=undefined}if(e===undefined){return String(e)}var y;if(t.isJSON&&!t.space){y=JSON.stringify(e)}else{y=JSON.stringify(e,t.isJSON?null:replacer,t.space)}if(typeof y!=="string"){return String(y)}if(t.unsafe!==true){y=y.replace(c,escapeUnsafeChars)}if(s.length===0&&n.length===0&&r.length===0&&d.length===0&&f.length===0&&p.length===0&&m.length===0&&g.length===0){return y}return y.replace(i,function(e,o,i,a){if(o){return e}if(i==="D"){return'new Date("'+r[a].toISOString()+'")'}if(i==="R"){return"new RegExp("+serialize(n[a].source)+', "'+n[a].flags+'")'}if(i==="M"){return"new Map("+serialize(Array.from(d[a].entries()),t)+")"}if(i==="S"){return"new Set("+serialize(Array.from(f[a].values()),t)+")"}if(i==="U"){return"undefined"}if(i==="I"){return m[a]}if(i==="B"){return'BigInt("'+g[a]+'")'}var u=s[a];return serializeFunc(u)})}},8151:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class AsyncParallelBailHookCodeFactory extends r{content({onError:e,onResult:t,onDone:s}){let n="";n+=`var _results = new Array(${this.options.taps.length});\n`;n+="var _checkDone = () => {\n";n+="for(var i = 0; i < _results.length; i++) {\n";n+="var item = _results[i];\n";n+="if(item === undefined) return false;\n";n+="if(item.result !== undefined) {\n";n+=t("item.result");n+="return true;\n";n+="}\n";n+="if(item.error) {\n";n+=e("item.error");n+="return true;\n";n+="}\n";n+="}\n";n+="return false;\n";n+="}\n";n+=this.callTapsParallel({onError:(e,t,s,n)=>{let r="";r+=`if(${e} < _results.length && ((_results.length = ${e+1}), (_results[${e}] = { error: ${t} }), _checkDone())) {\n`;r+=n(true);r+="} else {\n";r+=s();r+="}\n";return r},onResult:(e,t,s,n)=>{let r="";r+=`if(${e} < _results.length && (${t} !== undefined && (_results.length = ${e+1}), (_results[${e}] = { result: ${t} }), _checkDone())) {\n`;r+=n(true);r+="} else {\n";r+=s();r+="}\n";return r},onTap:(e,t,s,n)=>{let r="";if(e>0){r+=`if(${e} >= _results.length) {\n`;r+=s();r+="} else {\n"}r+=t();if(e>0)r+="}\n";return r},onDone:s});return n}}const o=new AsyncParallelBailHookCodeFactory;class AsyncParallelBailHook extends n{compile(e){o.setup(this,e);return o.create(e)}}Object.defineProperties(AsyncParallelBailHook.prototype,{_call:{value:undefined,configurable:true,writable:true}});e.exports=AsyncParallelBailHook},1684:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class AsyncParallelHookCodeFactory extends r{content({onError:e,onDone:t}){return this.callTapsParallel({onError:(t,s,n,r)=>e(s)+r(true),onDone:t})}}const o=new AsyncParallelHookCodeFactory;class AsyncParallelHook extends n{compile(e){o.setup(this,e);return o.create(e)}}Object.defineProperties(AsyncParallelHook.prototype,{_call:{value:undefined,configurable:true,writable:true}});e.exports=AsyncParallelHook},5734:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class AsyncSeriesBailHookCodeFactory extends r{content({onError:e,onResult:t,resultReturns:s,onDone:n}){return this.callTapsSeries({onError:(t,s,n,r)=>e(s)+r(true),onResult:(e,s,n)=>`if(${s} !== undefined) {\n${t(s)};\n} else {\n${n()}}\n`,resultReturns:s,onDone:n})}}const o=new AsyncSeriesBailHookCodeFactory;class AsyncSeriesBailHook extends n{compile(e){o.setup(this,e);return o.create(e)}}Object.defineProperties(AsyncSeriesBailHook.prototype,{_call:{value:undefined,configurable:true,writable:true}});e.exports=AsyncSeriesBailHook},6496:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class AsyncSeriesHookCodeFactory extends r{content({onError:e,onDone:t}){return this.callTapsSeries({onError:(t,s,n,r)=>e(s)+r(true),onDone:t})}}const o=new AsyncSeriesHookCodeFactory;class AsyncSeriesHook extends n{compile(e){o.setup(this,e);return o.create(e)}}Object.defineProperties(AsyncSeriesHook.prototype,{_call:{value:undefined,configurable:true,writable:true}});e.exports=AsyncSeriesHook},8118:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class AsyncSeriesWaterfallHookCodeFactory extends r{content({onError:e,onResult:t,onDone:s}){return this.callTapsSeries({onError:(t,s,n,r)=>e(s)+r(true),onResult:(e,t,s)=>{let n="";n+=`if(${t} !== undefined) {\n`;n+=`${this._args[0]} = ${t};\n`;n+=`}\n`;n+=s();return n},onDone:()=>t(this._args[0])})}}const o=new AsyncSeriesWaterfallHookCodeFactory;class AsyncSeriesWaterfallHook extends n{constructor(e){super(e);if(e.length<1)throw new Error("Waterfall hooks must have at least one argument")}compile(e){o.setup(this,e);return o.create(e)}}Object.defineProperties(AsyncSeriesWaterfallHook.prototype,{_call:{value:undefined,configurable:true,writable:true}});e.exports=AsyncSeriesWaterfallHook},1468:e=>{"use strict";class Hook{constructor(e){if(!Array.isArray(e))e=[];this._args=e;this.taps=[];this.interceptors=[];this.call=this._call;this.promise=this._promise;this.callAsync=this._callAsync;this._x=undefined}compile(e){throw new Error("Abstract: should be overriden")}_createCall(e){return this.compile({taps:this.taps,interceptors:this.interceptors,args:this._args,type:e})}tap(e,t){if(typeof e==="string")e={name:e};if(typeof e!=="object"||e===null)throw new Error("Invalid arguments to tap(options: Object, fn: function)");e=Object.assign({type:"sync",fn:t},e);if(typeof e.name!=="string"||e.name==="")throw new Error("Missing name for tap");e=this._runRegisterInterceptors(e);this._insert(e)}tapAsync(e,t){if(typeof e==="string")e={name:e};if(typeof e!=="object"||e===null)throw new Error("Invalid arguments to tapAsync(options: Object, fn: function)");e=Object.assign({type:"async",fn:t},e);if(typeof e.name!=="string"||e.name==="")throw new Error("Missing name for tapAsync");e=this._runRegisterInterceptors(e);this._insert(e)}tapPromise(e,t){if(typeof e==="string")e={name:e};if(typeof e!=="object"||e===null)throw new Error("Invalid arguments to tapPromise(options: Object, fn: function)");e=Object.assign({type:"promise",fn:t},e);if(typeof e.name!=="string"||e.name==="")throw new Error("Missing name for tapPromise");e=this._runRegisterInterceptors(e);this._insert(e)}_runRegisterInterceptors(e){for(const t of this.interceptors){if(t.register){const s=t.register(e);if(s!==undefined)e=s}}return e}withOptions(e){const t=t=>Object.assign({},e,typeof t==="string"?{name:t}:t);e=Object.assign({},e,this._withOptions);const s=this._withOptionsBase||this;const n=Object.create(s);n.tapAsync=((e,n)=>s.tapAsync(t(e),n)),n.tap=((e,n)=>s.tap(t(e),n));n.tapPromise=((e,n)=>s.tapPromise(t(e),n));n._withOptions=e;n._withOptionsBase=s;return n}isUsed(){return this.taps.length>0||this.interceptors.length>0}intercept(e){this._resetCompilation();this.interceptors.push(Object.assign({},e));if(e.register){for(let t=0;t0){n--;const e=this.taps[n];this.taps[n+1]=e;const r=e.stage||0;if(t){if(t.has(e.name)){t.delete(e.name);continue}if(t.size>0){continue}}if(r>s){continue}n++;break}this.taps[n]=e}}function createCompileDelegate(e,t){return function lazyCompileHook(...s){this[e]=this._createCall(t);return this[e](...s)}}Object.defineProperties(Hook.prototype,{_call:{value:createCompileDelegate("call","sync"),configurable:true,writable:true},_promise:{value:createCompileDelegate("promise","promise"),configurable:true,writable:true},_callAsync:{value:createCompileDelegate("callAsync","async"),configurable:true,writable:true}});e.exports=Hook},6443:e=>{"use strict";class HookCodeFactory{constructor(e){this.config=e;this.options=undefined;this._args=undefined}create(e){this.init(e);let t;switch(this.options.type){case"sync":t=new Function(this.args(),'"use strict";\n'+this.header()+this.content({onError:e=>`throw ${e};\n`,onResult:e=>`return ${e};\n`,resultReturns:true,onDone:()=>"",rethrowIfPossible:true}));break;case"async":t=new Function(this.args({after:"_callback"}),'"use strict";\n'+this.header()+this.content({onError:e=>`_callback(${e});\n`,onResult:e=>`_callback(null, ${e});\n`,onDone:()=>"_callback();\n"}));break;case"promise":let e=false;const s=this.content({onError:t=>{e=true;return`_error(${t});\n`},onResult:e=>`_resolve(${e});\n`,onDone:()=>"_resolve();\n"});let n="";n+='"use strict";\n';n+="return new Promise((_resolve, _reject) => {\n";if(e){n+="var _sync = true;\n";n+="function _error(_err) {\n";n+="if(_sync)\n";n+="_resolve(Promise.resolve().then(() => { throw _err; }));\n";n+="else\n";n+="_reject(_err);\n";n+="};\n"}n+=this.header();n+=s;if(e){n+="_sync = false;\n"}n+="});\n";t=new Function(this.args(),n);break}this.deinit();return t}setup(e,t){e._x=t.taps.map(e=>e.fn)}init(e){this.options=e;this._args=e.args.slice()}deinit(){this.options=undefined;this._args=undefined}header(){let e="";if(this.needContext()){e+="var _context = {};\n"}else{e+="var _context;\n"}e+="var _x = this._x;\n";if(this.options.interceptors.length>0){e+="var _taps = this.taps;\n";e+="var _interceptors = this.interceptors;\n"}for(let t=0;t {\n`;else i+=`_err${e} => {\n`;i+=`if(_err${e}) {\n`;i+=t(`_err${e}`);i+="} else {\n";if(s){i+=s(`_result${e}`)}if(n){i+=n()}i+="}\n";i+="}";o+=`_fn${e}(${this.args({before:a.context?"_context":undefined,after:i})});\n`;break;case"promise":o+=`var _hasResult${e} = false;\n`;o+=`var _promise${e} = _fn${e}(${this.args({before:a.context?"_context":undefined})});\n`;o+=`if (!_promise${e} || !_promise${e}.then)\n`;o+=` throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise${e} + ')');\n`;o+=`_promise${e}.then(_result${e} => {\n`;o+=`_hasResult${e} = true;\n`;if(s){o+=s(`_result${e}`)}if(n){o+=n()}o+=`}, _err${e} => {\n`;o+=`if(_hasResult${e}) throw _err${e};\n`;o+=t(`_err${e}`);o+="});\n";break}return o}callTapsSeries({onError:e,onResult:t,resultReturns:s,onDone:n,doneReturns:r,rethrowIfPossible:o}){if(this.options.taps.length===0)return n();const i=this.options.taps.findIndex(e=>e.type!=="sync");const a=s||r||false;let u="";let l=n;for(let s=this.options.taps.length-1;s>=0;s--){const r=s;const c=l!==n&&this.options.taps[r].type!=="sync";if(c){u+=`function _next${r}() {\n`;u+=l();u+=`}\n`;l=(()=>`${a?"return ":""}_next${r}();\n`)}const h=l;const d=e=>{if(e)return"";return n()};const f=this.callTap(r,{onError:t=>e(r,t,h,d),onResult:t&&(e=>{return t(r,e,h,d)}),onDone:!t&&h,rethrowIfPossible:o&&(i<0||rf)}u+=l();return u}callTapsLooping({onError:e,onDone:t,rethrowIfPossible:s}){if(this.options.taps.length===0)return t();const n=this.options.taps.every(e=>e.type==="sync");let r="";if(!n){r+="var _looper = () => {\n";r+="var _loopAsync = false;\n"}r+="var _loop;\n";r+="do {\n";r+="_loop = false;\n";for(let e=0;e{let o="";o+=`if(${t} !== undefined) {\n`;o+="_loop = true;\n";if(!n)o+="if(_loopAsync) _looper();\n";o+=r(true);o+=`} else {\n`;o+=s();o+=`}\n`;return o},onDone:t&&(()=>{let e="";e+="if(!_loop) {\n";e+=t();e+="}\n";return e}),rethrowIfPossible:s&&n});r+="} while(_loop);\n";if(!n){r+="_loopAsync = true;\n";r+="};\n";r+="_looper();\n"}return r}callTapsParallel({onError:e,onResult:t,onDone:s,rethrowIfPossible:n,onTap:r=((e,t)=>t())}){if(this.options.taps.length<=1){return this.callTapsSeries({onError:e,onResult:t,onDone:s,rethrowIfPossible:n})}let o="";o+="do {\n";o+=`var _counter = ${this.options.taps.length};\n`;if(s){o+="var _done = () => {\n";o+=s();o+="};\n"}for(let i=0;i{if(s)return"if(--_counter === 0) _done();\n";else return"--_counter;"};const u=e=>{if(e||!s)return"_counter = 0;\n";else return"_counter = 0;\n_done();\n"};o+="if(_counter <= 0) break;\n";o+=r(i,()=>this.callTap(i,{onError:t=>{let s="";s+="if(_counter > 0) {\n";s+=e(i,t,a,u);s+="}\n";return s},onResult:t&&(e=>{let s="";s+="if(_counter > 0) {\n";s+=t(i,e,a,u);s+="}\n";return s}),onDone:!t&&(()=>{return a()}),rethrowIfPossible:n}),a,u)}o+="} while(false);\n";return o}args({before:e,after:t}={}){let s=this._args;if(e)s=[e].concat(s);if(t)s=s.concat(t);if(s.length===0){return""}else{return s.join(", ")}}getTapFn(e){return`_x[${e}]`}getTap(e){return`_taps[${e}]`}getInterceptor(e){return`_interceptors[${e}]`}}e.exports=HookCodeFactory},7079:e=>{"use strict";class HookMap{constructor(e){this._map=new Map;this._factory=e;this._interceptors=[]}get(e){return this._map.get(e)}for(e){const t=this.get(e);if(t!==undefined){return t}let s=this._factory(e);const n=this._interceptors;for(let t=0;tt},e))}tap(e,t,s){return this.for(e).tap(t,s)}tapAsync(e,t,s){return this.for(e).tapAsync(t,s)}tapPromise(e,t,s){return this.for(e).tapPromise(t,s)}}e.exports=HookMap},3103:(e,t,s)=>{"use strict";const n=s(1468);class MultiHook{constructor(e){this.hooks=e}tap(e,t){for(const s of this.hooks){s.tap(e,t)}}tapAsync(e,t){for(const s of this.hooks){s.tapAsync(e,t)}}tapPromise(e,t){for(const s of this.hooks){s.tapPromise(e,t)}}isUsed(){for(const e of this.hooks){if(e.isUsed())return true}return false}intercept(e){for(const t of this.hooks){t.intercept(e)}}withOptions(e){return new MultiHook(this.hooks.map(t=>t.withOptions(e)))}}e.exports=MultiHook},1626:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class SyncBailHookCodeFactory extends r{content({onError:e,onResult:t,resultReturns:s,onDone:n,rethrowIfPossible:r}){return this.callTapsSeries({onError:(t,s)=>e(s),onResult:(e,s,n)=>`if(${s} !== undefined) {\n${t(s)};\n} else {\n${n()}}\n`,resultReturns:s,onDone:n,rethrowIfPossible:r})}}const o=new SyncBailHookCodeFactory;class SyncBailHook extends n{tapAsync(){throw new Error("tapAsync is not supported on a SyncBailHook")}tapPromise(){throw new Error("tapPromise is not supported on a SyncBailHook")}compile(e){o.setup(this,e);return o.create(e)}}e.exports=SyncBailHook},9689:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class SyncHookCodeFactory extends r{content({onError:e,onDone:t,rethrowIfPossible:s}){return this.callTapsSeries({onError:(t,s)=>e(s),onDone:t,rethrowIfPossible:s})}}const o=new SyncHookCodeFactory;class SyncHook extends n{tapAsync(){throw new Error("tapAsync is not supported on a SyncHook")}tapPromise(){throw new Error("tapPromise is not supported on a SyncHook")}compile(e){o.setup(this,e);return o.create(e)}}e.exports=SyncHook},179:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class SyncLoopHookCodeFactory extends r{content({onError:e,onDone:t,rethrowIfPossible:s}){return this.callTapsLooping({onError:(t,s)=>e(s),onDone:t,rethrowIfPossible:s})}}const o=new SyncLoopHookCodeFactory;class SyncLoopHook extends n{tapAsync(){throw new Error("tapAsync is not supported on a SyncLoopHook")}tapPromise(){throw new Error("tapPromise is not supported on a SyncLoopHook")}compile(e){o.setup(this,e);return o.create(e)}}e.exports=SyncLoopHook},6093:(e,t,s)=>{"use strict";const n=s(1468);const r=s(6443);class SyncWaterfallHookCodeFactory extends r{content({onError:e,onResult:t,resultReturns:s,rethrowIfPossible:n}){return this.callTapsSeries({onError:(t,s)=>e(s),onResult:(e,t,s)=>{let n="";n+=`if(${t} !== undefined) {\n`;n+=`${this._args[0]} = ${t};\n`;n+=`}\n`;n+=s();return n},onDone:()=>t(this._args[0]),doneReturns:s,rethrowIfPossible:n})}}const o=new SyncWaterfallHookCodeFactory;class SyncWaterfallHook extends n{constructor(e){super(e);if(e.length<1)throw new Error("Waterfall hooks must have at least one argument")}tapAsync(){throw new Error("tapAsync is not supported on a SyncWaterfallHook")}tapPromise(){throw new Error("tapPromise is not supported on a SyncWaterfallHook")}compile(e){o.setup(this,e);return o.create(e)}}e.exports=SyncWaterfallHook},1354:(e,t,s)=>{"use strict";const n=s(1669);const r=s(1626);function Tapable(){this._pluginCompat=new r(["options"]);this._pluginCompat.tap({name:"Tapable camelCase",stage:100},e=>{e.names.add(e.name.replace(/[- ]([a-z])/g,(e,t)=>t.toUpperCase()))});this._pluginCompat.tap({name:"Tapable this.hooks",stage:200},e=>{let t;for(const s of e.names){t=this.hooks[s];if(t!==undefined){break}}if(t!==undefined){const s={name:e.fn.name||"unnamed compat plugin",stage:e.stage||0};if(e.async)t.tapAsync(s,e.fn);else t.tap(s,e.fn);return true}})}e.exports=Tapable;Tapable.addCompatLayer=function addCompatLayer(e){Tapable.call(e);e.plugin=Tapable.prototype.plugin;e.apply=Tapable.prototype.apply};Tapable.prototype.plugin=n.deprecate(function plugin(e,t){if(Array.isArray(e)){e.forEach(function(e){this.plugin(e,t)},this);return}const s=this._pluginCompat.call({name:e,fn:t,names:new Set([e])});if(!s){throw new Error(`Plugin could not be registered at '${e}'. Hook was not found.\n`+"BREAKING CHANGE: There need to exist a hook at 'this.hooks'. "+"To create a compatibility layer for this hook, hook into 'this._pluginCompat'.")}},"Tapable.plugin is deprecated. Use new API on `.hooks` instead");Tapable.prototype.apply=n.deprecate(function apply(){for(var e=0;e{"use strict";t.__esModule=true;t.Tapable=s(1354);t.SyncHook=s(9689);t.SyncBailHook=s(1626);t.SyncWaterfallHook=s(6093);t.SyncLoopHook=s(179);t.AsyncParallelHook=s(1684);t.AsyncParallelBailHook=s(8151);t.AsyncSeriesHook=s(6496);t.AsyncSeriesBailHook=s(5734);t.AsyncSeriesWaterfallHook=s(8118);t.HookMap=s(7079);t.MultiHook=s(3103)},1890:(e,t,s)=>{"use strict";var n;n={value:true};t.Z=void 0;var r=_interopRequireDefault(s(2087));var o=_interopRequireDefault(s(6801));var i=_interopRequireDefault(s(1844));var a=_interopRequireDefault(s(6393));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}class Webpack4Cache{constructor(e,t){this.cacheDir=t.cache===true?Webpack4Cache.getCacheDirectory():t.cache}static getCacheDirectory(){return(0,i.default)({name:"terser-webpack-plugin"})||r.default.tmpdir()}isEnabled(){return Boolean(this.cacheDir)}async get(e){e.cacheIdent=e.cacheIdent||(0,a.default)(e.cacheKeys);const{data:t}=await o.default.get(this.cacheDir,e.cacheIdent);return JSON.parse(t)}async store(e,t){return o.default.put(this.cacheDir,e.cacheIdent,JSON.stringify(t))}}t.Z=Webpack4Cache},655:(e,t)=>{"use strict";var s;s={value:true};t.Z=void 0;class Cache{constructor(e,t){this.cache=e.getCache("TerserWebpackPlugin")}isEnabled(){return true}async get(e){e.cacheIdent=e.cacheIdent||`${e.name}`;e.cacheETag=e.cacheETag||this.cache.getLazyHashedEtag(e.assetSource);return this.cache.getPromise(e.cacheIdent,e.cacheETag)}async store(e,t){return this.cache.storePromise(e.cacheIdent,e.cacheETag,t)}}t.Z=Cache},5245:(e,t,s)=>{"use strict";const n=s(8299);e.exports=n.default},8299:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.default=void 0;var n=_interopRequireDefault(s(5622));var r=_interopRequireDefault(s(2087));var o=s(6241);var i=s(3745);var a=_interopRequireDefault(s(1432));var u=s(4078);var l=_interopRequireDefault(s(3225));var c=_interopRequireDefault(s(6393));var h=_interopRequireDefault(s(2203));var d=_interopRequireDefault(s(1690));var f=_interopRequireDefault(s(9733));var p=_interopRequireDefault(s(1840));var m=s(328);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}class TerserPlugin{constructor(e={}){(0,l.default)(p.default,e,{name:"Terser Plugin",baseDataPath:"options"});const{minify:t,terserOptions:s={},test:n=/\.m?js(\?.*)?$/i,extractComments:r=true,sourceMap:o,cache:i=true,cacheKeys:a=(e=>e),parallel:u=true,include:c,exclude:h}=e;this.options={test:n,extractComments:r,sourceMap:o,cache:i,cacheKeys:a,parallel:u,include:c,exclude:h,minify:t,terserOptions:s}}static isSourceMap(e){return Boolean(e&&e.version&&e.sources&&Array.isArray(e.sources)&&typeof e.mappings==="string")}static buildError(e,t,s,n){if(e.line){const r=s&&s.originalPositionFor({line:e.line,column:e.col});if(r&&r.source&&n){return new Error(`${t} from Terser\n${e.message} [${n.shorten(r.source)}:${r.line},${r.column}][${t}:${e.line},${e.col}]${e.stack?`\n${e.stack.split("\n").slice(1).join("\n")}`:""}`)}return new Error(`${t} from Terser\n${e.message} [${t}:${e.line},${e.col}]${e.stack?`\n${e.stack.split("\n").slice(1).join("\n")}`:""}`)}if(e.stack){return new Error(`${t} from Terser\n${e.stack}`)}return new Error(`${t} from Terser\n${e.message}`)}static isWebpack4(){return u.version[0]==="4"}static getAvailableNumberOfCores(e){const t=r.default.cpus()||{length:1};return e===true?t.length-1:Math.min(Number(e)||0,t.length-1)}static getAsset(e,t){if(e.getAsset){return e.getAsset(t)}if(e.assets[t]){return{name:t,source:e.assets[t],info:{}}}}static emitAsset(e,t,s,n){if(e.emitAsset){e.emitAsset(t,s,n)}e.assets[t]=s}static updateAsset(e,t,s,n){if(e.updateAsset){e.updateAsset(t,s,n)}e.assets[t]=s}*taskGenerator(e,t,r,l){const{info:c,source:d}=TerserPlugin.getAsset(t,l);if(c.minimized){yield false}let f;let p;if(this.options.sourceMap&&d.sourceAndMap){const{source:e,map:s}=d.sourceAndMap();f=e;if(s){if(TerserPlugin.isSourceMap(s)){p=s}else{p=s;t.warnings.push(new Error(`${l} contains invalid source map`))}}}else{f=d.source();p=null}if(Buffer.isBuffer(f)){f=f.toString()}let m=false;if(this.options.extractComments){m=this.options.extractComments.filename||"[file].LICENSE.txt[query]";let e="";let s=l;const n=s.indexOf("?");if(n>=0){e=s.substr(n);s=s.substr(0,n)}const r=s.lastIndexOf("/");const o=r===-1?s:s.substr(r+1);const i={filename:s,basename:o,query:e};m=t.getPath(m,i)}const g=s=>{let{code:u}=s;const{error:h,map:d}=s;const{extractedComments:g}=s;let y=null;if(h&&p&&TerserPlugin.isSourceMap(p)){y=new o.SourceMapConsumer(p)}if(h){t.errors.push(TerserPlugin.buildError(h,l,y,new a.default(e.context)));return}const k=m&&g&&g.length>0;const w=this.options.extractComments.banner!==false;let b;let _;if(k&&w&&u.startsWith("#!")){const e=u.indexOf("\n");_=u.substring(0,e);u=u.substring(e+1)}if(d){b=new i.SourceMapSource(u,l,d,f,p,true)}else{b=new i.RawSource(u)}const v={...c,minimized:true};if(k){let e;v.related={license:m};if(w){e=this.options.extractComments.banner||`For license information please see ${n.default.relative(n.default.dirname(l),m).replace(/\\/g,"/")}`;if(typeof e==="function"){e=e(m)}if(e){b=new i.ConcatSource(_?`${_}\n`:"",`/*! ${e} */\n`,b)}}if(!r[m]){r[m]=new Set}g.forEach(t=>{if(e&&t===`/*! ${e} */`){return}r[m].add(t)});const s=TerserPlugin.getAsset(t,m);if(s){const e=s.source.source();e.replace(/\n$/,"").split("\n\n").forEach(e=>{r[m].add(e)})}}TerserPlugin.updateAsset(t,l,b,v)};const y={name:l,input:f,inputSourceMap:p,commentsFilename:m,extractComments:this.options.extractComments,terserOptions:this.options.terserOptions,minify:this.options.minify,callback:g};if(TerserPlugin.isWebpack4()){const{outputOptions:{hashSalt:e,hashDigest:n,hashDigestLength:r,hashFunction:o}}=t;const i=u.util.createHash(o);if(e){i.update(e)}i.update(f);const a=i.digest(n);if(this.options.cache){const e={terser:h.default.version,"terser-webpack-plugin":s(9122).i8,"terser-webpack-plugin-options":this.options,nodeVersion:process.version,name:l,contentHash:a.substr(0,r)};y.cacheKeys=this.options.cacheKeys(e,l)}}else{y.assetSource=d}yield y}async runTasks(e,t,n){const r=TerserPlugin.getAvailableNumberOfCores(this.options.parallel);let o=Infinity;let i;if(r>0){const t=Math.min(e.length,r);o=t;i=new f.default(s.ab+"minify.js",{numWorkers:t});const n=i.getStdout();if(n){n.on("data",e=>{return process.stdout.write(e)})}const a=i.getStderr();if(a){a.on("data",e=>{return process.stderr.write(e)})}}const a=(0,d.default)(o);const u=[];for(const s of e){const e=async e=>{let t;try{t=await(i?i.transform((0,c.default)(e)):(0,m.minify)(e))}catch(e){t={error:e}}if(n.isEnabled()&&!t.error){await n.store(e,t)}e.callback(t);return t};u.push(a(async()=>{const r=t(s).next().value;if(!r){return Promise.resolve()}if(n.isEnabled()){let t;try{t=await n.get(r)}catch(t){return e(r)}if(!t){return e(r)}r.callback(t);return Promise.resolve()}return e(r)}))}await Promise.all(u);if(i){await i.end()}}apply(e){const{devtool:t,output:n,plugins:r}=e.options;this.options.sourceMap=typeof this.options.sourceMap==="undefined"?t&&!t.includes("eval")&&!t.includes("cheap")&&(t.includes("source-map")||t.includes("sourcemap"))||r&&r.some(e=>e instanceof u.SourceMapDevToolPlugin&&e.options&&e.options.columns):Boolean(this.options.sourceMap);if(typeof this.options.terserOptions.module==="undefined"&&typeof n.module!=="undefined"){this.options.terserOptions.module=n.module}if(typeof this.options.terserOptions.ecma==="undefined"&&typeof n.ecmaVersion!=="undefined"){this.options.terserOptions.ecma=n.ecmaVersion}const o=u.ModuleFilenameHelpers.matchObject.bind(undefined,this.options);const a=async(t,n)=>{let r;if(TerserPlugin.isWebpack4()){r=[].concat(Array.from(t.additionalChunkAssets||[])).concat(Array.from(n).reduce((e,t)=>e.concat(Array.from(t.files||[])),[])).concat(Object.keys(t.assets)).filter((e,t,s)=>s.indexOf(e)===t).filter(e=>o(e))}else{r=[].concat(Object.keys(n)).filter(e=>o(e))}if(r.length===0){return Promise.resolve()}const a={};const u=this.taskGenerator.bind(this,e,t,a);const l=TerserPlugin.isWebpack4()?s(1890).Z:s(655).Z;const c=new l(t,{cache:this.options.cache});await this.runTasks(r,u,c);Object.keys(a).forEach(e=>{const s=Array.from(a[e]).sort().join("\n\n");TerserPlugin.emitAsset(t,e,new i.RawSource(`${s}\n`))});return Promise.resolve()};const l=this.constructor.name;e.hooks.compilation.tap(l,e=>{if(this.options.sourceMap){e.hooks.buildModule.tap(l,e=>{e.useSourceMap=true})}if(TerserPlugin.isWebpack4()){const{mainTemplate:t,chunkTemplate:s}=e;const n=(0,c.default)({terser:h.default.version,terserOptions:this.options.terserOptions});for(const e of[t,s]){e.hooks.hashForChunk.tap(l,e=>{e.update("TerserPlugin");e.update(n)})}e.hooks.optimizeChunkAssets.tapPromise(l,a.bind(this,e))}else{const t=s(6587);const n=u.javascript.JavascriptModulesPlugin.getCompilationHooks(e);const r=(0,c.default)({terser:h.default.version,terserOptions:this.options.terserOptions});n.chunkHash.tap(l,(e,t)=>{t.update("TerserPlugin");t.update(r)});e.hooks.processAssets.tapPromise({name:l,stage:t.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE},a.bind(this,e));e.hooks.statsPrinter.tap(l,e=>{e.hooks.print.for("asset.info.minimized").tap("terser-webpack-plugin",(e,{green:t,formatFlag:s})=>e?t(s("minimized")):undefined)})}})}}var g=TerserPlugin;t.default=g},328:(e,t,s)=>{"use strict";e=s.nmd(e);const{minify:n}=s(4775);const r=({ecma:e,parse:t={},compress:s={},mangle:n,module:r,output:o,toplevel:i,nameCache:a,ie8:u,keep_classnames:l,keep_fnames:c,safari10:h}={})=>({parse:{...t},compress:typeof s==="boolean"?s:{...s},mangle:n==null?true:typeof n==="boolean"?n:{...n},output:{beautify:false,...o},sourceMap:null,ecma:e,keep_classnames:l,keep_fnames:c,ie8:u,module:r,nameCache:a,safari10:h,toplevel:i});function isObject(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")}const o=(e,t,s)=>{const n={};const r=t.output.comments;const{extractComments:o}=e;n.preserve=typeof r!=="undefined"?r:false;if(typeof o==="boolean"&&o){n.extract="some"}else if(typeof o==="string"||o instanceof RegExp){n.extract=o}else if(typeof o==="function"){n.extract=o}else if(isObject(o)){n.extract=typeof o.condition==="boolean"&&o.condition?"some":typeof o.condition!=="undefined"?o.condition:"some"}else{n.preserve=typeof r!=="undefined"?r:"some";n.extract=false}["preserve","extract"].forEach(e=>{let t;let s;switch(typeof n[e]){case"boolean":n[e]=n[e]?()=>true:()=>false;break;case"function":break;case"string":if(n[e]==="all"){n[e]=(()=>true);break}if(n[e]==="some"){n[e]=((e,t)=>{return(t.type==="comment2"||t.type==="comment1")&&/@preserve|@lic|@cc_on|^\**!/i.test(t.value)});break}t=n[e];n[e]=((e,s)=>{return new RegExp(t).test(s.value)});break;default:s=n[e];n[e]=((e,t)=>s.test(t.value))}});return(e,t)=>{if(n.extract(e,t)){const e=t.type==="comment2"?`/*${t.value}*/`:`//${t.value}`;if(!s.includes(e)){s.push(e)}}return n.preserve(e,t)}};async function minify(e){const{name:t,input:s,inputSourceMap:i,minify:a}=e;if(a){return a({[t]:s},i)}const u=r(e.terserOptions);if(i){u.sourceMap={asObject:true}}const l=[];u.output.comments=o(e,u,l);const c=await n({[t]:s},u);return{...c,extractedComments:l}}function transform(s){s=new Function("exports","require","module","__filename","__dirname",`'use strict'\nreturn ${s}`)(t,require,e,__filename,__dirname);return minify(s)}e.exports.minify=minify;e.exports.transform=transform},1690:(e,t,s)=>{"use strict";const n=s(7404);const r=e=>{if(!((Number.isInteger(e)||e===Infinity)&&e>0)){throw new TypeError("Expected `concurrency` to be a number from 1 and up")}const t=[];let s=0;const r=()=>{s--;if(t.length>0){t.shift()()}};const o=async(e,t,...o)=>{s++;const i=n(e,...o);t(i);try{await i}catch{}r()};const i=(n,r,...i)=>{t.push(o.bind(null,n,r,...i));(async()=>{await Promise.resolve();if(s0){t.shift()()}})()};const a=(e,...t)=>new Promise(s=>i(e,s,...t));Object.defineProperties(a,{activeCount:{get:()=>s},pendingCount:{get:()=>t.length},clearQueue:{value:()=>{t.length=0}}});return a};e.exports=r},1112:(e,t,s)=>{"use strict";const n=s(1891);const r=/at ([a-zA-Z0-9_.]*)/;function createMessage(e){return`Abstract method${e?" "+e:""}. Must be overridden.`}function Message(){this.stack=undefined;Error.captureStackTrace(this);const e=this.stack.split("\n")[3].match(r);this.message=e&&e[1]?createMessage(e[1]):createMessage()}class AbstractMethodError extends n{constructor(){super((new Message).message);this.name="AbstractMethodError"}}e.exports=AbstractMethodError},7794:(e,t,s)=>{"use strict";const n=s(1891);class AsyncDependencyToInitialChunkError extends n{constructor(e,t,s){super(`It's not allowed to load an initial chunk on demand. The chunk name "${e}" is already used by an entrypoint.`);this.name="AsyncDependencyToInitialChunkError";this.module=t;this.loc=s;Error.captureStackTrace(this,this.constructor)}}e.exports=AsyncDependencyToInitialChunkError},4029:(e,t,s)=>{"use strict";const n=s(1669);const r=s(3875);const o=s(4791).w;const i=s(3445);const a=s(8865);let u=1e3;const l="Chunk.entry was removed. Use hasRuntime()";const c="Chunk.initial was removed. Use canBeInitial/isOnlyInitial()";const h=(e,t)=>{if(e.id{if(e.id{if(e.identifier()>t.identifier())return 1;if(e.identifier(){e.sort();let t="";for(const s of e){t+=s.identifier()+"#"}return t};const m=e=>Array.from(e);const g=e=>{let t=0;for(const s of e){t+=s.size()}return t};class Chunk{constructor(e){this.id=null;this.ids=null;this.debugId=u++;this.name=e;this.preventIntegration=false;this.entryModule=undefined;this._modules=new r(undefined,f);this.filenameTemplate=undefined;this._groups=new r(undefined,d);this.files=[];this.rendered=false;this.hash=undefined;this.contentHash=Object.create(null);this.renderedHash=undefined;this.chunkReason=undefined;this.extraAsync=false;this.removedModules=undefined}get entry(){throw new Error(l)}set entry(e){throw new Error(l)}get initial(){throw new Error(c)}set initial(e){throw new Error(c)}hasRuntime(){for(const e of this._groups){if(e.isInitial()&&e instanceof a&&e.getRuntimeChunk()===this){return true}}return false}canBeInitial(){for(const e of this._groups){if(e.isInitial())return true}return false}isOnlyInitial(){if(this._groups.size<=0)return false;for(const e of this._groups){if(!e.isInitial())return false}return true}hasEntryModule(){return!!this.entryModule}addModule(e){if(!this._modules.has(e)){this._modules.add(e);return true}return false}removeModule(e){if(this._modules.delete(e)){e.removeChunk(this);return true}return false}setModules(e){this._modules=new r(e,f)}getNumberOfModules(){return this._modules.size}get modulesIterable(){return this._modules}addGroup(e){if(this._groups.has(e))return false;this._groups.add(e);return true}removeGroup(e){if(!this._groups.has(e))return false;this._groups.delete(e);return true}isInGroup(e){return this._groups.has(e)}getNumberOfGroups(){return this._groups.size}get groupsIterable(){return this._groups}compareTo(e){if(this.name&&!e.name)return-1;if(!this.name&&e.name)return 1;if(this.namee.name)return 1;if(this._modules.size>e._modules.size)return-1;if(this._modules.sizeo)return 1}}containsModule(e){return this._modules.has(e)}getModules(){return this._modules.getFromCache(m)}getModulesIdent(){return this._modules.getFromUnorderedCache(p)}remove(e){for(const e of Array.from(this._modules)){e.removeChunk(this)}for(const e of this._groups){e.removeChunk(this)}}moveModule(e,t){i.disconnectChunkAndModule(this,e);i.connectChunkAndModule(t,e);e.rewriteChunkInReasons(this,[t])}integrate(e,t){if(!this.canBeIntegrated(e)){return false}if(this.name&&e.name){if(this.hasEntryModule()===e.hasEntryModule()){if(this.name.length!==e.name.length){this.name=this.name.length{const s=new Set(t.groupsIterable);for(const t of s){if(e.isInGroup(t))continue;if(t.isInitial())return false;for(const e of t.parentsIterable){s.add(e)}}return true};const s=this.hasRuntime();const n=e.hasRuntime();if(s!==n){if(s){return t(this,e)}else if(n){return t(e,this)}else{return false}}if(this.hasEntryModule()||e.hasEntryModule()){return false}return true}addMultiplierAndOverhead(e,t){const s=typeof t.chunkOverhead==="number"?t.chunkOverhead:1e4;const n=this.canBeInitial()?t.entryChunkMultiplicator||10:1;return e*n+s}modulesSize(){return this._modules.getFromUnorderedCache(g)}size(e={}){return this.addMultiplierAndOverhead(this.modulesSize(),e)}integratedSize(e,t){if(!this.canBeIntegrated(e)){return false}let s=this.modulesSize();for(const t of e._modules){if(!this._modules.has(t)){s+=t.size()}}return this.addMultiplierAndOverhead(s,t)}sortModules(e){this._modules.sortWith(e||h)}sortItems(){this.sortModules()}getAllAsyncChunks(){const e=new Set;const t=new Set;const s=o(Array.from(this.groupsIterable,e=>new Set(e.chunks)));for(const t of this.groupsIterable){for(const s of t.childrenIterable){e.add(s)}}for(const n of e){for(const e of n.chunks){if(!s.has(e)){t.add(e)}}for(const t of n.childrenIterable){e.add(t)}}return t}getChunkMaps(e){const t=Object.create(null);const s=Object.create(null);const n=Object.create(null);for(const r of this.getAllAsyncChunks()){t[r.id]=e?r.hash:r.renderedHash;for(const e of Object.keys(r.contentHash)){if(!s[e]){s[e]=Object.create(null)}s[e][r.id]=r.contentHash[e]}if(r.name){n[r.id]=r.name}}return{hash:t,contentHash:s,name:n}}getChildIdsByOrders(){const e=new Map;for(const t of this.groupsIterable){if(t.chunks[t.chunks.length-1]===this){for(const s of t.childrenIterable){if(typeof s.options==="object"){for(const t of Object.keys(s.options)){if(t.endsWith("Order")){const n=t.substr(0,t.length-"Order".length);let r=e.get(n);if(r===undefined)e.set(n,r=[]);r.push({order:s.options[t],group:s})}}}}}}const t=Object.create(null);for(const[s,n]of e){n.sort((e,t)=>{const s=t.order-e.order;if(s!==0)return s;if(e.group.compareTo){return e.group.compareTo(t.group)}return 0});t[s]=Array.from(n.reduce((e,t)=>{for(const s of t.group.chunks){e.add(s.id)}return e},new Set))}return t}getChildIdsByOrdersMap(e){const t=Object.create(null);const s=e=>{const s=e.getChildIdsByOrders();for(const n of Object.keys(s)){let r=t[n];if(r===undefined){t[n]=r=Object.create(null)}r[e.id]=s[n]}};if(e){const e=new Set;for(const t of this.groupsIterable){for(const s of t.chunks){e.add(s)}}for(const t of e){s(t)}}for(const e of this.getAllAsyncChunks()){s(e)}return t}getChunkModuleMaps(e){const t=Object.create(null);const s=Object.create(null);for(const n of this.getAllAsyncChunks()){let r;for(const o of n.modulesIterable){if(e(o)){if(r===undefined){r=[];t[n.id]=r}r.push(o.id);s[o.id]=o.renderedHash}}if(r!==undefined){r.sort()}}return{id:t,hash:s}}hasModuleInGraph(e,t){const s=new Set(this.groupsIterable);const n=new Set;for(const r of s){for(const s of r.chunks){if(!n.has(s)){n.add(s);if(!t||t(s)){for(const t of s.modulesIterable){if(e(t)){return true}}}}}for(const e of r.childrenIterable){s.add(e)}}return false}toString(){return`Chunk[${Array.from(this._modules).join()}]`}}Object.defineProperty(Chunk.prototype,"forEachModule",{configurable:false,value:n.deprecate(function(e){this._modules.forEach(e)},"Chunk.forEachModule: Use for(const module of chunk.modulesIterable) instead")});Object.defineProperty(Chunk.prototype,"mapModules",{configurable:false,value:n.deprecate(function(e){return Array.from(this._modules,e)},"Chunk.mapModules: Use Array.from(chunk.modulesIterable, fn) instead")});Object.defineProperty(Chunk.prototype,"chunks",{configurable:false,get(){throw new Error("Chunk.chunks: Use ChunkGroup.getChildren() instead")},set(){throw new Error("Chunk.chunks: Use ChunkGroup.add/removeChild() instead")}});Object.defineProperty(Chunk.prototype,"parents",{configurable:false,get(){throw new Error("Chunk.parents: Use ChunkGroup.getParents() instead")},set(){throw new Error("Chunk.parents: Use ChunkGroup.add/removeParent() instead")}});Object.defineProperty(Chunk.prototype,"blocks",{configurable:false,get(){throw new Error("Chunk.blocks: Use ChunkGroup.getBlocks() instead")},set(){throw new Error("Chunk.blocks: Use ChunkGroup.add/removeBlock() instead")}});Object.defineProperty(Chunk.prototype,"entrypoints",{configurable:false,get(){throw new Error("Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead")},set(){throw new Error("Chunk.entrypoints: Use Chunks.addGroup instead")}});e.exports=Chunk},583:(e,t,s)=>{"use strict";const n=s(3875);const r=s(2536);let o=5e3;const i=e=>Array.from(e);const a=(e,t)=>{if(e.id{const s=e.module?e.module.identifier():"";const n=t.module?t.module.identifier():"";if(sn)return 1;return r(e.loc,t.loc)};class ChunkGroup{constructor(e){if(typeof e==="string"){e={name:e}}else if(!e){e={name:undefined}}this.groupDebugId=o++;this.options=e;this._children=new n(undefined,a);this._parents=new n(undefined,a);this._blocks=new n;this.chunks=[];this.origins=[];this._moduleIndices=new Map;this._moduleIndices2=new Map}addOptions(e){for(const t of Object.keys(e)){if(this.options[t]===undefined){this.options[t]=e[t]}else if(this.options[t]!==e[t]){if(t.endsWith("Order")){this.options[t]=Math.max(this.options[t],e[t])}else{throw new Error(`ChunkGroup.addOptions: No option merge strategy for ${t}`)}}}}get name(){return this.options.name}set name(e){this.options.name=e}get debugId(){return Array.from(this.chunks,e=>e.debugId).join("+")}get id(){return Array.from(this.chunks,e=>e.id).join("+")}unshiftChunk(e){const t=this.chunks.indexOf(e);if(t>0){this.chunks.splice(t,1);this.chunks.unshift(e)}else if(t<0){this.chunks.unshift(e);return true}return false}insertChunk(e,t){const s=this.chunks.indexOf(e);const n=this.chunks.indexOf(t);if(n<0){throw new Error("before chunk not found")}if(s>=0&&s>n){this.chunks.splice(s,1);this.chunks.splice(n,0,e)}else if(s<0){this.chunks.splice(n,0,e);return true}return false}pushChunk(e){const t=this.chunks.indexOf(e);if(t>=0){return false}this.chunks.push(e);return true}replaceChunk(e,t){const s=this.chunks.indexOf(e);if(s<0)return false;const n=this.chunks.indexOf(t);if(n<0){this.chunks[s]=t;return true}if(n=0){this.chunks.splice(t,1);return true}return false}isInitial(){return false}addChild(e){if(this._children.has(e)){return false}this._children.add(e);return true}getChildren(){return this._children.getFromCache(i)}getNumberOfChildren(){return this._children.size}get childrenIterable(){return this._children}removeChild(e){if(!this._children.has(e)){return false}this._children.delete(e);e.removeParent(this);return true}addParent(e){if(!this._parents.has(e)){this._parents.add(e);return true}return false}getParents(){return this._parents.getFromCache(i)}setParents(e){this._parents.clear();for(const t of e){this._parents.add(t)}}getNumberOfParents(){return this._parents.size}hasParent(e){return this._parents.has(e)}get parentsIterable(){return this._parents}removeParent(e){if(this._parents.delete(e)){e.removeChunk(this);return true}return false}getBlocks(){return this._blocks.getFromCache(i)}getNumberOfBlocks(){return this._blocks.size}hasBlock(e){return this._blocks.has(e)}get blocksIterable(){return this._blocks}addBlock(e){if(!this._blocks.has(e)){this._blocks.add(e);return true}return false}addOrigin(e,t,s){this.origins.push({module:e,loc:t,request:s})}containsModule(e){for(const t of this.chunks){if(t.containsModule(e))return true}return false}getFiles(){const e=new Set;for(const t of this.chunks){for(const s of t.files){e.add(s)}}return Array.from(e)}remove(e){for(const e of this._parents){e._children.delete(this);for(const t of this._children){t.addParent(e);e.addChild(t)}}for(const e of this._children){e._parents.delete(this)}for(const e of this._blocks){e.chunkGroup=null}for(const e of this.chunks){e.removeGroup(this)}}sortItems(){this.origins.sort(u);this._parents.sort();this._children.sort()}compareTo(e){if(this.chunks.length>e.chunks.length)return-1;if(this.chunks.length{const s=t.order-e.order;if(s!==0)return s;if(e.group.compareTo){return e.group.compareTo(t.group)}return 0});t[s]=n.map(e=>e.group)}return t}setModuleIndex(e,t){this._moduleIndices.set(e,t)}getModuleIndex(e){return this._moduleIndices.get(e)}setModuleIndex2(e,t){this._moduleIndices2.set(e,t)}getModuleIndex2(e){return this._moduleIndices2.get(e)}checkConstraints(){const e=this;for(const t of e._children){if(!t._parents.has(e)){throw new Error(`checkConstraints: child missing parent ${e.debugId} -> ${t.debugId}`)}}for(const t of e._parents){if(!t._children.has(e)){throw new Error(`checkConstraints: parent missing child ${t.debugId} <- ${e.debugId}`)}}}}e.exports=ChunkGroup},8455:(e,t,s)=>{"use strict";const n=s(1891);class ChunkRenderError extends n{constructor(e,t,s){super();this.name="ChunkRenderError";this.error=s;this.message=s.message;this.details=s.stack;this.file=t;this.chunk=e;Error.captureStackTrace(this,this.constructor)}}e.exports=ChunkRenderError},1863:(e,t,s)=>{"use strict";const{Tapable:n,SyncWaterfallHook:r,SyncHook:o}=s(1242);e.exports=class ChunkTemplate extends n{constructor(e){super();this.outputOptions=e||{};this.hooks={renderManifest:new r(["result","options"]),modules:new r(["source","chunk","moduleTemplate","dependencyTemplates"]),render:new r(["source","chunk","moduleTemplate","dependencyTemplates"]),renderWithEntry:new r(["source","chunk"]),hash:new o(["hash"]),hashForChunk:new o(["hash","chunk"])}}getRenderManifest(e){const t=[];this.hooks.renderManifest.call(t,e);return t}updateHash(e){e.update("ChunkTemplate");e.update("2");this.hooks.hash.call(e)}updateHashForChunk(e,t,s,n){this.updateHash(e);this.hooks.hashForChunk.call(e,t)}}},6587:(e,t,s)=>{"use strict";const n=s(6386);const r=s(1669);const{CachedSource:o}=s(3745);const{Tapable:i,SyncHook:a,SyncBailHook:u,SyncWaterfallHook:l,AsyncSeriesHook:c}=s(1242);const h=s(1295);const d=s(8927);const f=s(8533);const p=s(2337);const m=s(583);const g=s(4029);const y=s(8865);const k=s(24);const w=s(1863);const b=s(8008);const _=s(3732);const v=s(9753);const $=s(8455);const x=s(5096);const E=s(4796);const O=s(7442);const M=s(3875);const A=s(3445);const S=s(6002);const C=s(2536);const{Logger:T,LogType:I}=s(7225);const P=s(6007);const R=s(6043);const j=s(1891);const H=(e,t)=>{if(typeof e.id!==typeof t.id){return typeof e.idt.id)return 1;return 0};const D=(e,t)=>{if(typeof e.id!==typeof t.id){return typeof e.idt.id)return 1;const s=e.identifier();const n=t.identifier();if(sn)return 1;return 0};const z=(e,t)=>{if(e.indext.index)return 1;const s=e.identifier();const n=t.identifier();if(sn)return 1;return 0};const q=(e,t)=>{if(e.namet.name)return 1;if(e.fullHasht.fullHash)return 1;return 0};const B=(e,t)=>{for(let s=0;s{for(let s=0;s{for(const s of t){e.add(s)}};const N=(e,t)=>{if(e===t)return true;let s=e.source();let n=t.source();if(s===n)return true;if(typeof s==="string"&&typeof n==="string")return false;if(!Buffer.isBuffer(s))s=Buffer.from(s,"utf-8");if(!Buffer.isBuffer(n))n=Buffer.from(n,"utf-8");return s.equals(n)};class Compilation extends i{constructor(e){super();this.hooks={buildModule:new a(["module"]),rebuildModule:new a(["module"]),failedModule:new a(["module","error"]),succeedModule:new a(["module"]),addEntry:new a(["entry","name"]),failedEntry:new a(["entry","name","error"]),succeedEntry:new a(["entry","name","module"]),dependencyReference:new l(["dependencyReference","dependency","module"]),finishModules:new c(["modules"]),finishRebuildingModule:new a(["module"]),unseal:new a([]),seal:new a([]),beforeChunks:new a([]),afterChunks:new a(["chunks"]),optimizeDependenciesBasic:new u(["modules"]),optimizeDependencies:new u(["modules"]),optimizeDependenciesAdvanced:new u(["modules"]),afterOptimizeDependencies:new a(["modules"]),optimize:new a([]),optimizeModulesBasic:new u(["modules"]),optimizeModules:new u(["modules"]),optimizeModulesAdvanced:new u(["modules"]),afterOptimizeModules:new a(["modules"]),optimizeChunksBasic:new u(["chunks","chunkGroups"]),optimizeChunks:new u(["chunks","chunkGroups"]),optimizeChunksAdvanced:new u(["chunks","chunkGroups"]),afterOptimizeChunks:new a(["chunks","chunkGroups"]),optimizeTree:new c(["chunks","modules"]),afterOptimizeTree:new a(["chunks","modules"]),optimizeChunkModulesBasic:new u(["chunks","modules"]),optimizeChunkModules:new u(["chunks","modules"]),optimizeChunkModulesAdvanced:new u(["chunks","modules"]),afterOptimizeChunkModules:new a(["chunks","modules"]),shouldRecord:new u([]),reviveModules:new a(["modules","records"]),optimizeModuleOrder:new a(["modules"]),advancedOptimizeModuleOrder:new a(["modules"]),beforeModuleIds:new a(["modules"]),moduleIds:new a(["modules"]),optimizeModuleIds:new a(["modules"]),afterOptimizeModuleIds:new a(["modules"]),reviveChunks:new a(["chunks","records"]),optimizeChunkOrder:new a(["chunks"]),beforeChunkIds:new a(["chunks"]),optimizeChunkIds:new a(["chunks"]),afterOptimizeChunkIds:new a(["chunks"]),recordModules:new a(["modules","records"]),recordChunks:new a(["chunks","records"]),beforeHash:new a([]),contentHash:new a(["chunk"]),afterHash:new a([]),recordHash:new a(["records"]),record:new a(["compilation","records"]),beforeModuleAssets:new a([]),shouldGenerateChunkAssets:new u([]),beforeChunkAssets:new a([]),additionalChunkAssets:new a(["chunks"]),additionalAssets:new c([]),optimizeChunkAssets:new c(["chunks"]),afterOptimizeChunkAssets:new a(["chunks"]),optimizeAssets:new c(["assets"]),afterOptimizeAssets:new a(["assets"]),needAdditionalSeal:new u([]),afterSeal:new c([]),chunkHash:new a(["chunk","chunkHash"]),moduleAsset:new a(["module","filename"]),chunkAsset:new a(["chunk","filename"]),assetPath:new l(["filename","data"]),needAdditionalPass:new u([]),childCompiler:new a(["childCompiler","compilerName","compilerIndex"]),log:new u(["origin","logEntry"]),normalModuleLoader:new a(["loaderContext","module"]),optimizeExtractedChunksBasic:new u(["chunks"]),optimizeExtractedChunks:new u(["chunks"]),optimizeExtractedChunksAdvanced:new u(["chunks"]),afterOptimizeExtractedChunks:new a(["chunks"])};this._pluginCompat.tap("Compilation",e=>{switch(e.name){case"optimize-tree":case"additional-assets":case"optimize-chunk-assets":case"optimize-assets":case"after-seal":e.async=true;break}});this.name=undefined;this.compiler=e;this.resolverFactory=e.resolverFactory;this.inputFileSystem=e.inputFileSystem;this.requestShortener=e.requestShortener;const t=e.options;this.options=t;this.outputOptions=t&&t.output;this.bail=t&&t.bail;this.profile=t&&t.profile;this.performance=t&&t.performance;this.mainTemplate=new k(this.outputOptions);this.chunkTemplate=new w(this.outputOptions);this.hotUpdateChunkTemplate=new b(this.outputOptions);this.runtimeTemplate=new v(this.outputOptions,this.requestShortener);this.moduleTemplates={javascript:new _(this.runtimeTemplate,"javascript"),webassembly:new _(this.runtimeTemplate,"webassembly")};this.semaphore=new E(t.parallelism||100);this.entries=[];this._preparedEntrypoints=[];this.entrypoints=new Map;this.chunks=[];this.chunkGroups=[];this.namedChunkGroups=new Map;this.namedChunks=new Map;this.modules=[];this._modules=new Map;this.cache=null;this.records=null;this.additionalChunkAssets=[];this.assets={};this.assetsInfo=new Map;this.errors=[];this.warnings=[];this.children=[];this.logging=new Map;this.dependencyFactories=new Map;this.dependencyTemplates=new Map;this.dependencyTemplates.set("hash","");this.childrenCounters={};this.usedChunkIds=null;this.usedModuleIds=null;this.fileTimestamps=undefined;this.contextTimestamps=undefined;this.compilationDependencies=undefined;this._buildingModules=new Map;this._rebuildingModules=new Map;this.emittedAssets=new Set}getStats(){return new x(this)}getLogger(e){if(!e){throw new TypeError("Compilation.getLogger(name) called without a name")}let t;return new T((s,n)=>{if(typeof e==="function"){e=e();if(!e){throw new TypeError("Compilation.getLogger(name) called with a function not returning a name")}}let r;switch(s){case I.warn:case I.error:case I.trace:r=P.cutOffLoaderExecution(new Error("Trace").stack).split("\n").slice(3);break}const o={time:Date.now(),type:s,args:n,trace:r};if(this.hooks.log.call(e,o)===undefined){if(o.type===I.profileEnd){if(typeof console.profileEnd==="function"){console.profileEnd(`[${e}] ${o.args[0]}`)}}if(t===undefined){t=this.logging.get(e);if(t===undefined){t=[];this.logging.set(e,t)}}t.push(o);if(o.type===I.profile){if(typeof console.profile==="function"){console.profile(`[${e}] ${o.args[0]}`)}}}})}addModule(e,t){const s=e.identifier();const n=this._modules.get(s);if(n){return{module:n,issuer:false,build:false,dependencies:false}}const r=(t||"m")+s;if(this.cache&&this.cache[r]){const t=this.cache[r];if(typeof t.updateCacheModule==="function"){t.updateCacheModule(e)}let n=true;if(this.fileTimestamps&&this.contextTimestamps){n=t.needRebuild(this.fileTimestamps,this.contextTimestamps)}if(!n){t.disconnect();this._modules.set(s,t);this.modules.push(t);for(const e of t.errors){this.errors.push(e)}for(const e of t.warnings){this.warnings.push(e)}return{module:t,issuer:true,build:false,dependencies:true}}t.unbuild();e=t}this._modules.set(s,e);if(this.cache){this.cache[r]=e}this.modules.push(e);return{module:e,issuer:true,build:true,dependencies:true}}getModule(e){const t=e.identifier();return this._modules.get(t)}findModule(e){return this._modules.get(e)}waitForBuildingFinished(e,t){let s=this._buildingModules.get(e);if(s){s.push(()=>t())}else{process.nextTick(t)}}buildModule(e,t,s,n,r){let o=this._buildingModules.get(e);if(o){o.push(r);return}this._buildingModules.set(e,o=[r]);const i=t=>{this._buildingModules.delete(e);for(const e of o){e(t)}};this.hooks.buildModule.call(e);e.build(this.options,this,this.resolverFactory.get("normal",e.resolveOptions),this.inputFileSystem,r=>{const o=e.errors;for(let e=0;e{e.set(t,s);return e},new Map);e.dependencies.sort((e,t)=>{const s=C(e.loc,t.loc);if(s)return s;return u.get(e)-u.get(t)});if(r){this.hooks.failedModule.call(e,r);return i(r)}this.hooks.succeedModule.call(e);return i()})}processModuleDependencies(e,t){const s=new Map;const n=e=>{const t=e.getResourceIdentifier();if(t){const n=this.dependencyFactories.get(e.constructor);if(n===undefined){throw new Error(`No module factory available for dependency type: ${e.constructor.name}`)}let r=s.get(n);if(r===undefined){s.set(n,r=new Map)}let o=r.get(t);if(o===undefined)r.set(t,o=[]);o.push(e)}};const r=e=>{if(e.dependencies){F(e.dependencies,n)}if(e.blocks){F(e.blocks,r)}if(e.variables){B(e.variables,n)}};try{r(e)}catch(e){t(e)}const o=[];for(const e of s){for(const t of e[1]){o.push({factory:e[0],dependencies:t[1]})}}this.addModuleDependencies(e,o,this.bail,null,true,t)}addModuleDependencies(e,t,s,r,o,i){const a=this.profile&&Date.now();const u=this.profile&&{};n.forEach(t,(t,n)=>{const i=t.dependencies;const l=t=>{t.origin=e;t.dependencies=i;this.errors.push(t);if(s){n(t)}else{n()}};const c=t=>{t.origin=e;this.warnings.push(t);n()};const h=this.semaphore;h.acquire(()=>{const s=t.factory;s.create({contextInfo:{issuer:e.nameForCondition&&e.nameForCondition(),compiler:this.compiler.name},resolveOptions:e.resolveOptions,context:e.context,dependencies:i},(t,s)=>{let f;const p=()=>{return i.every(e=>e.optional)};const m=e=>{if(p()){return c(e)}else{return l(e)}};if(t){h.release();return m(new d(e,t))}if(!s){h.release();return process.nextTick(n)}if(u){f=Date.now();u.factory=f-a}const g=t=>{for(let n=0;n{if(o&&y.dependencies){this.processModuleDependencies(s,n)}else{return n()}};if(y.issuer){if(u){s.profile=u}s.issuer=e}else{if(this.profile){if(e.profile){const t=Date.now()-a;if(!e.profile.dependencies||t>e.profile.dependencies){e.profile.dependencies=t}}}}if(y.build){this.buildModule(s,p(),e,i,e=>{if(e){h.release();return m(e)}if(u){const e=Date.now();u.building=e-f}h.release();k()})}else{h.release();this.waitForBuildingFinished(s,k)}})})},e=>{if(e){e.stack=e.stack;return i(e)}return process.nextTick(i)})}_addModuleChain(e,t,s,n){const r=this.profile&&Date.now();const o=this.profile&&{};const i=this.bail?e=>{n(e)}:e=>{e.dependencies=[t];this.errors.push(e);n()};if(typeof t!=="object"||t===null||!t.constructor){throw new Error("Parameter 'dependency' must be a Dependency")}const a=t.constructor;const u=this.dependencyFactories.get(a);if(!u){throw new Error(`No dependency factory available for this dependency type: ${t.constructor.name}`)}this.semaphore.acquire(()=>{u.create({contextInfo:{issuer:"",compiler:this.compiler.name},context:e,dependencies:[t]},(e,a)=>{if(e){this.semaphore.release();return i(new h(e))}let u;if(o){u=Date.now();o.factory=u-r}const l=this.addModule(a);a=l.module;s(a);t.module=a;a.addReason(null,t);const c=()=>{if(l.dependencies){this.processModuleDependencies(a,e=>{if(e)return n(e);n(null,a)})}else{return n(null,a)}};if(l.issuer){if(o){a.profile=o}}if(l.build){this.buildModule(a,false,null,null,e=>{if(e){this.semaphore.release();return i(e)}if(o){const e=Date.now();o.building=e-u}this.semaphore.release();c()})}else{this.semaphore.release();this.waitForBuildingFinished(a,c)}})})}addEntry(e,t,s,n){this.hooks.addEntry.call(t,s);const r={name:s,request:null,module:null};if(t instanceof S){r.request=t.request}const o=this._preparedEntrypoints.findIndex(e=>e.name===s);if(o>=0){this._preparedEntrypoints[o]=r}else{this._preparedEntrypoints.push(r)}this._addModuleChain(e,t,e=>{this.entries.push(e)},(e,o)=>{if(e){this.hooks.failedEntry.call(t,s,e);return n(e)}if(o){r.module=o}else{const e=this._preparedEntrypoints.indexOf(r);if(e>=0){this._preparedEntrypoints.splice(e,1)}}this.hooks.succeedEntry.call(t,s,o);return n(null,o)})}prefetch(e,t,s){this._addModuleChain(e,t,e=>{e.prefetched=true},s)}rebuildModule(e,t){let s=this._rebuildingModules.get(e);if(s){s.push(t);return}this._rebuildingModules.set(e,s=[t]);const n=t=>{this._rebuildingModules.delete(e);for(const e of s){e(t)}};this.hooks.rebuildModule.call(e);const r=e.dependencies.slice();const o=e.variables.slice();const i=e.blocks.slice();e.unbuild();this.buildModule(e,false,e,null,t=>{if(t){this.hooks.finishRebuildingModule.call(e);return n(t)}this.processModuleDependencies(e,t=>{if(t)return n(t);this.removeReasonsOfDependencyBlock(e,{dependencies:r,variables:o,blocks:i});this.hooks.finishRebuildingModule.call(e);n()})})}finish(e){const t=this.modules;this.hooks.finishModules.callAsync(t,s=>{if(s)return e(s);for(let e=0;e{if(t){return e(t)}this.hooks.afterOptimizeTree.call(this.chunks,this.modules);while(this.hooks.optimizeChunkModulesBasic.call(this.chunks,this.modules)||this.hooks.optimizeChunkModules.call(this.chunks,this.modules)||this.hooks.optimizeChunkModulesAdvanced.call(this.chunks,this.modules)){}this.hooks.afterOptimizeChunkModules.call(this.chunks,this.modules);const s=this.hooks.shouldRecord.call()!==false;this.hooks.reviveModules.call(this.modules,this.records);this.hooks.optimizeModuleOrder.call(this.modules);this.hooks.advancedOptimizeModuleOrder.call(this.modules);this.hooks.beforeModuleIds.call(this.modules);this.hooks.moduleIds.call(this.modules);this.applyModuleIds();this.hooks.optimizeModuleIds.call(this.modules);this.hooks.afterOptimizeModuleIds.call(this.modules);this.sortItemsWithModuleIds();this.hooks.reviveChunks.call(this.chunks,this.records);this.hooks.optimizeChunkOrder.call(this.chunks);this.hooks.beforeChunkIds.call(this.chunks);this.applyChunkIds();this.hooks.optimizeChunkIds.call(this.chunks);this.hooks.afterOptimizeChunkIds.call(this.chunks);this.sortItemsWithChunkIds();if(s){this.hooks.recordModules.call(this.modules,this.records);this.hooks.recordChunks.call(this.chunks,this.records)}this.hooks.beforeHash.call();this.createHash();this.hooks.afterHash.call();if(s){this.hooks.recordHash.call(this.records)}this.hooks.beforeModuleAssets.call();this.createModuleAssets();if(this.hooks.shouldGenerateChunkAssets.call()!==false){this.hooks.beforeChunkAssets.call();this.createChunkAssets()}this.hooks.additionalChunkAssets.call(this.chunks);this.summarizeDependencies();if(s){this.hooks.record.call(this,this.records)}this.hooks.additionalAssets.callAsync(t=>{if(t){return e(t)}this.hooks.optimizeChunkAssets.callAsync(this.chunks,t=>{if(t){return e(t)}this.hooks.afterOptimizeChunkAssets.call(this.chunks);this.hooks.optimizeAssets.callAsync(this.assets,t=>{if(t){return e(t)}this.hooks.afterOptimizeAssets.call(this.assets);if(this.hooks.needAdditionalSeal.call()){this.unseal();return this.seal(e)}return this.hooks.afterSeal.callAsync(e)})})})})}sortModules(e){e.sort(z)}reportDependencyErrorsAndWarnings(e,t){for(let s=0;s{const n=e.depth;if(typeof n==="number"&&n<=s)return;t.add(e);e.depth=s};const r=e=>{if(e.module){n(e.module)}};const o=e=>{if(e.variables){B(e.variables,r)}if(e.dependencies){F(e.dependencies,r)}if(e.blocks){F(e.blocks,o)}};for(e of t){t.delete(e);s=e.depth;s++;o(e)}}getDependencyReference(e,t){if(typeof t.getReference!=="function")return null;const s=t.getReference();if(!s)return null;return this.hooks.dependencyReference.call(s,t,e)}removeReasonsOfDependencyBlock(e,t){const s=t=>{if(!t.module){return}if(t.module.removeReason(e,t)){for(const e of t.module.chunksIterable){this.patchChunksAfterReasonRemoval(t.module,e)}}};if(t.blocks){F(t.blocks,t=>this.removeReasonsOfDependencyBlock(e,t))}if(t.dependencies){F(t.dependencies,s)}if(t.variables){B(t.variables,s)}}patchChunksAfterReasonRemoval(e,t){if(!e.hasReasons()){this.removeReasonsOfDependencyBlock(e,e)}if(!e.hasReasonForChunk(t)){if(e.removeChunk(t)){this.removeChunkFromDependencies(e,t)}}}removeChunkFromDependencies(e,t){const s=e=>{if(!e.module){return}this.patchChunksAfterReasonRemoval(e.module,t)};const n=e.blocks;for(let t=0;t0){let n=-1;for(const e of s){if(typeof e!=="number"){continue}n=Math.max(n,e)}let r=t=n+1;while(r--){if(!s.has(r)){e.push(r)}}}const r=this.modules;for(let s=0;s0){n.id=e.pop()}else{n.id=t++}}}}applyChunkIds(){const e=new Set;if(this.usedChunkIds){for(const t of this.usedChunkIds){if(typeof t!=="number"){continue}e.add(t)}}const t=this.chunks;for(let s=0;s0){let t=s;while(t--){if(!e.has(t)){n.push(t)}}}for(let e=0;e0){r.id=n.pop()}else{r.id=s++}}if(!r.ids){r.ids=[r.id]}}}sortItemsWithModuleIds(){this.modules.sort(D);const e=this.modules;for(let t=0;te.compareTo(t))}sortItemsWithChunkIds(){for(const e of this.chunkGroups){e.sortItems()}this.chunks.sort(H);for(let e=0;e{const s=`${e.message}`;const n=`${t.message}`;if(s{const s=e.hasRuntime();const n=t.hasRuntime();if(s&&!n)return 1;if(!s&&n)return-1;return H(e,t)});for(let o=0;oe[1].toUpperCase())].call(...t)},"Compilation.applyPlugins is deprecated. Use new API on `.hooks` instead");Object.defineProperty(Compilation.prototype,"moduleTemplate",{configurable:false,get:r.deprecate(function(){return this.moduleTemplates.javascript},"Compilation.moduleTemplate: Use Compilation.moduleTemplates.javascript instead"),set:r.deprecate(function(e){this.moduleTemplates.javascript=e},"Compilation.moduleTemplate: Use Compilation.moduleTemplates.javascript instead.")});e.exports=Compilation},9821:(e,t,s)=>{"use strict";const n=s(1669);const r=s(2536);const o=s(9440);class Dependency{constructor(){this.module=null;this.weak=false;this.optional=false;this.loc=undefined}getResourceIdentifier(){return null}getReference(){if(!this.module)return null;return new o(this.module,true,this.weak)}getExports(){return null}getWarnings(){return null}getErrors(){return null}updateHash(e){e.update((this.module&&this.module.id)+"")}disconnect(){this.module=null}}Dependency.compare=n.deprecate((e,t)=>r(e.loc,t.loc),"Dependency.compare is deprecated and will be removed in the next major version");e.exports=Dependency},1295:(e,t,s)=>{"use strict";const n=s(1891);class EntryModuleNotFoundError extends n{constructor(e){super("Entry module not found: "+e);this.name="EntryModuleNotFoundError";this.details=e.details;this.error=e;Error.captureStackTrace(this,this.constructor)}}e.exports=EntryModuleNotFoundError},8865:(e,t,s)=>{"use strict";const n=s(583);class Entrypoint extends n{constructor(e){super(e);this.runtimeChunk=undefined}isInitial(){return true}setRuntimeChunk(e){this.runtimeChunk=e}getRuntimeChunk(){return this.runtimeChunk||this.chunks[0]}replaceChunk(e,t){if(this.runtimeChunk===e)this.runtimeChunk=t;return super.replaceChunk(e,t)}}e.exports=Entrypoint},6007:(e,t)=>{"use strict";const s="LOADER_EXECUTION";const n="WEBPACK_OPTIONS";t.cutOffByFlag=((e,t)=>{e=e.split("\n");for(let s=0;st.cutOffByFlag(e,s));t.cutOffWebpackOptions=(e=>t.cutOffByFlag(e,n));t.cutOffMultilineMessage=((e,t)=>{e=e.split("\n");t=t.split("\n");return e.reduce((e,s,n)=>s.includes(t[n])?e:e.concat(s),[]).join("\n")});t.cutOffMessage=((e,t)=>{const s=e.indexOf("\n");if(s===-1){return e===t?"":e}else{const n=e.substr(0,s);return n===t?e.substr(s+1):e}});t.cleanUp=((e,s)=>{e=t.cutOffLoaderExecution(e);e=t.cutOffMessage(e,s);return e});t.cleanUpWebpackOptions=((e,s)=>{e=t.cutOffWebpackOptions(e);e=t.cutOffMultilineMessage(e,s);return e})},3445:(e,t)=>{const s=(e,t)=>{if(e.pushChunk(t)){t.addGroup(e)}};const n=(e,t)=>{if(e.addChild(t)){t.addParent(e)}};const r=(e,t)=>{if(t.addChunk(e)){e.addModule(t)}};const o=(e,t)=>{e.removeModule(t);t.removeChunk(e)};const i=(e,t)=>{if(t.addBlock(e)){e.chunkGroup=t}};t.connectChunkGroupAndChunk=s;t.connectChunkGroupParentAndChild=n;t.connectChunkAndModule=r;t.disconnectChunkAndModule=o;t.connectDependenciesBlockAndChunkGroup=i},6346:(e,t,s)=>{"use strict";const n=s(4029);class HotUpdateChunk extends n{constructor(){super();this.removedModules=undefined}}e.exports=HotUpdateChunk},8008:(e,t,s)=>{"use strict";const n=s(3720);const r=s(6346);const{Tapable:o,SyncWaterfallHook:i,SyncHook:a}=s(1242);e.exports=class HotUpdateChunkTemplate extends o{constructor(e){super();this.outputOptions=e||{};this.hooks={modules:new i(["source","modules","removedModules","moduleTemplate","dependencyTemplates"]),render:new i(["source","modules","removedModules","hash","id","moduleTemplate","dependencyTemplates"]),hash:new a(["hash"])}}render(e,t,s,o,i,a){const u=new r;u.id=e;u.setModules(t);u.removedModules=s;const l=n.renderChunkModules(u,e=>typeof e.source==="function",i,a);const c=this.hooks.modules.call(l,t,s,i,a);const h=this.hooks.render.call(c,t,s,o,e,i,a);return h}updateHash(e){e.update("HotUpdateChunkTemplate");e.update("1");this.hooks.hash.call(e)}}},24:(e,t,s)=>{"use strict";const{ConcatSource:n,OriginalSource:r,PrefixSource:o,RawSource:i}=s(3745);const{Tapable:a,SyncWaterfallHook:u,SyncHook:l,SyncBailHook:c}=s(1242);const h=s(3720);e.exports=class MainTemplate extends a{constructor(e){super();this.outputOptions=e||{};this.hooks={renderManifest:new u(["result","options"]),modules:new u(["modules","chunk","hash","moduleTemplate","dependencyTemplates"]),moduleObj:new u(["source","chunk","hash","moduleIdExpression"]),requireEnsure:new u(["source","chunk","hash","chunkIdExpression"]),bootstrap:new u(["source","chunk","hash","moduleTemplate","dependencyTemplates"]),localVars:new u(["source","chunk","hash"]),require:new u(["source","chunk","hash"]),requireExtensions:new u(["source","chunk","hash"]),beforeStartup:new u(["source","chunk","hash"]),startup:new u(["source","chunk","hash"]),afterStartup:new u(["source","chunk","hash"]),render:new u(["source","chunk","hash","moduleTemplate","dependencyTemplates"]),renderWithEntry:new u(["source","chunk","hash"]),moduleRequire:new u(["source","chunk","hash","moduleIdExpression"]),addModule:new u(["source","chunk","hash","moduleIdExpression","moduleExpression"]),currentHash:new u(["source","requestedLength"]),assetPath:new u(["path","options","assetInfo"]),hash:new l(["hash"]),hashForChunk:new l(["hash","chunk"]),globalHashPaths:new u(["paths"]),globalHash:new c(["chunk","paths"]),hotBootstrap:new u(["source","chunk","hash"])};this.hooks.startup.tap("MainTemplate",(e,t,s)=>{const n=[];if(t.entryModule){n.push("// Load entry module and return exports");n.push(`return ${this.renderRequireFunctionForModule(s,t,JSON.stringify(t.entryModule.id))}(${this.requireFn}.s = ${JSON.stringify(t.entryModule.id)});`)}return h.asString(n)});this.hooks.render.tap("MainTemplate",(e,t,s,r,a)=>{const u=new n;u.add("/******/ (function(modules) { // webpackBootstrap\n");u.add(new o("/******/",e));u.add("/******/ })\n");u.add("/************************************************************************/\n");u.add("/******/ (");u.add(this.hooks.modules.call(new i(""),t,s,r,a));u.add(")");return u});this.hooks.localVars.tap("MainTemplate",(e,t,s)=>{return h.asString([e,"// The module cache","var installedModules = {};"])});this.hooks.require.tap("MainTemplate",(t,s,n)=>{return h.asString([t,"// Check if module is in cache","if(installedModules[moduleId]) {",h.indent("return installedModules[moduleId].exports;"),"}","// Create a new module (and put it into the cache)","var module = installedModules[moduleId] = {",h.indent(this.hooks.moduleObj.call("",s,n,"moduleId")),"};","",h.asString(e.strictModuleExceptionHandling?["// Execute the module function","var threw = true;","try {",h.indent([`modules[moduleId].call(module.exports, module, module.exports, ${this.renderRequireFunctionForModule(n,s,"moduleId")});`,"threw = false;"]),"} finally {",h.indent(["if(threw) delete installedModules[moduleId];"]),"}"]:["// Execute the module function",`modules[moduleId].call(module.exports, module, module.exports, ${this.renderRequireFunctionForModule(n,s,"moduleId")});`]),"","// Flag the module as loaded","module.l = true;","","// Return the exports of the module","return module.exports;"])});this.hooks.moduleObj.tap("MainTemplate",(e,t,s,n)=>{return h.asString(["i: moduleId,","l: false,","exports: {}"])});this.hooks.requireExtensions.tap("MainTemplate",(e,t,s)=>{const n=[];const r=t.getChunkMaps();if(Object.keys(r.hash).length){n.push("// This file contains only the entry chunk.");n.push("// The chunk loading function for additional chunks");n.push(`${this.requireFn}.e = function requireEnsure(chunkId) {`);n.push(h.indent("var promises = [];"));n.push(h.indent(this.hooks.requireEnsure.call("",t,s,"chunkId")));n.push(h.indent("return Promise.all(promises);"));n.push("};")}else if(t.hasModuleInGraph(e=>e.blocks.some(e=>e.chunkGroup&&e.chunkGroup.chunks.length>0))){n.push("// The chunk loading function for additional chunks");n.push("// Since all referenced chunks are already included");n.push("// in this file, this function is empty here.");n.push(`${this.requireFn}.e = function requireEnsure() {`);n.push(h.indent("return Promise.resolve();"));n.push("};")}n.push("");n.push("// expose the modules object (__webpack_modules__)");n.push(`${this.requireFn}.m = modules;`);n.push("");n.push("// expose the module cache");n.push(`${this.requireFn}.c = installedModules;`);n.push("");n.push("// define getter function for harmony exports");n.push(`${this.requireFn}.d = function(exports, name, getter) {`);n.push(h.indent([`if(!${this.requireFn}.o(exports, name)) {`,h.indent(["Object.defineProperty(exports, name, { enumerable: true, get: getter });"]),"}"]));n.push("};");n.push("");n.push("// define __esModule on exports");n.push(`${this.requireFn}.r = function(exports) {`);n.push(h.indent(["if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {",h.indent(["Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });"]),"}","Object.defineProperty(exports, '__esModule', { value: true });"]));n.push("};");n.push("");n.push("// create a fake namespace object");n.push("// mode & 1: value is a module id, require it");n.push("// mode & 2: merge all properties of value into the ns");n.push("// mode & 4: return value when already ns object");n.push("// mode & 8|1: behave like require");n.push(`${this.requireFn}.t = function(value, mode) {`);n.push(h.indent([`if(mode & 1) value = ${this.requireFn}(value);`,`if(mode & 8) return value;`,"if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;","var ns = Object.create(null);",`${this.requireFn}.r(ns);`,"Object.defineProperty(ns, 'default', { enumerable: true, value: value });","if(mode & 2 && typeof value != 'string') for(var key in value) "+`${this.requireFn}.d(ns, key, function(key) { `+"return value[key]; "+"}.bind(null, key));","return ns;"]));n.push("};");n.push("");n.push("// getDefaultExport function for compatibility with non-harmony modules");n.push(this.requireFn+".n = function(module) {");n.push(h.indent(["var getter = module && module.__esModule ?",h.indent(["function getDefault() { return module['default']; } :","function getModuleExports() { return module; };"]),`${this.requireFn}.d(getter, 'a', getter);`,"return getter;"]));n.push("};");n.push("");n.push("// Object.prototype.hasOwnProperty.call");n.push(`${this.requireFn}.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };`);const o=this.getPublicPath({hash:s});n.push("");n.push("// __webpack_public_path__");n.push(`${this.requireFn}.p = ${JSON.stringify(o)};`);return h.asString(n)});this.requireFn="__webpack_require__"}getRenderManifest(e){const t=[];this.hooks.renderManifest.call(t,e);return t}renderBootstrap(e,t,s,n){const r=[];r.push(this.hooks.bootstrap.call("",t,e,s,n));r.push(this.hooks.localVars.call("",t,e));r.push("");r.push("// The require function");r.push(`function ${this.requireFn}(moduleId) {`);r.push(h.indent(this.hooks.require.call("",t,e)));r.push("}");r.push("");r.push(h.asString(this.hooks.requireExtensions.call("",t,e)));r.push("");r.push(h.asString(this.hooks.beforeStartup.call("",t,e)));const o=h.asString(this.hooks.afterStartup.call("",t,e));if(o){r.push("var startupResult = (function() {")}r.push(h.asString(this.hooks.startup.call("",t,e)));if(o){r.push("})();");r.push(o);r.push("return startupResult;")}return r}render(e,t,s,o){const i=this.renderBootstrap(e,t,s,o);let a=this.hooks.render.call(new r(h.prefix(i," \t")+"\n","webpack/bootstrap"),t,e,s,o);if(t.hasEntryModule()){a=this.hooks.renderWithEntry.call(a,t,e)}if(!a){throw new Error("Compiler error: MainTemplate plugin 'render' should return something")}t.rendered=true;return new n(a,";")}renderRequireFunctionForModule(e,t,s){return this.hooks.moduleRequire.call(this.requireFn,t,e,s)}renderAddModule(e,t,s,n){return this.hooks.addModule.call(`modules[${s}] = ${n};`,t,e,s,n)}renderCurrentHashCode(e,t){t=t||Infinity;return this.hooks.currentHash.call(JSON.stringify(e.substr(0,t)),t)}getPublicPath(e){return this.hooks.assetPath.call(this.outputOptions.publicPath||"",e)}getAssetPath(e,t){return this.hooks.assetPath.call(e,t)}getAssetPathWithInfo(e,t){const s={};const n=this.hooks.assetPath.call(e,t,s);return{path:n,info:s}}updateHash(e){e.update("maintemplate");e.update("3");this.hooks.hash.call(e)}updateHashForChunk(e,t,s,n){this.updateHash(e);this.hooks.hashForChunk.call(e,t);for(const r of this.renderBootstrap("0000",t,s,n)){e.update(r)}}useChunkHash(e){const t=this.hooks.globalHashPaths.call([]);return!this.hooks.globalHash.call(e,t)}}},2337:(e,t,s)=>{"use strict";const n=s(1891);class ModuleDependencyError extends n{constructor(e,t,s){super(t.message);this.name="ModuleDependencyError";this.details=t.stack.split("\n").slice(1).join("\n");this.module=e;this.loc=s;this.error=t;this.origin=e.issuer;Error.captureStackTrace(this,this.constructor)}}e.exports=ModuleDependencyError},8533:(e,t,s)=>{"use strict";const n=s(1891);e.exports=class ModuleDependencyWarning extends n{constructor(e,t,s){super(t.message);this.name="ModuleDependencyWarning";this.details=t.stack.split("\n").slice(1).join("\n");this.module=e;this.loc=s;this.error=t;this.origin=e.issuer;Error.captureStackTrace(this,this.constructor)}}},8927:(e,t,s)=>{"use strict";const n=s(1891);class ModuleNotFoundError extends n{constructor(e,t){super("Module not found: "+t);this.name="ModuleNotFoundError";this.details=t.details;this.missing=t.missing;this.module=e;this.error=t;Error.captureStackTrace(this,this.constructor)}}e.exports=ModuleNotFoundError},3732:(e,t,s)=>{"use strict";const{Tapable:n,SyncWaterfallHook:r,SyncHook:o}=s(1242);e.exports=class ModuleTemplate extends n{constructor(e,t){super();this.runtimeTemplate=e;this.type=t;this.hooks={content:new r(["source","module","options","dependencyTemplates"]),module:new r(["source","module","options","dependencyTemplates"]),render:new r(["source","module","options","dependencyTemplates"]),package:new r(["source","module","options","dependencyTemplates"]),hash:new o(["hash"])}}render(e,t,s){try{const n=e.source(t,this.runtimeTemplate,this.type);const r=this.hooks.content.call(n,e,s,t);const o=this.hooks.module.call(r,e,s,t);const i=this.hooks.render.call(o,e,s,t);return this.hooks.package.call(i,e,s,t)}catch(t){t.message=`${e.identifier()}\n${t.message}`;throw t}}updateHash(e){e.update("1");this.hooks.hash.call(e)}}},2372:(e,t,s)=>{"use strict";const n=s(5622);const r=/\\/g;const o=/[-[\]{}()*+?.,\\^$|#\s]/g;const i=/[/\\]$/;const a=/^!|!$/g;const u=/\/index.js(!|\?|\(query\))/g;const l=/!=!/;const c=e=>{return e.replace(r,"/")};const h=e=>{const t=e.replace(o,"\\$&");return new RegExp(`(^|!)${t}`,"g")};class RequestShortener{constructor(e){e=c(e);if(i.test(e)){e=e.substr(0,e.length-1)}if(e){this.currentDirectoryRegExp=h(e)}const t=n.dirname(e);const s=i.test(t);const r=s?t.substr(0,t.length-1):t;if(r&&r!==e){this.parentDirectoryRegExp=h(`${r}/`)}if(__dirname.length>=2){const e=c(n.join(__dirname,".."));const t=this.currentDirectoryRegExp&&this.currentDirectoryRegExp.test(e);this.buildinsAsModule=t;this.buildinsRegExp=h(e)}this.cache=new Map}shorten(e){if(!e)return e;const t=this.cache.get(e);if(t!==undefined){return t}let s=c(e);if(this.buildinsAsModule&&this.buildinsRegExp){s=s.replace(this.buildinsRegExp,"!(webpack)")}if(this.currentDirectoryRegExp){s=s.replace(this.currentDirectoryRegExp,"!.")}if(this.parentDirectoryRegExp){s=s.replace(this.parentDirectoryRegExp,"!../")}if(!this.buildinsAsModule&&this.buildinsRegExp){s=s.replace(this.buildinsRegExp,"!(webpack)")}s=s.replace(u,"$1");s=s.replace(a,"");s=s.replace(l," = ");this.cache.set(e,s);return s}}e.exports=RequestShortener},9753:(e,t,s)=>{"use strict";const n=s(3720);e.exports=class RuntimeTemplate{constructor(e,t){this.outputOptions=e||{};this.requestShortener=t}comment({request:e,chunkName:t,chunkReason:s,message:r,exportName:o}){let i;if(this.outputOptions.pathinfo){i=[r,e,t,s].filter(Boolean).map(e=>this.requestShortener.shorten(e)).join(" | ")}else{i=[r,t,s].filter(Boolean).map(e=>this.requestShortener.shorten(e)).join(" | ")}if(!i)return"";if(this.outputOptions.pathinfo){return n.toComment(i)+" "}else{return n.toNormalComment(i)+" "}}throwMissingModuleErrorFunction({request:e}){const t=`Cannot find module '${e}'`;return`function webpackMissingModule() { var e = new Error(${JSON.stringify(t)}); e.code = 'MODULE_NOT_FOUND'; throw e; }`}missingModule({request:e}){return`!(${this.throwMissingModuleErrorFunction({request:e})}())`}missingModuleStatement({request:e}){return`${this.missingModule({request:e})};\n`}missingModulePromise({request:e}){return`Promise.resolve().then(${this.throwMissingModuleErrorFunction({request:e})})`}moduleId({module:e,request:t}){if(!e){return this.missingModule({request:t})}if(e.id===null){throw new Error(`RuntimeTemplate.moduleId(): Module ${e.identifier()} has no id. This should not happen.`)}return`${this.comment({request:t})}${JSON.stringify(e.id)}`}moduleRaw({module:e,request:t}){if(!e){return this.missingModule({request:t})}return`__webpack_require__(${this.moduleId({module:e,request:t})})`}moduleExports({module:e,request:t}){return this.moduleRaw({module:e,request:t})}moduleNamespace({module:e,request:t,strict:s}){if(!e){return this.missingModule({request:t})}const n=this.moduleId({module:e,request:t});const r=e.buildMeta&&e.buildMeta.exportsType;if(r==="namespace"){const s=this.moduleRaw({module:e,request:t});return s}else if(r==="named"){return`__webpack_require__.t(${n}, 3)`}else if(s){return`__webpack_require__.t(${n}, 1)`}else{return`__webpack_require__.t(${n}, 7)`}}moduleNamespacePromise({block:e,module:t,request:s,message:n,strict:r,weak:o}){if(!t){return this.missingModulePromise({request:s})}if(t.id===null){throw new Error(`RuntimeTemplate.moduleNamespacePromise(): Module ${t.identifier()} has no id. This should not happen.`)}const i=this.blockPromise({block:e,message:n});let a;let u=JSON.stringify(t.id);const l=this.comment({request:s});let c="";if(o){if(u.length>8){c+=`var id = ${u}; `;u="id"}c+=`if(!__webpack_require__.m[${u}]) { var e = new Error("Module '" + ${u} + "' is not available (weak dependency)"); e.code = 'MODULE_NOT_FOUND'; throw e; } `}const h=this.moduleId({module:t,request:s});const d=t.buildMeta&&t.buildMeta.exportsType;if(d==="namespace"){if(c){const e=this.moduleRaw({module:t,request:s});a=`function() { ${c}return ${e}; }`}else{a=`__webpack_require__.bind(null, ${l}${u})`}}else if(d==="named"){if(c){a=`function() { ${c}return __webpack_require__.t(${h}, 3); }`}else{a=`__webpack_require__.t.bind(null, ${l}${u}, 3)`}}else if(r){if(c){a=`function() { ${c}return __webpack_require__.t(${h}, 1); }`}else{a=`__webpack_require__.t.bind(null, ${l}${u}, 1)`}}else{if(c){a=`function() { ${c}return __webpack_require__.t(${h}, 7); }`}else{a=`__webpack_require__.t.bind(null, ${l}${u}, 7)`}}return`${i||"Promise.resolve()"}.then(${a})`}importStatement({update:e,module:t,request:s,importVar:n,originModule:r}){if(!t){return this.missingModuleStatement({request:s})}const o=this.moduleId({module:t,request:s});const i=e?"":"var ";const a=t.buildMeta&&t.buildMeta.exportsType;let u=`/* harmony import */ ${i}${n} = __webpack_require__(${o});\n`;if(!a&&!r.buildMeta.strictHarmonyModule){u+=`/* harmony import */ ${i}${n}_default = /*#__PURE__*/__webpack_require__.n(${n});\n`}if(a==="named"){if(Array.isArray(t.buildMeta.providedExports)){u+=`${i}${n}_namespace = /*#__PURE__*/__webpack_require__.t(${o}, 1);\n`}else{u+=`${i}${n}_namespace = /*#__PURE__*/__webpack_require__.t(${o});\n`}}return u}exportFromImport({module:e,request:t,exportName:s,originModule:r,asiSafe:o,isCall:i,callContext:a,importVar:u}){if(!e){return this.missingModule({request:t})}const l=e.buildMeta&&e.buildMeta.exportsType;if(!l){if(s==="default"){if(!r.buildMeta.strictHarmonyModule){if(i){return`${u}_default()`}else if(o){return`(${u}_default())`}else{return`${u}_default.a`}}else{return u}}else if(r.buildMeta.strictHarmonyModule){if(s){return"/* non-default import from non-esm module */undefined"}else{return`/*#__PURE__*/__webpack_require__.t(${u})`}}}if(l==="named"){if(s==="default"){return u}else if(!s){return`${u}_namespace`}}if(s){const t=e.isUsed(s);if(!t){const e=n.toNormalComment(`unused export ${s}`);return`${e} undefined`}const r=t!==s?n.toNormalComment(s)+" ":"";const l=`${u}[${r}${JSON.stringify(t)}]`;if(i){if(a===false&&o){return`(0,${l})`}else if(a===false){return`Object(${l})`}}return l}else{return u}}blockPromise({block:e,message:t}){if(!e||!e.chunkGroup||e.chunkGroup.chunks.length===0){const e=this.comment({message:t});return`Promise.resolve(${e.trim()})`}const s=e.chunkGroup.chunks.filter(e=>!e.hasRuntime()&&e.id!==null);const n=this.comment({message:t,chunkName:e.chunkName,chunkReason:e.chunkReason});if(s.length===1){const e=JSON.stringify(s[0].id);return`__webpack_require__.e(${n}${e})`}else if(s.length>0){const e=e=>`__webpack_require__.e(${JSON.stringify(e.id)})`;return`Promise.all(${n.trim()}[${s.map(e).join(", ")}])`}else{return`Promise.resolve(${n.trim()})`}}onError(){return"__webpack_require__.oe"}defineEsModuleFlagStatement({exportsArgument:e}){return`__webpack_require__.r(${e});\n`}}},3963:(e,t)=>{"use strict";const s=t;s.formatSize=(e=>{if(typeof e!=="number"||Number.isNaN(e)===true){return"unknown size"}if(e<=0){return"0 bytes"}const t=["bytes","KiB","MiB","GiB"];const s=Math.floor(Math.log(e)/Math.log(1024));return`${+(e/Math.pow(1024,s)).toPrecision(3)} ${t[s]}`})},5096:(e,t,s)=>{"use strict";const n=s(2372);const r=s(3963);const o=s(7929);const i=s(8540);const a=s(2536);const{LogType:u}=s(7225);const l=(...e)=>{let t=[];t.push(...e);return t.find(e=>e!==undefined)};const c=(e,t)=>{if(typeof e!==typeof t){return typeof et)return 1;return 0};class Stats{constructor(e){this.compilation=e;this.hash=e.hash;this.startTime=undefined;this.endTime=undefined}static filterWarnings(e,t){if(!t){return e}const s=[].concat(t).map(e=>{if(typeof e==="string"){return t=>t.includes(e)}if(e instanceof RegExp){return t=>e.test(t)}if(typeof e==="function"){return e}throw new Error(`Can only filter warnings with Strings or RegExps. (Given: ${e})`)});return e.filter(e=>{return!s.some(t=>t(e))})}formatFilePath(e){const t=/^(\s|\S)*!/;return e.includes("!")?`${e.replace(t,"")} (${e})`:`${e}`}hasWarnings(){return this.compilation.warnings.length>0||this.compilation.children.some(e=>e.getStats().hasWarnings())}hasErrors(){return this.compilation.errors.length>0||this.compilation.children.some(e=>e.getStats().hasErrors())}normalizeFieldKey(e){if(e[0]==="!"){return e.substr(1)}return e}sortOrderRegular(e){if(e[0]==="!"){return false}return true}toJson(e,t){if(typeof e==="boolean"||typeof e==="string"){e=Stats.presetToOptions(e)}else if(!e){e={}}const r=(t,s)=>t!==undefined?t:e.all!==undefined?e.all:s;const h=e=>{if(typeof e==="string"){const t=new RegExp(`[\\\\/]${e.replace(/[-[\]{}()*+?.\\^$|]/g,"\\$&")}([\\\\/]|$|!|\\?)`);return e=>t.test(e)}if(e&&typeof e==="object"&&typeof e.test==="function"){return t=>e.test(t)}if(typeof e==="function"){return e}if(typeof e==="boolean"){return()=>e}};const d=this.compilation;const f=l(e.context,d.compiler.context);const p=d.compiler.context===f?d.requestShortener:new n(f);const m=r(e.performance,true);const g=r(e.hash,true);const y=r(e.env,false);const k=r(e.version,true);const w=r(e.timings,true);const b=r(e.builtAt,true);const _=r(e.assets,true);const v=r(e.entrypoints,true);const $=r(e.chunkGroups,!t);const x=r(e.chunks,!t);const E=r(e.chunkModules,true);const O=r(e.chunkOrigins,!t);const M=r(e.modules,true);const A=r(e.nestedModules,true);const S=r(e.moduleAssets,!t);const C=r(e.depth,!t);const T=r(e.cached,true);const I=r(e.cachedAssets,true);const P=r(e.reasons,!t);const R=r(e.usedExports,!t);const j=r(e.providedExports,!t);const H=r(e.optimizationBailout,!t);const D=r(e.children,true);const z=r(e.source,!t);const q=r(e.moduleTrace,true);const B=r(e.errors,true);const F=r(e.errorDetails,!t);const G=r(e.warnings,true);const N=l(e.warningsFilter,null);const W=r(e.publicPath,!t);const L=r(e.logging,t?"info":true);const U=r(e.loggingTrace,!t);const J=[].concat(l(e.loggingDebug,[])).map(h);const Z=[].concat(l(e.excludeModules,e.exclude,[])).map(h);const K=[].concat(l(e.excludeAssets,[])).map(h);const Q=l(e.maxModules,t?15:Infinity);const X=l(e.modulesSort,"id");const Y=l(e.chunksSort,"id");const V=l(e.assetsSort,"");const ee=r(e.outputPath,!t);if(!T){Z.push((e,t)=>!t.built)}const te=()=>{let e=0;return t=>{if(Z.length>0){const e=p.shorten(t.resource);const s=Z.some(s=>s(e,t));if(s)return false}const s=e{return e=>{if(K.length>0){const t=e.name;const s=K.some(s=>s(t,e));if(s)return false}return I||e.emitted}};const ne=(e,t,s)=>{if(t[e]===null&&s[e]===null)return 0;if(t[e]===null)return 1;if(s[e]===null)return-1;if(t[e]===s[e])return 0;if(typeof t[e]!==typeof s[e])return typeof t[e]{const s=t.reduce((e,t,s)=>{e.set(t,s);return e},new Map);return(t,n)=>{if(e){const s=this.normalizeFieldKey(e);const r=this.sortOrderRegular(e);const o=ne(s,r?t:n,r?n:t);if(o)return o}return s.get(t)-s.get(n)}};const oe=e=>{let t="";if(typeof e==="string"){e={message:e}}if(e.chunk){t+=`chunk ${e.chunk.name||e.chunk.id}${e.chunk.hasRuntime()?" [entry]":e.chunk.canBeInitial()?" [initial]":""}\n`}if(e.file){t+=`${e.file}\n`}if(e.module&&e.module.readableIdentifier&&typeof e.module.readableIdentifier==="function"){t+=this.formatFilePath(e.module.readableIdentifier(p));if(typeof e.loc==="object"){const s=o(e.loc);if(s)t+=` ${s}`}t+="\n"}t+=e.message;if(F&&e.details){t+=`\n${e.details}`}if(F&&e.missing){t+=e.missing.map(e=>`\n[${e}]`).join("")}if(q&&e.origin){t+=`\n @ ${this.formatFilePath(e.origin.readableIdentifier(p))}`;if(typeof e.originLoc==="object"){const s=o(e.originLoc);if(s)t+=` ${s}`}if(e.dependencies){for(const s of e.dependencies){if(!s.loc)continue;if(typeof s.loc==="string")continue;const e=o(s.loc);if(!e)continue;t+=` ${e}`}}let s=e.origin;while(s.issuer){s=s.issuer;t+=`\n @ ${s.readableIdentifier(p)}`}}return t};const ie={errors:d.errors.map(oe),warnings:Stats.filterWarnings(d.warnings.map(oe),N)};Object.defineProperty(ie,"_showWarnings",{value:G,enumerable:false});Object.defineProperty(ie,"_showErrors",{value:B,enumerable:false});if(k){ie.version=s(1618).i8}if(g)ie.hash=this.hash;if(w&&this.startTime&&this.endTime){ie.time=this.endTime-this.startTime}if(b&&this.endTime){ie.builtAt=this.endTime}if(y&&e._env){ie.env=e._env}if(d.needAdditionalPass){ie.needAdditionalPass=true}if(W){ie.publicPath=this.compilation.mainTemplate.getPublicPath({hash:this.compilation.hash})}if(ee){ie.outputPath=this.compilation.mainTemplate.outputOptions.path}if(_){const e={};const t=d.getAssets().sort((e,t)=>e.name{const r={name:t,size:s.size(),chunks:[],chunkNames:[],info:n,emitted:s.emitted||d.emittedAssets.has(t)};if(m){r.isOverSizeLimit=s.isOverSizeLimit}e[t]=r;return r}).filter(se());ie.filteredAssets=t.length-ie.assets.length;for(const t of d.chunks){for(const s of t.files){if(e[s]){for(const n of t.ids){e[s].chunks.push(n)}if(t.name){e[s].chunkNames.push(t.name);if(ie.assetsByChunkName[t.name]){ie.assetsByChunkName[t.name]=[].concat(ie.assetsByChunkName[t.name]).concat([s])}else{ie.assetsByChunkName[t.name]=s}}}}}ie.assets.sort(re(V,ie.assets))}const ae=e=>{const t={};for(const s of e){const e=s[0];const n=s[1];const r=n.getChildrenByOrders();t[e]={chunks:n.chunks.map(e=>e.id),assets:n.chunks.reduce((e,t)=>e.concat(t.files||[]),[]),children:Object.keys(r).reduce((e,t)=>{const s=r[t];e[t]=s.map(e=>({name:e.name,chunks:e.chunks.map(e=>e.id),assets:e.chunks.reduce((e,t)=>e.concat(t.files||[]),[])}));return e},Object.create(null)),childAssets:Object.keys(r).reduce((e,t)=>{const s=r[t];e[t]=Array.from(s.reduce((e,t)=>{for(const s of t.chunks){for(const t of s.files){e.add(t)}}return e},new Set));return e},Object.create(null))};if(m){t[e].isOverSizeLimit=n.isOverSizeLimit}}return t};if(v){ie.entrypoints=ae(d.entrypoints)}if($){ie.namedChunkGroups=ae(d.namedChunkGroups)}const ue=e=>{const t=[];let s=e;while(s.issuer){t.push(s=s.issuer)}t.reverse();const n={id:e.id,identifier:e.identifier(),name:e.readableIdentifier(p),index:e.index,index2:e.index2,size:e.size(),cacheable:e.buildInfo.cacheable,built:!!e.built,optional:e.optional,prefetched:e.prefetched,chunks:Array.from(e.chunksIterable,e=>e.id),issuer:e.issuer&&e.issuer.identifier(),issuerId:e.issuer&&e.issuer.id,issuerName:e.issuer&&e.issuer.readableIdentifier(p),issuerPath:e.issuer&&t.map(e=>({id:e.id,identifier:e.identifier(),name:e.readableIdentifier(p),profile:e.profile})),profile:e.profile,failed:!!e.error,errors:e.errors?e.errors.length:0,warnings:e.warnings?e.warnings.length:0};if(S){n.assets=Object.keys(e.buildInfo.assets||{})}if(P){n.reasons=e.reasons.sort((e,t)=>{if(e.module&&!t.module)return-1;if(!e.module&&t.module)return 1;if(e.module&&t.module){const s=c(e.module.id,t.module.id);if(s)return s}if(e.dependency&&!t.dependency)return-1;if(!e.dependency&&t.dependency)return 1;if(e.dependency&&t.dependency){const s=a(e.dependency.loc,t.dependency.loc);if(s)return s;if(e.dependency.typet.dependency.type)return 1}return 0}).map(e=>{const t={moduleId:e.module?e.module.id:null,moduleIdentifier:e.module?e.module.identifier():null,module:e.module?e.module.readableIdentifier(p):null,moduleName:e.module?e.module.readableIdentifier(p):null,type:e.dependency?e.dependency.type:null,explanation:e.explanation,userRequest:e.dependency?e.dependency.userRequest:null};if(e.dependency){const s=o(e.dependency.loc);if(s){t.loc=s}}return t})}if(R){if(e.used===true){n.usedExports=e.usedExports}else if(e.used===false){n.usedExports=false}}if(j){n.providedExports=Array.isArray(e.buildMeta.providedExports)?e.buildMeta.providedExports:null}if(H){n.optimizationBailout=e.optimizationBailout.map(e=>{if(typeof e==="function")return e(p);return e})}if(C){n.depth=e.depth}if(A){if(e.modules){const t=e.modules;n.modules=t.sort(re("depth",t)).filter(te()).map(ue);n.filteredModules=t.length-n.modules.length;n.modules.sort(re(X,n.modules))}}if(z&&e._source){n.source=e._source.source()}return n};if(x){ie.chunks=d.chunks.map(e=>{const t=new Set;const s=new Set;const n=new Set;const r=e.getChildIdsByOrders();for(const r of e.groupsIterable){for(const e of r.parentsIterable){for(const s of e.chunks){t.add(s.id)}}for(const e of r.childrenIterable){for(const t of e.chunks){s.add(t.id)}}for(const t of r.chunks){if(t!==e)n.add(t.id)}}const i={id:e.id,rendered:e.rendered,initial:e.canBeInitial(),entry:e.hasRuntime(),recorded:e.recorded,reason:e.chunkReason,size:e.modulesSize(),names:e.name?[e.name]:[],files:e.files.slice(),hash:e.renderedHash,siblings:Array.from(n).sort(c),parents:Array.from(t).sort(c),children:Array.from(s).sort(c),childrenByOrder:r};if(E){const t=e.getModules();i.modules=t.slice().sort(re("depth",t)).filter(te()).map(ue);i.filteredModules=e.getNumberOfModules()-i.modules.length;i.modules.sort(re(X,i.modules))}if(O){i.origins=Array.from(e.groupsIterable,e=>e.origins).reduce((e,t)=>e.concat(t),[]).map(e=>({moduleId:e.module?e.module.id:undefined,module:e.module?e.module.identifier():"",moduleIdentifier:e.module?e.module.identifier():"",moduleName:e.module?e.module.readableIdentifier(p):"",loc:o(e.loc),request:e.request,reasons:e.reasons||[]})).sort((e,t)=>{const s=c(e.moduleId,t.moduleId);if(s)return s;const n=c(e.loc,t.loc);if(n)return n;const r=c(e.request,t.request);if(r)return r;return 0})}return i});ie.chunks.sort(re(Y,ie.chunks))}if(M){ie.modules=d.modules.slice().sort(re("depth",d.modules)).filter(te()).map(ue);ie.filteredModules=d.modules.length-ie.modules.length;ie.modules.sort(re(X,ie.modules))}if(L){const e=s(1669);ie.logging={};let t;let n=false;switch(L){case"none":t=new Set([]);break;case"error":t=new Set([u.error]);break;case"warn":t=new Set([u.error,u.warn]);break;case"info":t=new Set([u.error,u.warn,u.info]);break;case true:case"log":t=new Set([u.error,u.warn,u.info,u.log,u.group,u.groupEnd,u.groupCollapsed,u.clear]);break;case"verbose":t=new Set([u.error,u.warn,u.info,u.log,u.group,u.groupEnd,u.groupCollapsed,u.profile,u.profileEnd,u.time,u.status,u.clear]);n=true;break}for(const[s,r]of d.logging){const o=J.some(e=>e(s));let a=0;let l=r;if(!o){l=l.filter(e=>{if(!t.has(e.type))return false;if(!n){switch(e.type){case u.groupCollapsed:a++;return a===1;case u.group:if(a>0)a++;return a===0;case u.groupEnd:if(a>0){a--;return false}return true;default:return a===0}}return true})}l=l.map(t=>{let s=undefined;if(t.type===u.time){s=`${t.args[0]}: ${t.args[1]*1e3+t.args[2]/1e6}ms`}else if(t.args&&t.args.length>0){s=e.format(t.args[0],...t.args.slice(1))}return{type:(o||n)&&t.type===u.groupCollapsed?u.group:t.type,message:s,trace:U&&t.trace?t.trace:undefined}});let c=i.makePathsRelative(f,s,d.cache).replace(/\|/g," ");if(c in ie.logging){let e=1;while(`${c}#${e}`in ie.logging){e++}c=`${c}#${e}`}ie.logging[c]={entries:l,filteredEntries:r.length-l.length,debug:o}}}if(D){ie.children=d.children.map((s,n)=>{const r=Stats.getChildOptions(e,n);const o=new Stats(s).toJson(r,t);delete o.hash;delete o.version;if(s.name){o.name=i.makePathsRelative(f,s.name,d.cache)}return o})}return ie}toString(e){if(typeof e==="boolean"||typeof e==="string"){e=Stats.presetToOptions(e)}else if(!e){e={}}const t=l(e.colors,false);const s=this.toJson(e,true);return Stats.jsonToString(s,t)}static jsonToString(e,t){const s=[];const n={bold:"",yellow:"",red:"",green:"",cyan:"",magenta:""};const o=Object.keys(n).reduce((e,r)=>{e[r]=(e=>{if(t){s.push(t===true||t[r]===undefined?n[r]:t[r])}s.push(e);if(t){s.push("")}});return e},{normal:e=>s.push(e)});const i=t=>{let s=[800,400,200,100];if(e.time){s=[e.time/2,e.time/4,e.time/8,e.time/16]}if(ts.push("\n");const l=(e,t,s)=>{return e[t][s].value};const c=(e,t,s)=>{const n=e.length;const r=e[0].length;const i=new Array(r);for(let e=0;ei[s]){i[s]=n.length}}}for(let u=0;u{if(e.isOverSizeLimit){return o.yellow}return t};if(e.hash){o.normal("Hash: ");o.bold(e.hash);a()}if(e.version){o.normal("Version: webpack ");o.bold(e.version);a()}if(typeof e.time==="number"){o.normal("Time: ");o.bold(e.time);o.normal("ms");a()}if(typeof e.builtAt==="number"){const t=new Date(e.builtAt);let s=undefined;try{t.toLocaleTimeString()}catch(e){s="UTC"}o.normal("Built at: ");o.normal(t.toLocaleDateString(undefined,{day:"2-digit",month:"2-digit",year:"numeric",timeZone:s}));o.normal(" ");o.bold(t.toLocaleTimeString(undefined,{timeZone:s}));a()}if(e.env){o.normal("Environment (--env): ");o.bold(JSON.stringify(e.env,null,2));a()}if(e.publicPath){o.normal("PublicPath: ");o.bold(e.publicPath);a()}if(e.assets&&e.assets.length>0){const t=[[{value:"Asset",color:o.bold},{value:"Size",color:o.bold},{value:"Chunks",color:o.bold},{value:"",color:o.bold},{value:"",color:o.bold},{value:"Chunk Names",color:o.bold}]];for(const s of e.assets){t.push([{value:s.name,color:h(s,o.green)},{value:r.formatSize(s.size),color:h(s,o.normal)},{value:s.chunks.join(", "),color:o.bold},{value:[s.emitted&&"[emitted]",s.info.immutable&&"[immutable]",s.info.development&&"[dev]",s.info.hotModuleReplacement&&"[hmr]"].filter(Boolean).join(" "),color:o.green},{value:s.isOverSizeLimit?"[big]":"",color:h(s,o.normal)},{value:s.chunkNames.join(", "),color:o.normal}])}c(t,"rrrlll")}if(e.filteredAssets>0){o.normal(" ");if(e.assets.length>0)o.normal("+ ");o.normal(e.filteredAssets);if(e.assets.length>0)o.normal(" hidden");o.normal(e.filteredAssets!==1?" assets":" asset");a()}const d=(e,t)=>{for(const s of Object.keys(e)){const n=e[s];o.normal(`${t} `);o.bold(s);if(n.isOverSizeLimit){o.normal(" ");o.yellow("[big]")}o.normal(" =");for(const e of n.assets){o.normal(" ");o.green(e)}for(const e of Object.keys(n.childAssets)){const t=n.childAssets[e];if(t&&t.length>0){o.normal(" ");o.magenta(`(${e}:`);for(const e of t){o.normal(" ");o.green(e)}o.magenta(")")}}a()}};if(e.entrypoints){d(e.entrypoints,"Entrypoint")}if(e.namedChunkGroups){let t=e.namedChunkGroups;if(e.entrypoints){t=Object.keys(t).filter(t=>!e.entrypoints[t]).reduce((t,s)=>{t[s]=e.namedChunkGroups[s];return t},{})}d(t,"Chunk Group")}const f={};if(e.modules){for(const t of e.modules){f[`$${t.identifier}`]=t}}else if(e.chunks){for(const t of e.chunks){if(t.modules){for(const e of t.modules){f[`$${e.identifier}`]=e}}}}const p=e=>{o.normal(" ");o.normal(r.formatSize(e.size));if(e.chunks){for(const t of e.chunks){o.normal(" {");o.yellow(t);o.normal("}")}}if(typeof e.depth==="number"){o.normal(` [depth ${e.depth}]`)}if(e.cacheable===false){o.red(" [not cacheable]")}if(e.optional){o.yellow(" [optional]")}if(e.built){o.green(" [built]")}if(e.assets&&e.assets.length){o.magenta(` [${e.assets.length} asset${e.assets.length===1?"":"s"}]`)}if(e.prefetched){o.magenta(" [prefetched]")}if(e.failed)o.red(" [failed]");if(e.warnings){o.yellow(` [${e.warnings} warning${e.warnings===1?"":"s"}]`)}if(e.errors){o.red(` [${e.errors} error${e.errors===1?"":"s"}]`)}};const m=(e,t)=>{if(Array.isArray(e.providedExports)){o.normal(t);if(e.providedExports.length===0){o.cyan("[no exports]")}else{o.cyan(`[exports: ${e.providedExports.join(", ")}]`)}a()}if(e.usedExports!==undefined){if(e.usedExports!==true){o.normal(t);if(e.usedExports===null){o.cyan("[used exports unknown]")}else if(e.usedExports===false){o.cyan("[no exports used]")}else if(Array.isArray(e.usedExports)&&e.usedExports.length===0){o.cyan("[no exports used]")}else if(Array.isArray(e.usedExports)){const t=Array.isArray(e.providedExports)?e.providedExports.length:null;if(t!==null&&t===e.usedExports.length){o.cyan("[all exports used]")}else{o.cyan(`[only some exports used: ${e.usedExports.join(", ")}]`)}}a()}}if(Array.isArray(e.optimizationBailout)){for(const s of e.optimizationBailout){o.normal(t);o.yellow(s);a()}}if(e.reasons){for(const s of e.reasons){o.normal(t);if(s.type){o.normal(s.type);o.normal(" ")}if(s.userRequest){o.cyan(s.userRequest);o.normal(" ")}if(s.moduleId!==null){o.normal("[");o.normal(s.moduleId);o.normal("]")}if(s.module&&s.module!==s.moduleId){o.normal(" ");o.magenta(s.module)}if(s.loc){o.normal(" ");o.normal(s.loc)}if(s.explanation){o.normal(" ");o.cyan(s.explanation)}a()}}if(e.profile){o.normal(t);let s=0;if(e.issuerPath){for(const t of e.issuerPath){o.normal("[");o.normal(t.id);o.normal("] ");if(t.profile){const e=(t.profile.factory||0)+(t.profile.building||0);i(e);s+=e;o.normal(" ")}o.normal("-> ")}}for(const t of Object.keys(e.profile)){o.normal(`${t}:`);const n=e.profile[t];i(n);o.normal(" ");s+=n}o.normal("= ");i(s);a()}if(e.modules){g(e,t+"| ")}};const g=(e,t)=>{if(e.modules){let s=0;for(const t of e.modules){if(typeof t.id==="number"){if(s=10)n+=" ";if(s>=100)n+=" ";if(s>=1e3)n+=" ";for(const r of e.modules){o.normal(t);const e=r.name||r.identifier;if(typeof r.id==="string"||typeof r.id==="number"){if(typeof r.id==="number"){if(r.id<1e3&&s>=1e3)o.normal(" ");if(r.id<100&&s>=100)o.normal(" ");if(r.id<10&&s>=10)o.normal(" ")}else{if(s>=1e3)o.normal(" ");if(s>=100)o.normal(" ");if(s>=10)o.normal(" ")}if(e!==r.id){o.normal("[");o.normal(r.id);o.normal("]");o.normal(" ")}else{o.normal("[");o.bold(r.id);o.normal("]")}}if(e!==r.id){o.bold(e)}p(r);a();m(r,n)}if(e.filteredModules>0){o.normal(t);o.normal(" ");if(e.modules.length>0)o.normal(" + ");o.normal(e.filteredModules);if(e.modules.length>0)o.normal(" hidden");o.normal(e.filteredModules!==1?" modules":" module");a()}}};if(e.chunks){for(const t of e.chunks){o.normal("chunk ");if(t.id<1e3)o.normal(" ");if(t.id<100)o.normal(" ");if(t.id<10)o.normal(" ");o.normal("{");o.yellow(t.id);o.normal("} ");o.green(t.files.join(", "));if(t.names&&t.names.length>0){o.normal(" (");o.normal(t.names.join(", "));o.normal(")")}o.normal(" ");o.normal(r.formatSize(t.size));for(const e of t.parents){o.normal(" <{");o.yellow(e);o.normal("}>")}for(const e of t.siblings){o.normal(" ={");o.yellow(e);o.normal("}=")}for(const e of t.children){o.normal(" >{");o.yellow(e);o.normal("}<")}if(t.childrenByOrder){for(const e of Object.keys(t.childrenByOrder)){const s=t.childrenByOrder[e];o.normal(" ");o.magenta(`(${e}:`);for(const e of s){o.normal(" {");o.yellow(e);o.normal("}")}o.magenta(")")}}if(t.entry){o.yellow(" [entry]")}else if(t.initial){o.yellow(" [initial]")}if(t.rendered){o.green(" [rendered]")}if(t.recorded){o.green(" [recorded]")}if(t.reason){o.yellow(` ${t.reason}`)}a();if(t.origins){for(const e of t.origins){o.normal(" > ");if(e.reasons&&e.reasons.length){o.yellow(e.reasons.join(" "));o.normal(" ")}if(e.request){o.normal(e.request);o.normal(" ")}if(e.module){o.normal("[");o.normal(e.moduleId);o.normal("] ");const t=f[`$${e.module}`];if(t){o.bold(t.name);o.normal(" ")}}if(e.loc){o.normal(e.loc)}a()}}g(t," ")}}g(e,"");if(e.logging){for(const t of Object.keys(e.logging)){const s=e.logging[t];if(s.entries.length>0){a();if(s.debug){o.red("DEBUG ")}o.bold("LOG from "+t);a();let e="";for(const t of s.entries){let s=o.normal;let n=" ";switch(t.type){case u.clear:o.normal(`${e}-------`);a();continue;case u.error:s=o.red;n=" ";break;case u.warn:s=o.yellow;n=" ";break;case u.info:s=o.green;n=" ";break;case u.log:s=o.bold;break;case u.trace:case u.debug:s=o.normal;break;case u.status:s=o.magenta;n=" ";break;case u.profile:s=o.magenta;n="

";break;case u.profileEnd:s=o.magenta;n="

";break;case u.time:s=o.magenta;n=" ";break;case u.group:s=o.cyan;n="<-> ";break;case u.groupCollapsed:s=o.cyan;n="<+> ";break;case u.groupEnd:if(e.length>=2)e=e.slice(0,e.length-2);continue}if(t.message){for(const r of t.message.split("\n")){o.normal(`${e}${n}`);s(r);a()}}if(t.trace){for(const s of t.trace){o.normal(`${e}| ${s}`);a()}}switch(t.type){case u.group:e+=" ";break}}if(s.filteredEntries){o.normal(`+ ${s.filteredEntries} hidden lines`);a()}}}}if(e._showWarnings&&e.warnings){for(const t of e.warnings){a();o.yellow(`WARNING in ${t}`);a()}}if(e._showErrors&&e.errors){for(const t of e.errors){a();o.red(`ERROR in ${t}`);a()}}if(e.children){for(const n of e.children){const e=Stats.jsonToString(n,t);if(e){if(n.name){o.normal("Child ");o.bold(n.name);o.normal(":")}else{o.normal("Child")}a();s.push(" ");s.push(e.replace(/\n/g,"\n "));a()}}}if(e.needAdditionalPass){o.yellow("Compilation needs an additional pass and will compile again.")}while(s[s.length-1]==="\n"){s.pop()}return s.join("")}static presetToOptions(e){const t=typeof e==="string"&&e.toLowerCase()||e||"none";switch(t){case"none":return{all:false};case"verbose":return{entrypoints:true,chunkGroups:true,modules:false,chunks:true,chunkModules:true,chunkOrigins:true,depth:true,env:true,reasons:true,usedExports:true,providedExports:true,optimizationBailout:true,errorDetails:true,publicPath:true,logging:"verbose",exclude:false,maxModules:Infinity};case"detailed":return{entrypoints:true,chunkGroups:true,chunks:true,chunkModules:false,chunkOrigins:true,depth:true,usedExports:true,providedExports:true,optimizationBailout:true,errorDetails:true,publicPath:true,logging:true,exclude:false,maxModules:Infinity};case"minimal":return{all:false,modules:true,maxModules:0,errors:true,warnings:true,logging:"warn"};case"errors-only":return{all:false,errors:true,moduleTrace:true,logging:"error"};case"errors-warnings":return{all:false,errors:true,warnings:true,logging:"warn"};default:return{}}}static getChildOptions(e,t){let s;if(Array.isArray(e.children)){if(t{const{ConcatSource:n}=s(3745);const r=s(6346);const o="a".charCodeAt(0);const i="A".charCodeAt(0);const a="z".charCodeAt(0)-o+1;const u=/^function\s?\(\)\s?\{\r?\n?|\r?\n?\}$/g;const l=/^\t/gm;const c=/\r?\n/g;const h=/^([^a-zA-Z$_])/;const d=/[^a-zA-Z0-9$]+/g;const f=/\*\//g;const p=/[^a-zA-Z0-9_!§$()=\-^°]+/g;const m=/^-|-$/g;const g=(e,t)=>{const s=e.id+"";const n=t.id+"";if(sn)return 1;return 0};class Template{static getFunctionContent(e){return e.toString().replace(u,"").replace(l,"").replace(c,"\n")}static toIdentifier(e){if(typeof e!=="string")return"";return e.replace(h,"_$1").replace(d,"_")}static toComment(e){if(!e)return"";return`/*! ${e.replace(f,"* /")} */`}static toNormalComment(e){if(!e)return"";return`/* ${e.replace(f,"* /")} */`}static toPath(e){if(typeof e!=="string")return"";return e.replace(p,"-").replace(m,"")}static numberToIdentifer(e){if(en.id)s=n.id}if(s<16+(""+s).length){s=0}const n=e.map(e=>(e.id+"").length+2).reduce((e,t)=>e+t,-1);const r=s===0?t:16+(""+s).length+t;return r{return{id:t.id,source:s.render(t,o,{chunk:e})}});if(l&&l.length>0){for(const e of l){c.push({id:e,source:"false"})}}const h=Template.getModulesArrayBounds(c);if(h){const e=h[0];const t=h[1];if(e!==0){a.add(`Array(${e}).concat(`)}a.add("[\n");const s=new Map;for(const e of c){s.set(e.id,e)}for(let n=e;n<=t;n++){const t=s.get(n);if(n!==e){a.add(",\n")}a.add(`/* ${n} */`);if(t){a.add("\n");a.add(t.source)}}a.add("\n"+i+"]");if(e!==0){a.add(")")}}else{a.add("{\n");c.sort(g).forEach((e,t)=>{if(t!==0){a.add(",\n")}a.add(`\n/***/ ${JSON.stringify(e.id)}:\n`);a.add(e.source)});a.add(`\n\n${i}}`)}return a}}e.exports=Template},1891:(e,t,s)=>{"use strict";const n=s(1669).inspect.custom;class WebpackError extends Error{constructor(e){super(e);this.details=undefined;this.missing=undefined;this.origin=undefined;this.dependencies=undefined;this.module=undefined;Error.captureStackTrace(this,this.constructor)}[n](){return this.stack+(this.details?`\n${this.details}`:"")}}e.exports=WebpackError},6043:(e,t,s)=>{"use strict";const n=s(7794);const r=s(3445);const o=(e,t)=>{return t.size-e.size};const i=e=>{const t=new Map;const s=t=>{const s=e.getDependencyReference(r,t);if(!s){return}const n=s.module;if(!n){return}if(s.weak){return}a.add(n)};const n=e=>{u.push(e);i.push(e)};let r;let o;let i;let a;let u;for(const l of e.modules){i=[l];r=l;while(i.length>0){o=i.pop();a=new Set;u=[];if(o.variables){for(const e of o.variables){for(const t of e.dependencies)s(t)}}if(o.dependencies){for(const e of o.dependencies)s(e)}if(o.blocks){for(const e of o.blocks)n(e)}const e={modules:a,blocks:u};t.set(o,e)}}return t};const a=(e,t,s,r,a,u)=>{const l=e.getLogger("webpack.buildChunkGraph.visitModules");const{namedChunkGroups:c}=e;l.time("prepare");const h=i(e);const d=new Map;for(const e of t){d.set(e,{index:0,index2:0})}let f=0;let p=0;const m=new Map;const g=0;const y=1;const k=2;const w=3;const b=(e,t)=>{for(const s of t.chunks){const n=s.entryModule;e.push({action:y,block:n,module:n,chunk:s,chunkGroup:t})}s.set(t,{chunkGroup:t,minAvailableModules:new Set,minAvailableModulesOwned:true,availableModulesToBeMerged:[],skippedItems:[],resultingAvailableModules:undefined,children:undefined});return e};let _=t.reduce(b,[]).reverse();const v=new Map;const $=new Set;let x=[];l.timeEnd("prepare");let E;let O;let M;let A;let S;let C;const T=t=>{let s=m.get(t);if(s===undefined){s=c.get(t.chunkName);if(s&&s.isInitial()){e.errors.push(new n(t.chunkName,E,t.loc));s=M}else{s=e.addChunkInGroup(t.groupOptions||t.chunkName,E,t.loc,t.request);d.set(s,{index:0,index2:0});m.set(t,s);u.add(s)}}else{if(s.addOptions)s.addOptions(t.groupOptions);s.addOrigin(E,t.loc,t.request)}let o=r.get(M);if(!o)r.set(M,o=[]);o.push({block:t,chunkGroup:s});let i=v.get(M);if(i===undefined){i=new Set;v.set(M,i)}i.add(s);x.push({action:k,block:t,module:E,chunk:s.chunks[0],chunkGroup:s})};while(_.length){l.time("visiting");while(_.length){const e=_.pop();E=e.module;A=e.block;O=e.chunk;if(M!==e.chunkGroup){M=e.chunkGroup;const t=s.get(M);S=t.minAvailableModules;C=t.skippedItems}switch(e.action){case g:{if(S.has(E)){C.push(e);break}if(O.addModule(E)){E.addChunk(O)}else{break}}case y:{if(M!==undefined){const e=M.getModuleIndex(E);if(e===undefined){M.setModuleIndex(E,d.get(M).index++)}}if(E.index===null){E.index=f++}_.push({action:w,block:A,module:E,chunk:O,chunkGroup:M})}case k:{const e=h.get(A);const t=[];const s=[];for(const n of e.modules){if(O.containsModule(n)){continue}if(S.has(n)){t.push({action:g,block:n,module:n,chunk:O,chunkGroup:M});continue}s.push({action:g,block:n,module:n,chunk:O,chunkGroup:M})}for(let e=t.length-1;e>=0;e--){C.push(t[e])}for(let e=s.length-1;e>=0;e--){_.push(s[e])}for(const t of e.blocks)T(t);if(e.blocks.length>0&&E!==A){a.add(A)}break}case w:{if(M!==undefined){const e=M.getModuleIndex2(E);if(e===undefined){M.setModuleIndex2(E,d.get(M).index2++)}}if(E.index2===null){E.index2=p++}break}}}l.timeEnd("visiting");while(v.size>0){l.time("calculating available modules");for(const[e,t]of v){const n=s.get(e);let r=n.minAvailableModules;const o=new Set(r);for(const t of e.chunks){for(const e of t.modulesIterable){o.add(e)}}n.resultingAvailableModules=o;if(n.children===undefined){n.children=t}else{for(const e of t){n.children.add(e)}}for(const e of t){let t=s.get(e);if(t===undefined){t={chunkGroup:e,minAvailableModules:undefined,minAvailableModulesOwned:undefined,availableModulesToBeMerged:[],skippedItems:[],resultingAvailableModules:undefined,children:undefined};s.set(e,t)}t.availableModulesToBeMerged.push(o);$.add(t)}}v.clear();l.timeEnd("calculating available modules");if($.size>0){l.time("merging available modules");for(const e of $){const t=e.availableModulesToBeMerged;let s=e.minAvailableModules;if(t.length>1){t.sort(o)}let n=false;for(const r of t){if(s===undefined){s=r;e.minAvailableModules=s;e.minAvailableModulesOwned=false;n=true}else{if(e.minAvailableModulesOwned){for(const e of s){if(!r.has(e)){s.delete(e);n=true}}}else{for(const t of s){if(!r.has(t)){const o=new Set;const i=s[Symbol.iterator]();let a;while(!(a=i.next()).done){const e=a.value;if(e===t)break;o.add(e)}while(!(a=i.next()).done){const e=a.value;if(r.has(e)){o.add(e)}}s=o;e.minAvailableModulesOwned=true;e.minAvailableModules=o;if(M===e.chunkGroup){S=s}n=true;break}}}}}t.length=0;if(!n)continue;for(const t of e.skippedItems){_.push(t)}e.skippedItems.length=0;if(e.children!==undefined){const t=e.chunkGroup;for(const s of e.children){let e=v.get(t);if(e===undefined){e=new Set;v.set(t,e)}e.add(s)}}}$.clear();l.timeEnd("merging available modules")}}if(_.length===0){const e=_;_=x.reverse();x=e}}};const u=(e,t,s)=>{let n;const o=(e,t)=>{for(const s of e.chunks){for(const e of s.modulesIterable){if(!t.has(e))return false}}return true};const i=t=>{const s=t.chunkGroup;if(e.has(t.block))return true;if(o(s,n)){return false}return true};for(const[e,o]of t){if(o.length===0)continue;const t=s.get(e);n=t.resultingAvailableModules;for(let t=0;t{for(const s of t){if(s.getNumberOfParents()===0){for(const t of s.chunks){const s=e.chunks.indexOf(t);if(s>=0)e.chunks.splice(s,1);t.remove("unconnected")}s.remove("unconnected")}}};const c=(e,t)=>{const s=new Map;const n=new Set;const r=new Map;const o=new Set;a(e,t,r,s,o,n);u(o,s,r);l(e,n)};e.exports=c},2536:e=>{"use strict";e.exports=((e,t)=>{if(typeof e==="string"){if(typeof t==="string"){if(et)return 1;return 0}else if(typeof t==="object"){return 1}else{return 0}}else if(typeof e==="object"){if(typeof t==="string"){return-1}else if(typeof t==="object"){if("start"in e&&"start"in t){const s=e.start;const n=t.start;if(s.linen.line)return 1;if(s.columnn.column)return 1}if("name"in e&&"name"in t){if(e.namet.name)return 1}if("index"in e&&"index"in t){if(e.indext.index)return 1}return 0}else{return 0}}})},9440:e=>{"use strict";class DependencyReference{constructor(e,t,s=false,n=NaN){this.module=e;this.importedNames=t;this.weak=!!s;this.order=n}static sort(e){const t=new WeakMap;let s=0;for(const n of e){t.set(n,s++)}return e.sort((e,s)=>{const n=e.order;const r=s.order;if(isNaN(n)){if(!isNaN(r)){return 1}}else{if(isNaN(r)){return-1}if(n!==r){return n-r}}const o=t.get(e);const i=t.get(s);return o-i})}}e.exports=DependencyReference},6002:(e,t,s)=>{"use strict";const n=s(9821);class ModuleDependency extends n{constructor(e){super();this.request=e;this.userRequest=e}getResourceIdentifier(){return`module${this.request}`}}e.exports=ModuleDependency},7929:e=>{"use strict";const t=e=>{if(e===null)return"";if(typeof e==="string")return e;if(typeof e==="number")return`${e}`;if(typeof e==="object"){if("line"in e&&"column"in e){return`${e.line}:${e.column}`}else if("line"in e){return`${e.line}:?`}else if("index"in e){return`+${e.index}`}else{return""}}return""};const s=e=>{if(e===null)return"";if(typeof e==="string")return e;if(typeof e==="number")return`${e}`;if(typeof e==="object"){if("start"in e&&e.start&&"end"in e&&e.end){if(typeof e.start==="object"&&typeof e.start.line==="number"&&typeof e.end==="object"&&typeof e.end.line==="number"&&typeof e.end.column==="number"&&e.start.line===e.end.line){return`${t(e.start)}-${e.end.column}`}else{return`${t(e.start)}-${t(e.end)}`}}if("start"in e&&e.start){return t(e.start)}if("name"in e&&"index"in e){return`${e.name}[${e.index}]`}if("name"in e){return e.name}return t(e)}return""};e.exports=s},7225:(e,t)=>{"use strict";const s=Object.freeze({error:"error",warn:"warn",info:"info",log:"log",debug:"debug",trace:"trace",group:"group",groupCollapsed:"groupCollapsed",groupEnd:"groupEnd",profile:"profile",profileEnd:"profileEnd",time:"time",clear:"clear",status:"status"});t.LogType=s;const n=Symbol("webpack logger raw log method");const r=Symbol("webpack logger times");class WebpackLogger{constructor(e){this[n]=e}error(...e){this[n](s.error,e)}warn(...e){this[n](s.warn,e)}info(...e){this[n](s.info,e)}log(...e){this[n](s.log,e)}debug(...e){this[n](s.debug,e)}assert(e,...t){if(!e){this[n](s.error,t)}}trace(){this[n](s.trace,["Trace"])}clear(){this[n](s.clear)}status(...e){this[n](s.status,e)}group(...e){this[n](s.group,e)}groupCollapsed(...e){this[n](s.groupCollapsed,e)}groupEnd(...e){this[n](s.groupEnd,e)}profile(e){this[n](s.profile,[e])}profileEnd(e){this[n](s.profileEnd,[e])}time(e){this[r]=this[r]||new Map;this[r].set(e,process.hrtime())}timeLog(e){const t=this[r]&&this[r].get(e);if(!t){throw new Error(`No such label '${e}' for WebpackLogger.timeLog()`)}const o=process.hrtime(t);this[n](s.time,[e,...o])}timeEnd(e){const t=this[r]&&this[r].get(e);if(!t){throw new Error(`No such label '${e}' for WebpackLogger.timeEnd()`)}const o=process.hrtime(t);this[r].delete(e);this[n](s.time,[e,...o])}}t.Logger=WebpackLogger},4796:e=>{"use strict";class Semaphore{constructor(e){this.available=e;this.waiters=[];this._continue=this._continue.bind(this)}acquire(e){if(this.available>0){this.available--;e()}else{this.waiters.push(e)}}release(){this.available++;if(this.waiters.length>0){process.nextTick(this._continue)}}_continue(){if(this.available>0){if(this.waiters.length>0){this.available--;const e=this.waiters.pop();e()}}}}e.exports=Semaphore},4791:(e,t)=>{"use strict";var s;const n=e=>{if(e.length===0)return new Set;if(e.length===1)return new Set(e[0]);let t=Infinity;let s=-1;for(let n=0;n{if(e.size{"use strict";class SortableSet extends Set{constructor(e,t){super(e);this._sortFn=t;this._lastActiveSortFn=null;this._cache=undefined;this._cacheOrderIndependent=undefined}add(e){this._lastActiveSortFn=null;this._invalidateCache();this._invalidateOrderedCache();super.add(e);return this}delete(e){this._invalidateCache();this._invalidateOrderedCache();return super.delete(e)}clear(){this._invalidateCache();this._invalidateOrderedCache();return super.clear()}sortWith(e){if(this.size<=1||e===this._lastActiveSortFn){return}const t=Array.from(this).sort(e);super.clear();for(let e=0;e{"use strict";const n=s(1112);const r=1e3;class Hash{update(e,t){throw new n}digest(e){throw new n}}t.Hash=Hash;class BulkUpdateDecorator extends Hash{constructor(e){super();this.hash=e;this.buffer=""}update(e,t){if(t!==undefined||typeof e!=="string"||e.length>r){if(this.buffer.length>0){this.hash.update(this.buffer);this.buffer=""}this.hash.update(e,t)}else{this.buffer+=e;if(this.buffer.length>r){this.hash.update(this.buffer);this.buffer=""}}return this}digest(e){if(this.buffer.length>0){this.hash.update(this.buffer)}var t=this.hash.digest(e);return typeof t==="string"?t:t.toString()}}class DebugHash extends Hash{constructor(){super();this.string=""}update(e,t){if(typeof e!=="string")e=e.toString("utf-8");this.string+=e;return this}digest(e){return this.string.replace(/[^a-z0-9]+/gi,e=>Buffer.from(e).toString("hex"))}}e.exports=(e=>{if(typeof e==="function"){return new BulkUpdateDecorator(new e)}switch(e){case"debug":return new DebugHash;default:return new BulkUpdateDecorator(s(6417).createHash(e))}})},8540:(e,t,s)=>{"use strict";const n=s(5622);const r=(e,t)=>{if(t.startsWith("./")||t.startsWith("../"))return n.join(e,t);return t};const o=e=>{if(/^\/.*\/$/.test(e)){return false}return/^(?:[a-z]:\\|\/)/i.test(e)};const i=e=>e.replace(/\\/g,"/");const a=(e,t)=>{return t.split(/([|! ])/).map(t=>o(t)?i(n.relative(e,t)):t).join("")};t.makePathsRelative=((e,t,s)=>{if(!s)return a(e,t);const n=s.relativePaths||(s.relativePaths=new Map);let r;let o=n.get(e);if(o===undefined){n.set(e,o=new Map)}else{r=o.get(t)}if(r!==undefined){return r}else{const s=a(e,t);o.set(t,s);return s}});t.contextify=((e,t)=>{return t.split("!").map(t=>{const s=t.split("?",2);if(/^[a-zA-Z]:\\/.test(s[0])){s[0]=n.win32.relative(e,s[0]);if(!/^[a-zA-Z]:\\/.test(s[0])){s[0]=s[0].replace(/\\/g,"/")}}if(/^\//.test(s[0])){s[0]=n.posix.relative(e,s[0])}if(!/^(\.\.\/|\/|[a-zA-Z]:\\)/.test(s[0])){s[0]="./"+s[0]}return s.join("?")}).join("!")});const u=(e,t)=>{return t.split("!").map(t=>r(e,t)).join("!")};t.absolutify=u},1840:e=>{"use strict";e.exports=JSON.parse('{"definitions":{"Rule":{"description":"Filtering rule as regex or string.","anyOf":[{"instanceof":"RegExp","tsType":"RegExp"},{"type":"string","minLength":1}]},"Rules":{"description":"Filtering rules.","anyOf":[{"type":"array","items":{"description":"A rule condition.","oneOf":[{"$ref":"#/definitions/Rule"}]}},{"$ref":"#/definitions/Rule"}]}},"title":"TerserPluginOptions","type":"object","additionalProperties":false,"properties":{"test":{"description":"Include all modules that pass test assertion.","oneOf":[{"$ref":"#/definitions/Rules"}]},"include":{"description":"Include all modules matching any of these conditions.","oneOf":[{"$ref":"#/definitions/Rules"}]},"exclude":{"description":"Exclude all modules matching any of these conditions.","oneOf":[{"$ref":"#/definitions/Rules"}]},"cache":{"description":"Enable file caching. Ignored in webpack 5, for webpack 5 please use https://webpack.js.org/configuration/other-options/#cache.","anyOf":[{"type":"boolean"},{"type":"string"}]},"cacheKeys":{"description":"Allows you to override default cache keys. Ignored in webpack 5, for webpack 5 please use https://webpack.js.org/configuration/other-options/#cache.","instanceof":"Function"},"parallel":{"description":"Use multi-process parallel running to improve the build speed.","anyOf":[{"type":"boolean"},{"type":"integer"}]},"sourceMap":{"description":"Enables/Disables generation of source maps.","type":"boolean"},"minify":{"description":"Allows you to override default minify function.","instanceof":"Function"},"terserOptions":{"description":"Options for `terser`.","additionalProperties":true,"type":"object"},"extractComments":{"description":"Whether comments shall be extracted to a separate file.","anyOf":[{"type":"boolean"},{"type":"string"},{"instanceof":"RegExp"},{"instanceof":"Function"},{"additionalProperties":false,"properties":{"condition":{"anyOf":[{"type":"boolean"},{"type":"string"},{"instanceof":"RegExp"},{"instanceof":"Function"}]},"filename":{"anyOf":[{"type":"string"},{"instanceof":"Function"}]},"banner":{"anyOf":[{"type":"boolean"},{"type":"string"},{"instanceof":"Function"}]}},"type":"object"}]}}}')},2203:e=>{"use strict";e.exports=JSON.parse('{"name":"terser","description":"JavaScript parser, mangler/compressor and beautifier toolkit for ES6+","homepage":"https://terser.org","author":"Mihai Bazon (http://lisperator.net/)","license":"BSD-2-Clause","version":"5.1.0","engines":{"node":">=6.0.0"},"maintainers":["Fábio Santos "],"repository":"https://github.com/terser/terser","main":"dist/bundle.min.js","type":"module","exports":{".":{"import":"./main.js","require":"./dist/bundle.min.js"},"./package":{"default":"./package.json"},"./package.json":{"default":"./package.json"}},"types":"tools/terser.d.ts","bin":{"terser":"bin/terser"},"files":["bin","dist","lib","tools","LICENSE","README.md","CHANGELOG.md","PATRONS.md","main.js"],"dependencies":{"commander":"^2.20.0","source-map":"~0.6.1","source-map-support":"~0.5.12"},"devDependencies":{"@ls-lint/ls-lint":"^1.9.2","acorn":"^7.4.0","astring":"^1.4.1","eslint":"^7.0.0","eslump":"^2.0.0","esm":"^3.2.25","mocha":"^8.0.0","pre-commit":"^1.2.2","rimraf":"^3.0.0","rollup":"2.0.6","semver":"^7.1.3"},"scripts":{"test":"node test/compress.js && mocha test/mocha","test:compress":"node test/compress.js","test:mocha":"mocha test/mocha","lint":"eslint lib","lint-fix":"eslint --fix lib","ls-lint":"ls-lint","build":"rimraf dist/bundle* && rollup --config --silent","prepare":"npm run build","postversion":"echo \'Remember to update the changelog!\'"},"keywords":["uglify","terser","uglify-es","uglify-js","minify","minifier","javascript","ecmascript","es5","es6","es7","es8","es2015","es2016","es2017","async","await"],"eslintConfig":{"parserOptions":{"sourceType":"module","ecmaVersion":"2020"},"env":{"node":true,"browser":true,"es2020":true},"globals":{"describe":false,"it":false,"require":false,"global":false,"process":false},"rules":{"brace-style":["error","1tbs",{"allowSingleLine":true}],"quotes":["error","double","avoid-escape"],"no-debugger":"error","no-undef":"error","no-unused-vars":["error",{"varsIgnorePattern":"^_$"}],"no-tabs":"error","semi":["error","always"],"no-extra-semi":"error","no-irregular-whitespace":"error","space-before-blocks":["error","always"]}},"pre-commit":["lint-fix","ls-lint","test"]}')},9122:e=>{"use strict";e.exports={i8:"4.1.0"}},1618:e=>{"use strict";e.exports={i8:"4.44.1"}},6417:e=>{"use strict";e.exports=require("crypto")},9733:e=>{"use strict";e.exports=require("jest-worker")},6801:e=>{"use strict";e.exports=require("next/dist/compiled/cacache")},1844:e=>{"use strict";e.exports=require("next/dist/compiled/find-cache-dir")},6386:e=>{"use strict";e.exports=require("next/dist/compiled/neo-async")},3225:e=>{"use strict";e.exports=require("next/dist/compiled/schema-utils")},6241:e=>{"use strict";e.exports=require("next/dist/compiled/source-map")},4775:e=>{"use strict";e.exports=require("next/dist/compiled/terser")},2087:e=>{"use strict";e.exports=require("os")},5622:e=>{"use strict";e.exports=require("path")},1669:e=>{"use strict";e.exports=require("util")},4078:e=>{"use strict";e.exports=require("webpack")},3745:e=>{"use strict";e.exports=require("webpack-sources")},1432:e=>{"use strict";e.exports=require("webpack/lib/RequestShortener")}};var t={};function __webpack_require__(s){if(t[s]){return t[s].exports}var n=t[s]={id:s,loaded:false,exports:{}};var r=true;try{e[s](n,n.exports,__webpack_require__);r=false}finally{if(r)delete t[s]}n.loaded=true;return n.exports}(()=>{__webpack_require__.nmd=(e=>{e.paths=[];if(!e.children)e.children=[];return e})})();__webpack_require__.ab=__dirname+"/";return __webpack_require__(5245)})(); \ No newline at end of file diff --git a/packages/next/compiled/terser-webpack-plugin/minify.js b/packages/next/compiled/terser-webpack-plugin/minify.js deleted file mode 100644 index e03a96a8433f3..0000000000000 --- a/packages/next/compiled/terser-webpack-plugin/minify.js +++ /dev/null @@ -1,176 +0,0 @@ -"use strict"; - -const { - minify: terserMinify -} = require("next/dist/compiled/terser"); - -const buildTerserOptions = ({ - ecma, - parse = {}, - compress = {}, - mangle, - module, - output, - toplevel, - nameCache, - ie8, - - /* eslint-disable camelcase */ - keep_classnames, - keep_fnames, - - /* eslint-enable camelcase */ - safari10 -} = {}) => ({ - parse: { ...parse - }, - compress: typeof compress === 'boolean' ? compress : { ...compress - }, - // eslint-disable-next-line no-nested-ternary - mangle: mangle == null ? true : typeof mangle === 'boolean' ? mangle : { ...mangle - }, - output: { - beautify: false, - ...output - }, - // Ignoring sourceMap from options - sourceMap: null, - ecma, - keep_classnames, - keep_fnames, - ie8, - module, - nameCache, - safari10, - toplevel -}); - -function isObject(value) { - const type = typeof value; - return value != null && (type === 'object' || type === 'function'); -} - -const buildComments = (options, terserOptions, extractedComments) => { - const condition = {}; - const commentsOpts = terserOptions.output.comments; - const { - extractComments - } = options; - condition.preserve = typeof commentsOpts !== 'undefined' ? commentsOpts : false; - - if (typeof extractComments === 'boolean' && extractComments) { - condition.extract = 'some'; - } else if (typeof extractComments === 'string' || extractComments instanceof RegExp) { - condition.extract = extractComments; - } else if (typeof extractComments === 'function') { - condition.extract = extractComments; - } else if (isObject(extractComments)) { - condition.extract = typeof extractComments.condition === 'boolean' && extractComments.condition ? 'some' : typeof extractComments.condition !== 'undefined' ? extractComments.condition : 'some'; - } else { - // No extract - // Preserve using "commentsOpts" or "some" - condition.preserve = typeof commentsOpts !== 'undefined' ? commentsOpts : 'some'; - condition.extract = false; - } // Ensure that both conditions are functions - - - ['preserve', 'extract'].forEach(key => { - let regexStr; - let regex; - - switch (typeof condition[key]) { - case 'boolean': - condition[key] = condition[key] ? () => true : () => false; - break; - - case 'function': - break; - - case 'string': - if (condition[key] === 'all') { - condition[key] = () => true; - - break; - } - - if (condition[key] === 'some') { - condition[key] = (astNode, comment) => { - return (comment.type === 'comment2' || comment.type === 'comment1') && /@preserve|@lic|@cc_on|^\**!/i.test(comment.value); - }; - - break; - } - - regexStr = condition[key]; - - condition[key] = (astNode, comment) => { - return new RegExp(regexStr).test(comment.value); - }; - - break; - - default: - regex = condition[key]; - - condition[key] = (astNode, comment) => regex.test(comment.value); - - } - }); // Redefine the comments function to extract and preserve - // comments according to the two conditions - - return (astNode, comment) => { - if (condition.extract(astNode, comment)) { - const commentText = comment.type === 'comment2' ? `/*${comment.value}*/` : `//${comment.value}`; // Don't include duplicate comments - - if (!extractedComments.includes(commentText)) { - extractedComments.push(commentText); - } - } - - return condition.preserve(astNode, comment); - }; -}; - -async function minify(options) { - const { - name, - input, - inputSourceMap, - minify: minifyFn - } = options; - - if (minifyFn) { - return minifyFn({ - [name]: input - }, inputSourceMap); - } // Copy terser options - - - const terserOptions = buildTerserOptions(options.terserOptions); // Let terser generate a SourceMap - - if (inputSourceMap) { - terserOptions.sourceMap = { - asObject: true - }; - } - - const extractedComments = []; - terserOptions.output.comments = buildComments(options, terserOptions, extractedComments); - const result = await terserMinify({ - [name]: input - }, terserOptions); - return { ...result, - extractedComments - }; -} - -function transform(options) { - // 'use strict' => this === undefined (Clean Scope) - // Safer for possible security issues, albeit not critical at all here - // eslint-disable-next-line no-new-func, no-param-reassign - options = new Function('exports', 'require', 'module', '__filename', '__dirname', `'use strict'\nreturn ${options}`)(exports, require, module, __filename, __dirname); - return minify(options); -} - -module.exports.minify = minify; -module.exports.transform = transform; \ No newline at end of file diff --git a/packages/next/compiled/terser-webpack-plugin/package.json b/packages/next/compiled/terser-webpack-plugin/package.json deleted file mode 100644 index 7d3b56eec99e8..0000000000000 --- a/packages/next/compiled/terser-webpack-plugin/package.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"terser-webpack-plugin","main":"cjs.js","author":"webpack Contrib Team","license":"MIT"} diff --git a/packages/next/next-server/lib/router/router.ts b/packages/next/next-server/lib/router/router.ts index 8036ad1ba2854..857d7b21672e3 100644 --- a/packages/next/next-server/lib/router/router.ts +++ b/packages/next/next-server/lib/router/router.ts @@ -1207,6 +1207,7 @@ export default class Router implements BaseRouter { } }) } + parsedHref.pathname = removePathTrailingSlash(parsedHref.pathname!) return parsedHref } diff --git a/packages/next/package.json b/packages/next/package.json index 1f4a72fbdd2dc..307e0e21c1503 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -1,6 +1,6 @@ { "name": "next", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "description": "The React Framework", "main": "./dist/server/next.js", "license": "MIT", @@ -63,10 +63,10 @@ "@ampproject/toolbox-optimizer": "2.7.1-alpha.0", "@babel/runtime": "7.12.5", "@hapi/accept": "5.0.1", - "@next/env": "10.0.4-canary.4", - "@next/polyfill-module": "10.0.4-canary.4", - "@next/react-dev-overlay": "10.0.4-canary.4", - "@next/react-refresh-utils": "10.0.4-canary.4", + "@next/env": "10.0.4-canary.5", + "@next/polyfill-module": "10.0.4-canary.5", + "@next/react-dev-overlay": "10.0.4-canary.5", + "@next/react-refresh-utils": "10.0.4-canary.5", "ast-types": "0.13.2", "babel-plugin-transform-define": "2.0.0", "babel-plugin-transform-react-remove-prop-types": "0.4.24", @@ -85,6 +85,7 @@ "native-url": "0.3.4", "node-fetch": "2.6.1", "node-html-parser": "1.4.9", + "p-limit": "3.1.0", "path-browserify": "1.0.1", "pnp-webpack-plugin": "1.6.4", "postcss": "8.1.7", @@ -128,7 +129,7 @@ "@babel/preset-react": "7.12.5", "@babel/preset-typescript": "7.12.1", "@babel/types": "7.12.6", - "@next/polyfill-nomodule": "10.0.4-canary.4", + "@next/polyfill-nomodule": "10.0.4-canary.5", "@taskr/clear": "1.1.0", "@taskr/esnext": "1.1.0", "@taskr/watch": "1.1.0", @@ -214,7 +215,6 @@ "strip-ansi": "6.0.0", "taskr": "1.1.0", "terser": "5.5.1", - "terser-webpack-plugin": "4.1.0", "text-table": "0.2.0", "thread-loader": "2.1.3", "typescript": "3.8.3", diff --git a/packages/next/taskfile-ncc.js b/packages/next/taskfile-ncc.js index e6baf0d98f12b..fbc8337208394 100644 --- a/packages/next/taskfile-ncc.js +++ b/packages/next/taskfile-ncc.js @@ -18,19 +18,6 @@ module.exports = function (task) { Object.keys(assets).forEach((key) => { let data = assets[key].source - if ( - join(file.dir, key).endsWith('terser-webpack-plugin/dist/minify.js') - ) { - data = Buffer.from( - data - .toString() - .replace( - `require('terser')`, - `require("${options.externals['terser']}")` - ) - ) - } - this._.files.push({ data, base: basename(key), diff --git a/packages/next/taskfile.js b/packages/next/taskfile.js index fa2095487376e..eb3878a34b749 100644 --- a/packages/next/taskfile.js +++ b/packages/next/taskfile.js @@ -513,16 +513,6 @@ export async function ncc_web_vitals(task, opts) { .target('compiled/web-vitals') } -externals['terser-webpack-plugin'] = 'next/dist/compiled/terser-webpack-plugin' -export async function ncc_terser_webpack_plugin(task, opts) { - await task - .source( - opts.src || relative(__dirname, require.resolve('terser-webpack-plugin')) - ) - .ncc({ packageName: 'terser-webpack-plugin', externals }) - .target('compiled/terser-webpack-plugin') -} - externals['comment-json'] = 'next/dist/compiled/comment-json' export async function ncc_comment_json(task, opts) { await task @@ -612,7 +602,6 @@ export async function ncc(task) { 'ncc_thread_loader', 'ncc_unistore', 'ncc_web_vitals', - 'ncc_terser_webpack_plugin', 'ncc_comment_json', 'ncc_semver', ]) diff --git a/packages/next/types/misc.d.ts b/packages/next/types/misc.d.ts index a898e442f5e19..4f6f493ce6ec3 100644 --- a/packages/next/types/misc.d.ts +++ b/packages/next/types/misc.d.ts @@ -199,7 +199,6 @@ declare module 'next/dist/compiled/web-vitals' { export = m } -declare module 'next/dist/compiled/terser-webpack-plugin' declare module 'next/dist/compiled/comment-json' { import m from 'comment-json' export = m diff --git a/packages/react-dev-overlay/package.json b/packages/react-dev-overlay/package.json index 7177494407b87..cbcf99bbaf4cf 100644 --- a/packages/react-dev-overlay/package.json +++ b/packages/react-dev-overlay/package.json @@ -1,6 +1,6 @@ { "name": "@next/react-dev-overlay", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "description": "A development-only overlay for developing React applications.", "repository": { "url": "vercel/next.js", diff --git a/packages/react-refresh-utils/package.json b/packages/react-refresh-utils/package.json index 92bb584cf448b..3ec9902239f20 100644 --- a/packages/react-refresh-utils/package.json +++ b/packages/react-refresh-utils/package.json @@ -1,6 +1,6 @@ { "name": "@next/react-refresh-utils", - "version": "10.0.4-canary.4", + "version": "10.0.4-canary.5", "description": "An experimental package providing utilities for React Refresh.", "repository": { "url": "vercel/next.js", diff --git a/test/integration/trailing-slashes-href-resolving/pages/[slug].js b/test/integration/trailing-slashes-href-resolving/pages/[slug].js index f873b7ab9104b..b68cd09d335b6 100644 --- a/test/integration/trailing-slashes-href-resolving/pages/[slug].js +++ b/test/integration/trailing-slashes-href-resolving/pages/[slug].js @@ -9,3 +9,19 @@ export default function Page() { ) } + +export const getStaticProps = () => { + return { + props: { + hello: 'world', + random: Math.random(), + }, + } +} + +export const getStaticPaths = () => { + return { + paths: ['/world', '/top-level-slug'], + fallback: false, + } +} diff --git a/test/integration/trailing-slashes-href-resolving/pages/index.js b/test/integration/trailing-slashes-href-resolving/pages/index.js index 46e6e099364b3..3d60ad54b9b49 100644 --- a/test/integration/trailing-slashes-href-resolving/pages/index.js +++ b/test/integration/trailing-slashes-href-resolving/pages/index.js @@ -27,6 +27,10 @@ export default function Index() { to /top-level-slug/
+ + to /world/ + +
) } diff --git a/test/integration/trailing-slashes-href-resolving/test/index.test.js b/test/integration/trailing-slashes-href-resolving/test/index.test.js index eb4811538b44f..21cb030348f4e 100644 --- a/test/integration/trailing-slashes-href-resolving/test/index.test.js +++ b/test/integration/trailing-slashes-href-resolving/test/index.test.js @@ -1,8 +1,9 @@ /* eslint-env jest */ - +import assert from 'assert' import { join } from 'path' import webdriver from 'next-webdriver' import { + check, findPort, killApp, launchApp, @@ -16,7 +17,7 @@ let app let appPort const appDir = join(__dirname, '../') -const runTests = () => { +const runTests = (dev) => { it('should route to /blog/another/ correctly', async () => { const browser = await webdriver(appPort, '/') await browser.elementByCss('#to-blog-another').click() @@ -72,6 +73,25 @@ const runTests = () => { 'top level slug top-level-slug' ) }) + + if (!dev) { + it('should preload SSG routes correctly', async () => { + const browser = await webdriver(appPort, '/') + + await check(async () => { + const hrefs = await browser.eval(`Object.keys(window.next.router.sdc)`) + hrefs.sort() + + assert.deepEqual( + hrefs.map((href) => + new URL(href).pathname.replace(/^\/_next\/data\/[^/]+/, '') + ), + ['/top-level-slug.json', '/world.json'] + ) + return 'yes' + }, 'yes') + }) + } } describe('href resolving trailing-slash', () => { @@ -82,7 +102,7 @@ describe('href resolving trailing-slash', () => { }) afterAll(() => killApp(app)) - runTests() + runTests(true) }) describe('production mode', () => { diff --git a/yarn.lock b/yarn.lock index da0d1520a0c05..24bcc5bdf7d77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4233,7 +4233,7 @@ bytes@3.1.0, bytes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" -cacache@15.0.5, cacache@^15.0.5: +cacache@15.0.5: version "15.0.5" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== @@ -7126,7 +7126,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@3.3.1, find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: +find-cache-dir@3.3.1, find-cache-dir@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" dependencies: @@ -9512,15 +9512,6 @@ jest-worker@^26.0.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" - integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - js-base64@^2.1.8, js-base64@^2.1.9: version "2.5.1" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" @@ -11664,6 +11655,13 @@ p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" +p-limit@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -11676,13 +11674,6 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.0.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -14689,13 +14680,6 @@ serialize-javascript@^3.1.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" @@ -15664,21 +15648,6 @@ temp@^0.8.1: dependencies: rimraf "~2.6.2" -terser-webpack-plugin@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.1.0.tgz#6e9d6ae4e1a900d88ddce8da6a47507ea61f44bc" - integrity sha512-0ZWDPIP8BtEDZdChbufcXUigOYk6dOX/P/X0hWxqDDcVAQLb8Yy/0FAaemSfax3PAA67+DJR778oz8qVbmy4hA== - dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.3.0" - p-limit "^3.0.2" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^5.0.0" - webpack-sources "^1.4.3" - terser-webpack-plugin@^1.4.3: version "1.4.4" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" @@ -15720,15 +15689,6 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.1.0.tgz#1f4ab81c8619654fdded51f3157b001e1747281d" - integrity sha512-pwC1Jbzahz1ZPU87NQ8B3g5pKbhyJSiHih4gLH6WZiPU8mmS1IlGbB0A2Nuvkj/LCNsgIKctg6GkYwWCeTvXZQ== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -16538,7 +16498,7 @@ webpack-bundle-analyzer@3.6.1: opener "^1.5.1" ws "^6.0.0" -webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" dependencies: @@ -16977,3 +16937,8 @@ yauzl@^2.10.0: dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==