diff --git a/.alexignore b/.alexignore index 1bf6581c26b1e..e344f11148c54 100644 --- a/.alexignore +++ b/.alexignore @@ -1,2 +1,3 @@ CODE_OF_CONDUCT.md examples/ +**/*/LICENSE.md diff --git a/.alexrc b/.alexrc index 1f1de4b4382a9..d50d2433b6386 100644 --- a/.alexrc +++ b/.alexrc @@ -18,6 +18,7 @@ "host-hostess", "invalid", "remains", + "special", "white" ] } diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000000000..859c53d0aa414 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,33 @@ +[env] +CARGO_WORKSPACE_DIR = { value = "", relative = true } + +[build] + +rustdocflags = [] + +[target.x86_64-pc-windows-msvc] +linker = "rust-lld" + +[target.aarch64-unknown-linux-gnu] +linker = "aarch64-linux-gnu-gcc" + +[target.aarch64-unknown-linux-musl] +linker = "aarch64-linux-musl-gcc" +rustflags = [ + "--cfg", + "tokio_unstable", + "-Csymbol-mangling-version=v0", + "-Ctarget-feature=-crt-static", + "-Clink-arg=-lgcc", +] + +[target.armv7-unknown-linux-gnueabihf] +linker = "arm-linux-gnueabihf-gcc" + +[target.'cfg(all())'] +rustflags = [ + "--cfg", + "tokio_unstable", + "-Csymbol-mangling-version=v0", + "-Aclippy::too_many_arguments", +] diff --git a/.config/nextest.toml b/.config/nextest.toml new file mode 100644 index 0000000000000..f16e9507d35ba --- /dev/null +++ b/.config/nextest.toml @@ -0,0 +1,9 @@ +[[profile.default.overrides]] +filter = "package(next-dev-tests)" +# Default is 100ms. Extending this addresses false positives in the +# next-dev integration tests. +leak-timeout = "500ms" +retries = 2 +slow-timeout = "60s" +threads-required = 2 +failure-output = "immediate-final" \ No newline at end of file diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 7efa40b087aa9..2a85a75b11a71 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -12,7 +12,11 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 \ libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \ libxdamage1 libxss1 libxtst6 libappindicator1 libnss3 libasound2 \ - libatk1.0-0 libc6 libdrm-dev libgbm-dev ca-certificates fonts-liberation lsb-release xdg-utils wget + libatk1.0-0 libc6 libdrm-dev libgbm-dev ca-certificates fonts-liberation lsb-release xdg-utils wget \ + # Chromium for running Turbopack benchmarks + chromium \ + # Used for plotters graph visualizations in turbopack benchmarks + libfontconfig1-dev # [Optional] Uncomment if you want to install an additional version of node using nvm # ARG EXTRA_NODE_VERSION=10 diff --git a/.eslintignore b/.eslintignore index d3507e8b96a9d..1909ecb580b1a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,7 @@ node_modules **/.next/** **/_next/** +**/.vscode/** **/dist/** e2e-tests/** examples/with-eslint/** @@ -20,6 +21,7 @@ packages/react-dev-overlay/lib/** **/__tmp__/** .github/actions/next-stats-action/.work .github/actions/issue-validator/index.mjs +.github/actions/issue-labeler/lib/index.js packages/next-codemod/transforms/__testfixtures__/**/* packages/next-codemod/transforms/__tests__/**/* packages/next-codemod/**/*.js diff --git a/.eslintrc.json b/.eslintrc.json index b40e889bddedd..b0e16775944ce 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -63,7 +63,7 @@ "@typescript-eslint/consistent-type-assertions": "warn", "no-array-constructor": "off", "@typescript-eslint/no-array-constructor": "warn", - "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-namespace": "off", "no-use-before-define": "off", "@typescript-eslint/no-use-before-define": [ "warn", diff --git a/.github/.kodiak.toml b/.github/.kodiak.toml index ee535afe225c9..c993778527988 100644 --- a/.github/.kodiak.toml +++ b/.github/.kodiak.toml @@ -6,7 +6,7 @@ automerge_label = "ready to land" require_automerge_label = false method = "squash" delete_branch_on_merge = true -optimistic_updates = true +optimistic_updates = false prioritize_ready_to_merge = true notify_on_conflict = false @@ -16,4 +16,4 @@ body = "pull_request_body" include_coauthors= true include_pr_number = true body_type = "markdown" -strip_html_comments = true +strip_html_comments = true \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 05b9cfd2faf1f..656d628179b73 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,24 +1,34 @@ # Learn how to add code owners here: # https://help.github.com/en/articles/about-code-owners -* @timneutkens @ijjk @shuding @huozhi @feedthejim -/.github/ @timneutkens @ijjk @shuding @styfle @huozhi @padmaia @balazsorban44 @jankaifer -/docs/ @timneutkens @ijjk @shuding @styfle @huozhi @padmaia @leerob @balazsorban44 @jankaifer -/errors/ @timneutkens @ijjk @shuding @styfle @huozhi @padmaia @leerob @balazsorban44 @jankaifer -/examples/ @timneutkens @ijjk @shuding @leerob @steven-tey @balazsorban44 @jankaifer +* @timneutkens @ijjk @shuding @huozhi @feedthejim +/.git* @vercel/next-js +/docs/ @vercel/next-js @leerob +/errors/ @vercel/next-js @leerob +/examples/ @vercel/next-js @leerob @steven-tey +/scripts/ @vercel/next-js +/.alex* @vercel/next-js @leerob +/.eslint* @vercel/next-js @leerob +/.prettier* @vercel/next-js @leerob +/*.md @vercel/next-js @leerob +/packages/create-next-app/ @vercel/next-js +/pnpm-lock.yaml @vercel/next-js @vercel/web-tooling -# SWC Build & Telemetry (@padmaia) +# Image Component (@styfle) -/packages/next/build/ @timneutkens @ijjk @shuding @padmaia @huozhi -/packages/next/telemetry/ @timneutkens @ijjk @shuding @padmaia -/packages/next-swc/ @timneutkens @ijjk @shuding @vercel/web-tooling -/packages/next/build/swc/ @timneutkens @ijjk @shuding @vercel/web-tooling +/**/*image* @timneutkens @ijjk @shuding @styfle @huozhi +/**/*image*/** @timneutkens @ijjk @shuding @styfle @huozhi +/packages/next/client/use-intersection.tsx @timneutkens @ijjk @shuding @styfle +/packages/next/server/lib/squoosh/ @timneutkens @ijjk @shuding @styfle +/packages/next/server/serve-static.ts @timneutkens @ijjk @shuding @styfle @huozhi +/packages/next/server/config.ts @timneutkens @ijjk @shuding @styfle @huozhi -# Image Component (@styfle) +# Tooling & Telemetry -/**/*image* @timneutkens @ijjk @shuding @styfle -/**/*image*/** @timneutkens @ijjk @shuding @styfle -/packages/next/client/use-intersection.tsx @timneutkens @ijjk @shuding @styfle -/packages/next/server/lib/squoosh/ @timneutkens @ijjk @shuding @styfle -/packages/next/server/serve-static.ts @timneutkens @ijjk @shuding @styfle -/packages/next/server/config.ts @timneutkens @ijjk @shuding @styfle +/packages/next/src/build/ @timneutkens @ijjk @shuding @vercel/web-tooling @huozhi +/packages/next/src/telemetry/ @timneutkens @ijjk @shuding @padmaia +/packages/next-swc/ @timneutkens @ijjk @shuding @vercel/web-tooling +Cargo.toml @timneutkens @ijjk @shuding @vercel/web-tooling +Cargo.lock @timneutkens @ijjk @shuding @vercel/web-tooling +/.cargo/config.toml @timneutkens @ijjk @shuding @vercel/web-tooling +/.config/nextest.toml @timneutkens @ijjk @shuding @vercel/web-tooling \ No newline at end of file diff --git a/.github/DISCUSSION_TEMPLATE/help.yml b/.github/DISCUSSION_TEMPLATE/help.yml new file mode 100644 index 0000000000000..d24bc6a930f49 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/help.yml @@ -0,0 +1,20 @@ +body: + - type: textarea + attributes: + label: Summary + description: What do you need help with? + validations: + required: true + - type: textarea + attributes: + label: Additional information + description: Any code snippets, error messages, or dependency details that may be related? (`next info`) + render: js + validations: + required: false + - type: input + attributes: + label: Example + description: A link to a minimal reproduction is helpful for collaborative debugging! + validations: + required: false diff --git a/.github/DISCUSSION_TEMPLATE/ideas.yml b/.github/DISCUSSION_TEMPLATE/ideas.yml new file mode 100644 index 0000000000000..6c21881712147 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/ideas.yml @@ -0,0 +1,33 @@ +body: + - type: textarea + attributes: + label: Goals + description: Short list of what the feature request aims to address? + value: | + 1. + 2. + 3. + validations: + required: true + - type: textarea + attributes: + label: Non-Goals + description: Short list of what the feature request _does not_ aim to address? + value: | + 1. + 2. + 3. + validations: + required: false + - type: textarea + attributes: + label: Background + description: Discuss prior art, why do you think this feature is needed? Are there current alternatives? + validations: + required: true + - type: textarea + attributes: + label: Proposal + description: How should this feature be implemented? Are you interested in contributing? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/1.bug_report.yml b/.github/ISSUE_TEMPLATE/1.bug_report.yml index 5c655d4fe0660..28340adfd5cb7 100644 --- a/.github/ISSUE_TEMPLATE/1.bug_report.yml +++ b/.github/ISSUE_TEMPLATE/1.bug_report.yml @@ -4,14 +4,14 @@ labels: ['template: bug'] body: - type: markdown attributes: - value: 'NOTE: [examples](https://github.com/vercel/next.js/tree/canary/examples) related issue should be reported using [this](https://github.com/vercel/next.js/issues/new?assignees=&labels=type%3A+example%2Ctemplate%3A+bug&template=2.example_bug_report.yml) issue template instead.' - - type: markdown - attributes: - value: If you leave out sections there is a high likelihood it will be moved to the GitHub Discussions ["Help" section](https://github.com/vercel/next.js/discussions/categories/help). + value: | + *Note:* If you leave out sections, the issue might be moved to the ["Help" section](https://github.com/vercel/next.js/discussions/categories/help). + [examples](https://github.com/vercel/next.js/tree/canary/examples) related issue should be reported using [this](https://github.com/vercel/next.js/issues/new?assignees=&labels=type%3A+example%2Ctemplate%3A+bug&template=2.example_bug_report.yml) issue template instead. + Feature requests should be opened as [discussions](https://github.com/vercel/next.js/discussions/new?category=ideas). [Read more](https://github.com/vercel/next.js/blob/canary/contributing/core/adding-features.md). - type: checkboxes attributes: label: Verify canary release - description: '`next@canary` is the canary version of Next.js that ships daily. It includes all features and fixes that have not been released to the stable version yet. Think of canary as a public beta. Some issues may already be fixed in the canary version, so please verify that your issue reproduces before opening a new issue.' + description: 'Please run `npm install next@canary` to try the canary version of Next.js that ships daily. It includes all features and fixes that have not been released to the stable version yet. Some issues may already be fixed in the canary version, so please verify that your issue reproduces before opening a new issue.' options: - label: I verified that the issue exists in the latest Next.js canary release required: true @@ -19,6 +19,7 @@ body: attributes: label: Provide environment information description: Please run `next info` in the root directory of your project and paste the results. You might need to use `npx --no-install next info` if next is not in the current PATH. + render: bash validations: required: true - type: dropdown @@ -31,26 +32,29 @@ body: - 'Data fetching (gS(S)P, getInitialProps)' - 'Dynamic imports (next/dynamic)' - 'ESLint (eslint-config-next)' - - 'Font optimization (@next/font)' + - 'Font optimization (next/font)' - 'Image optimization (next/image, next/legacy/image)' - 'Internationalization (i18n)' - 'Jest (next/jest)' - 'MDX (@next/mdx)' - 'Metadata (metadata, generateMetadata, next/head, head.js)' - 'Middleware / Edge (API routes, runtime)' + - 'Operating System (Windows, MacOS, Linux)' - 'Package manager (npm, pnpm, Yarn)' - 'Routing (next/router, next/navigation, next/link)' - 'Script optimization (next/script)' - 'Standalone mode (output: "standalone")' - - 'Static HTML Export (next export)' + - 'Static HTML Export (output: "export")' - 'SWC minifier (swcMinify: true)' - 'SWC transpilation' - 'Turbopack (--turbo)' - - 'TypeScript' + - 'TypeScript (plugin, built-in types)' - type: input attributes: label: Link to the code that reproduces this issue - description: A link to a GitHub repository, a [StackBlitz](https://stackblitz.com/fork/github/vercel/next.js/tree/canary/examples/reproduction-template), or a [CodeSandbox](https://codesandbox.io/p/sandbox/github/vercel/next.js/tree/canary/examples/reproduction-template) minimal reproduction. Minimal reproductions should be created from our [bug report template with `npx create-next-app -e reproduction-template`](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template) and should include only changes that contribute to the issue. + description: | + A link to a [GitHub repository](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template) or a [CodeSandbox](https://codesandbox.io/p/sandbox/github/vercel/next.js/tree/canary/examples/reproduction-template) minimal reproduction. Minimal reproductions should be created from our [bug report template with `npx create-next-app -e reproduction-template`](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template) and should include only changes that contribute to the issue. + To report an App Router related issue, you can use these templates: [CodeSandbox](https://codesandbox.io/p/sandbox/github/vercel/next.js/tree/canary/examples/reproduction-template-app-dir) or [`npx create-next-app -e reproduction-template-app-dir`](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template-app-dir) validations: required: true - type: textarea @@ -87,4 +91,4 @@ body: - type: input attributes: label: How are you deploying your application? (if relevant) - description: 'For example: next start, next export, Vercel, Other platform' + description: 'For example: next start, Vercel, Other platform' diff --git a/.github/ISSUE_TEMPLATE/2.example_bug_report.yml b/.github/ISSUE_TEMPLATE/2.example_bug_report.yml index 8f5a8e5919a86..04c4d53cbb9bb 100644 --- a/.github/ISSUE_TEMPLATE/2.example_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/2.example_bug_report.yml @@ -4,14 +4,13 @@ labels: ['area: examples'] body: - type: markdown attributes: - value: Thanks for taking the time to file a bug report for [one of the examples](https://github.com/vercel/next.js/tree/canary/examples)! Please fill out this form as completely as possible. - - type: markdown - attributes: - value: If you leave out sections there is a high likelihood it will be moved to the GitHub Discussions ["Help" section](https://github.com/vercel/next.js/discussions/categories/help). + value: | + *Note:* If you leave out sections, the issue might be moved to the ["Help" section](https://github.com/vercel/next.js/discussions/categories/help). + Thanks for taking the time to file a bug report for [one of the examples](https://github.com/vercel/next.js/tree/canary/examples)! Please fill out this form as completely as possible. - type: checkboxes attributes: label: Verify canary release - description: '`next@canary` is the canary version of Next.js that ships daily. It includes all features and fixes that have not been released to the stable version yet. Think of canary as a public beta. Some issues may already be fixed in the canary version, so please verify that your issue reproduces before opening a new issue.' + description: 'Please run `npm install next@canary` to try the canary version of Next.js that ships daily. It includes all features and fixes that have not been released to the stable version yet. Some issues may already be fixed in the canary version, so please verify that your issue reproduces before opening a new issue.' options: - label: I verified that the issue exists in the latest Next.js canary release required: true @@ -19,6 +18,7 @@ body: attributes: label: Provide environment information description: Please run `next info` in the root directory of your project and paste the results. You might need to use `npx --no-install next info` if next is not in the current PATH. + render: bash validations: required: true - type: input @@ -34,7 +34,7 @@ body: - type: input attributes: label: How are you deploying your application? (if relevant) - description: 'For example: next start, next export, Vercel, Other platform' + description: 'For example: next start, Vercel, Other platform' - type: textarea attributes: label: Describe the Bug diff --git a/.github/ISSUE_TEMPLATE/3.feature_request.yml b/.github/ISSUE_TEMPLATE/3.feature_request.yml deleted file mode 100644 index 2655aff44d149..0000000000000 --- a/.github/ISSUE_TEMPLATE/3.feature_request.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Feature Request -description: Create a feature request for the Next.js core -labels: 'template: story' -body: - - type: markdown - attributes: - value: Thanks for taking the time to file a feature request! Please fill out this form as completely as possible. - - type: markdown - attributes: - value: 'Feature requests will be converted to the GitHub Discussions "Ideas" section.' - - type: textarea - attributes: - label: Describe the feature you'd like to request - description: A clear and concise description of what you want and what your use case is. - validations: - required: true - - type: textarea - attributes: - label: Describe the solution you'd like - description: A clear and concise description of what you want to happen. - validations: - required: true - - type: textarea - attributes: - label: Describe alternatives you've considered - description: A clear and concise description of any alternative solutions or features you've considered. - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 5cb26d8d1312c..ab99b7cc78918 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,3 +3,6 @@ contact_links: - name: Ask a question url: https://github.com/vercel/next.js/discussions about: Ask questions and discuss with other community members + - name: Feature request + url: https://github.com/vercel/next.js/discussions/new?category=ideas + about: Feature requests should be opened as discussions diff --git a/.github/actions/issue-labeler/.gitignore b/.github/actions/issue-labeler/.gitignore new file mode 100644 index 0000000000000..40b878db5b1c9 --- /dev/null +++ b/.github/actions/issue-labeler/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/.github/actions/issue-labeler/lib/index.js b/.github/actions/issue-labeler/lib/index.js new file mode 100644 index 0000000000000..fc3d2508e46cb --- /dev/null +++ b/.github/actions/issue-labeler/lib/index.js @@ -0,0 +1,9111 @@ +import { createRequire as __WEBPACK_EXTERNAL_createRequire } from 'module' +var __webpack_modules__ = { + 7351: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + Object.defineProperty(p, '__esModule', { value: true }) + p.issue = p.issueCommand = void 0 + const s = r(a(2037)) + const i = a(5278) + function issueCommand(e, p, a) { + const d = new Command(e, p, a) + process.stdout.write(d.toString() + s.EOL) + } + p.issueCommand = issueCommand + function issue(e, p = '') { + issueCommand(e, {}, p) + } + p.issue = issue + const o = '::' + class Command { + constructor(e, p, a) { + if (!e) { + e = 'missing.command' + } + this.command = e + this.properties = p + this.message = a + } + toString() { + let e = o + this.command + if (this.properties && Object.keys(this.properties).length > 0) { + e += ' ' + let p = true + for (const a in this.properties) { + if (this.properties.hasOwnProperty(a)) { + const d = this.properties[a] + if (d) { + if (p) { + p = false + } else { + e += ',' + } + e += `${a}=${escapeProperty(d)}` + } + } + } + } + e += `${o}${escapeData(this.message)}` + return e + } + } + function escapeData(e) { + return i + .toCommandValue(e) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + } + function escapeProperty(e) { + return i + .toCommandValue(e) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C') + } + }, + 2186: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + var s = + (this && this.__awaiter) || + function (e, p, a, d) { + function adopt(e) { + return e instanceof a + ? e + : new a(function (p) { + p(e) + }) + } + return new (a || (a = Promise))(function (a, t) { + function fulfilled(e) { + try { + step(d.next(e)) + } catch (e) { + t(e) + } + } + function rejected(e) { + try { + step(d['throw'](e)) + } catch (e) { + t(e) + } + } + function step(e) { + e.done ? a(e.value) : adopt(e.value).then(fulfilled, rejected) + } + step((d = d.apply(e, p || [])).next()) + }) + } + Object.defineProperty(p, '__esModule', { value: true }) + p.getIDToken = + p.getState = + p.saveState = + p.group = + p.endGroup = + p.startGroup = + p.info = + p.notice = + p.warning = + p.error = + p.debug = + p.isDebug = + p.setFailed = + p.setCommandEcho = + p.setOutput = + p.getBooleanInput = + p.getMultilineInput = + p.getInput = + p.addPath = + p.setSecret = + p.exportVariable = + p.ExitCode = + void 0 + const i = a(7351) + const o = a(717) + const n = a(5278) + const l = r(a(2037)) + const m = r(a(1017)) + const u = a(8041) + var c + ;(function (e) { + e[(e['Success'] = 0)] = 'Success' + e[(e['Failure'] = 1)] = 'Failure' + })((c = p.ExitCode || (p.ExitCode = {}))) + function exportVariable(e, p) { + const a = n.toCommandValue(p) + process.env[e] = a + const d = process.env['GITHUB_ENV'] || '' + if (d) { + return o.issueFileCommand('ENV', o.prepareKeyValueMessage(e, p)) + } + i.issueCommand('set-env', { name: e }, a) + } + p.exportVariable = exportVariable + function setSecret(e) { + i.issueCommand('add-mask', {}, e) + } + p.setSecret = setSecret + function addPath(e) { + const p = process.env['GITHUB_PATH'] || '' + if (p) { + o.issueFileCommand('PATH', e) + } else { + i.issueCommand('add-path', {}, e) + } + process.env['PATH'] = `${e}${m.delimiter}${process.env['PATH']}` + } + p.addPath = addPath + function getInput(e, p) { + const a = process.env[`INPUT_${e.replace(/ /g, '_').toUpperCase()}`] || '' + if (p && p.required && !a) { + throw new Error(`Input required and not supplied: ${e}`) + } + if (p && p.trimWhitespace === false) { + return a + } + return a.trim() + } + p.getInput = getInput + function getMultilineInput(e, p) { + const a = getInput(e, p) + .split('\n') + .filter((e) => e !== '') + if (p && p.trimWhitespace === false) { + return a + } + return a.map((e) => e.trim()) + } + p.getMultilineInput = getMultilineInput + function getBooleanInput(e, p) { + const a = ['true', 'True', 'TRUE'] + const d = ['false', 'False', 'FALSE'] + const t = getInput(e, p) + if (a.includes(t)) return true + if (d.includes(t)) return false + throw new TypeError( + `Input does not meet YAML 1.2 "Core Schema" specification: ${e}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\`` + ) + } + p.getBooleanInput = getBooleanInput + function setOutput(e, p) { + const a = process.env['GITHUB_OUTPUT'] || '' + if (a) { + return o.issueFileCommand('OUTPUT', o.prepareKeyValueMessage(e, p)) + } + process.stdout.write(l.EOL) + i.issueCommand('set-output', { name: e }, n.toCommandValue(p)) + } + p.setOutput = setOutput + function setCommandEcho(e) { + i.issue('echo', e ? 'on' : 'off') + } + p.setCommandEcho = setCommandEcho + function setFailed(e) { + process.exitCode = c.Failure + error(e) + } + p.setFailed = setFailed + function isDebug() { + return process.env['RUNNER_DEBUG'] === '1' + } + p.isDebug = isDebug + function debug(e) { + i.issueCommand('debug', {}, e) + } + p.debug = debug + function error(e, p = {}) { + i.issueCommand( + 'error', + n.toCommandProperties(p), + e instanceof Error ? e.toString() : e + ) + } + p.error = error + function warning(e, p = {}) { + i.issueCommand( + 'warning', + n.toCommandProperties(p), + e instanceof Error ? e.toString() : e + ) + } + p.warning = warning + function notice(e, p = {}) { + i.issueCommand( + 'notice', + n.toCommandProperties(p), + e instanceof Error ? e.toString() : e + ) + } + p.notice = notice + function info(e) { + process.stdout.write(e + l.EOL) + } + p.info = info + function startGroup(e) { + i.issue('group', e) + } + p.startGroup = startGroup + function endGroup() { + i.issue('endgroup') + } + p.endGroup = endGroup + function group(e, p) { + return s(this, void 0, void 0, function* () { + startGroup(e) + let a + try { + a = yield p() + } finally { + endGroup() + } + return a + }) + } + p.group = group + function saveState(e, p) { + const a = process.env['GITHUB_STATE'] || '' + if (a) { + return o.issueFileCommand('STATE', o.prepareKeyValueMessage(e, p)) + } + i.issueCommand('save-state', { name: e }, n.toCommandValue(p)) + } + p.saveState = saveState + function getState(e) { + return process.env[`STATE_${e}`] || '' + } + p.getState = getState + function getIDToken(e) { + return s(this, void 0, void 0, function* () { + return yield u.OidcClient.getIDToken(e) + }) + } + p.getIDToken = getIDToken + var v = a(1327) + Object.defineProperty(p, 'summary', { + enumerable: true, + get: function () { + return v.summary + }, + }) + var h = a(1327) + Object.defineProperty(p, 'markdownSummary', { + enumerable: true, + get: function () { + return h.markdownSummary + }, + }) + var g = a(2981) + Object.defineProperty(p, 'toPosixPath', { + enumerable: true, + get: function () { + return g.toPosixPath + }, + }) + Object.defineProperty(p, 'toWin32Path', { + enumerable: true, + get: function () { + return g.toWin32Path + }, + }) + Object.defineProperty(p, 'toPlatformPath', { + enumerable: true, + get: function () { + return g.toPlatformPath + }, + }) + }, + 717: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + Object.defineProperty(p, '__esModule', { value: true }) + p.prepareKeyValueMessage = p.issueFileCommand = void 0 + const s = r(a(7147)) + const i = r(a(2037)) + const o = a(5840) + const n = a(5278) + function issueFileCommand(e, p) { + const a = process.env[`GITHUB_${e}`] + if (!a) { + throw new Error( + `Unable to find environment variable for file command ${e}` + ) + } + if (!s.existsSync(a)) { + throw new Error(`Missing file at path: ${a}`) + } + s.appendFileSync(a, `${n.toCommandValue(p)}${i.EOL}`, { + encoding: 'utf8', + }) + } + p.issueFileCommand = issueFileCommand + function prepareKeyValueMessage(e, p) { + const a = `ghadelimiter_${o.v4()}` + const d = n.toCommandValue(p) + if (e.includes(a)) { + throw new Error( + `Unexpected input: name should not contain the delimiter "${a}"` + ) + } + if (d.includes(a)) { + throw new Error( + `Unexpected input: value should not contain the delimiter "${a}"` + ) + } + return `${e}<<${a}${i.EOL}${d}${i.EOL}${a}` + } + p.prepareKeyValueMessage = prepareKeyValueMessage + }, + 8041: function (e, p, a) { + var d = + (this && this.__awaiter) || + function (e, p, a, d) { + function adopt(e) { + return e instanceof a + ? e + : new a(function (p) { + p(e) + }) + } + return new (a || (a = Promise))(function (a, t) { + function fulfilled(e) { + try { + step(d.next(e)) + } catch (e) { + t(e) + } + } + function rejected(e) { + try { + step(d['throw'](e)) + } catch (e) { + t(e) + } + } + function step(e) { + e.done ? a(e.value) : adopt(e.value).then(fulfilled, rejected) + } + step((d = d.apply(e, p || [])).next()) + }) + } + Object.defineProperty(p, '__esModule', { value: true }) + p.OidcClient = void 0 + const t = a(6255) + const r = a(5526) + const s = a(2186) + class OidcClient { + static createHttpClient(e = true, p = 10) { + const a = { allowRetries: e, maxRetries: p } + return new t.HttpClient( + 'actions/oidc-client', + [new r.BearerCredentialHandler(OidcClient.getRequestToken())], + a + ) + } + static getRequestToken() { + const e = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'] + if (!e) { + throw new Error( + 'Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable' + ) + } + return e + } + static getIDTokenUrl() { + const e = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'] + if (!e) { + throw new Error( + 'Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable' + ) + } + return e + } + static getCall(e) { + var p + return d(this, void 0, void 0, function* () { + const a = OidcClient.createHttpClient() + const d = yield a.getJson(e).catch((e) => { + throw new Error( + `Failed to get ID Token. \n \n Error Code : ${e.statusCode}\n \n Error Message: ${e.result.message}` + ) + }) + const t = (p = d.result) === null || p === void 0 ? void 0 : p.value + if (!t) { + throw new Error('Response json body do not have ID Token field') + } + return t + }) + } + static getIDToken(e) { + return d(this, void 0, void 0, function* () { + try { + let p = OidcClient.getIDTokenUrl() + if (e) { + const a = encodeURIComponent(e) + p = `${p}&audience=${a}` + } + s.debug(`ID token url is ${p}`) + const a = yield OidcClient.getCall(p) + s.setSecret(a) + return a + } catch (e) { + throw new Error(`Error message: ${e.message}`) + } + }) + } + } + p.OidcClient = OidcClient + }, + 2981: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + Object.defineProperty(p, '__esModule', { value: true }) + p.toPlatformPath = p.toWin32Path = p.toPosixPath = void 0 + const s = r(a(1017)) + function toPosixPath(e) { + return e.replace(/[\\]/g, '/') + } + p.toPosixPath = toPosixPath + function toWin32Path(e) { + return e.replace(/[/]/g, '\\') + } + p.toWin32Path = toWin32Path + function toPlatformPath(e) { + return e.replace(/[/\\]/g, s.sep) + } + p.toPlatformPath = toPlatformPath + }, + 1327: function (e, p, a) { + var d = + (this && this.__awaiter) || + function (e, p, a, d) { + function adopt(e) { + return e instanceof a + ? e + : new a(function (p) { + p(e) + }) + } + return new (a || (a = Promise))(function (a, t) { + function fulfilled(e) { + try { + step(d.next(e)) + } catch (e) { + t(e) + } + } + function rejected(e) { + try { + step(d['throw'](e)) + } catch (e) { + t(e) + } + } + function step(e) { + e.done ? a(e.value) : adopt(e.value).then(fulfilled, rejected) + } + step((d = d.apply(e, p || [])).next()) + }) + } + Object.defineProperty(p, '__esModule', { value: true }) + p.summary = + p.markdownSummary = + p.SUMMARY_DOCS_URL = + p.SUMMARY_ENV_VAR = + void 0 + const t = a(2037) + const r = a(7147) + const { access: s, appendFile: i, writeFile: o } = r.promises + p.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY' + p.SUMMARY_DOCS_URL = + 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary' + class Summary { + constructor() { + this._buffer = '' + } + filePath() { + return d(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath + } + const e = process.env[p.SUMMARY_ENV_VAR] + if (!e) { + throw new Error( + `Unable to find environment variable for $${p.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` + ) + } + try { + yield s(e, r.constants.R_OK | r.constants.W_OK) + } catch (p) { + throw new Error( + `Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.` + ) + } + this._filePath = e + return this._filePath + }) + } + wrap(e, p, a = {}) { + const d = Object.entries(a) + .map(([e, p]) => ` ${e}="${p}"`) + .join('') + if (!p) { + return `<${e}${d}>` + } + return `<${e}${d}>${p}` + } + write(e) { + return d(this, void 0, void 0, function* () { + const p = !!(e === null || e === void 0 ? void 0 : e.overwrite) + const a = yield this.filePath() + const d = p ? o : i + yield d(a, this._buffer, { encoding: 'utf8' }) + return this.emptyBuffer() + }) + } + clear() { + return d(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }) + }) + } + stringify() { + return this._buffer + } + isEmptyBuffer() { + return this._buffer.length === 0 + } + emptyBuffer() { + this._buffer = '' + return this + } + addRaw(e, p = false) { + this._buffer += e + return p ? this.addEOL() : this + } + addEOL() { + return this.addRaw(t.EOL) + } + addCodeBlock(e, p) { + const a = Object.assign({}, p && { lang: p }) + const d = this.wrap('pre', this.wrap('code', e), a) + return this.addRaw(d).addEOL() + } + addList(e, p = false) { + const a = p ? 'ol' : 'ul' + const d = e.map((e) => this.wrap('li', e)).join('') + const t = this.wrap(a, d) + return this.addRaw(t).addEOL() + } + addTable(e) { + const p = e + .map((e) => { + const p = e + .map((e) => { + if (typeof e === 'string') { + return this.wrap('td', e) + } + const { header: p, data: a, colspan: d, rowspan: t } = e + const r = p ? 'th' : 'td' + const s = Object.assign( + Object.assign({}, d && { colspan: d }), + t && { rowspan: t } + ) + return this.wrap(r, a, s) + }) + .join('') + return this.wrap('tr', p) + }) + .join('') + const a = this.wrap('table', p) + return this.addRaw(a).addEOL() + } + addDetails(e, p) { + const a = this.wrap('details', this.wrap('summary', e) + p) + return this.addRaw(a).addEOL() + } + addImage(e, p, a) { + const { width: d, height: t } = a || {} + const r = Object.assign( + Object.assign({}, d && { width: d }), + t && { height: t } + ) + const s = this.wrap('img', null, Object.assign({ src: e, alt: p }, r)) + return this.addRaw(s).addEOL() + } + addHeading(e, p) { + const a = `h${p}` + const d = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(a) ? a : 'h1' + const t = this.wrap(d, e) + return this.addRaw(t).addEOL() + } + addSeparator() { + const e = this.wrap('hr', null) + return this.addRaw(e).addEOL() + } + addBreak() { + const e = this.wrap('br', null) + return this.addRaw(e).addEOL() + } + addQuote(e, p) { + const a = Object.assign({}, p && { cite: p }) + const d = this.wrap('blockquote', e, a) + return this.addRaw(d).addEOL() + } + addLink(e, p) { + const a = this.wrap('a', e, { href: p }) + return this.addRaw(a).addEOL() + } + } + const n = new Summary() + p.markdownSummary = n + p.summary = n + }, + 5278: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + p.toCommandProperties = p.toCommandValue = void 0 + function toCommandValue(e) { + if (e === null || e === undefined) { + return '' + } else if (typeof e === 'string' || e instanceof String) { + return e + } + return JSON.stringify(e) + } + p.toCommandValue = toCommandValue + function toCommandProperties(e) { + if (!Object.keys(e).length) { + return {} + } + return { + title: e.title, + file: e.file, + line: e.startLine, + endLine: e.endLine, + col: e.startColumn, + endColumn: e.endColumn, + } + } + p.toCommandProperties = toCommandProperties + }, + 4087: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p.Context = void 0 + const d = a(7147) + const t = a(2037) + class Context { + constructor() { + var e, p, a + this.payload = {} + if (process.env.GITHUB_EVENT_PATH) { + if (d.existsSync(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse( + d.readFileSync(process.env.GITHUB_EVENT_PATH, { + encoding: 'utf8', + }) + ) + } else { + const e = process.env.GITHUB_EVENT_PATH + process.stdout.write( + `GITHUB_EVENT_PATH ${e} does not exist${t.EOL}` + ) + } + } + this.eventName = process.env.GITHUB_EVENT_NAME + this.sha = process.env.GITHUB_SHA + this.ref = process.env.GITHUB_REF + this.workflow = process.env.GITHUB_WORKFLOW + this.action = process.env.GITHUB_ACTION + this.actor = process.env.GITHUB_ACTOR + this.job = process.env.GITHUB_JOB + this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10) + this.runId = parseInt(process.env.GITHUB_RUN_ID, 10) + this.apiUrl = + (e = process.env.GITHUB_API_URL) !== null && e !== void 0 + ? e + : `https://api.github.com` + this.serverUrl = + (p = process.env.GITHUB_SERVER_URL) !== null && p !== void 0 + ? p + : `https://github.com` + this.graphqlUrl = + (a = process.env.GITHUB_GRAPHQL_URL) !== null && a !== void 0 + ? a + : `https://api.github.com/graphql` + } + get issue() { + const e = this.payload + return Object.assign(Object.assign({}, this.repo), { + number: (e.issue || e.pull_request || e).number, + }) + } + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [e, p] = process.env.GITHUB_REPOSITORY.split('/') + return { owner: e, repo: p } + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name, + } + } + throw new Error( + "context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'" + ) + } + } + p.Context = Context + }, + 5438: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + Object.defineProperty(p, '__esModule', { value: true }) + p.getOctokit = p.context = void 0 + const s = r(a(4087)) + const i = a(3030) + p.context = new s.Context() + function getOctokit(e, p, ...a) { + const d = i.GitHub.plugin(...a) + return new d(i.getOctokitOptions(e, p)) + } + p.getOctokit = getOctokit + }, + 7914: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + Object.defineProperty(p, '__esModule', { value: true }) + p.getApiBaseUrl = p.getProxyAgent = p.getAuthString = void 0 + const s = r(a(6255)) + function getAuthString(e, p) { + if (!e && !p.auth) { + throw new Error('Parameter token or opts.auth is required') + } else if (e && p.auth) { + throw new Error( + 'Parameters token and opts.auth may not both be specified' + ) + } + return typeof p.auth === 'string' ? p.auth : `token ${e}` + } + p.getAuthString = getAuthString + function getProxyAgent(e) { + const p = new s.HttpClient() + return p.getAgent(e) + } + p.getProxyAgent = getProxyAgent + function getApiBaseUrl() { + return process.env['GITHUB_API_URL'] || 'https://api.github.com' + } + p.getApiBaseUrl = getApiBaseUrl + }, + 3030: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + Object.defineProperty(p, '__esModule', { value: true }) + p.getOctokitOptions = p.GitHub = p.defaults = p.context = void 0 + const s = r(a(4087)) + const i = r(a(7914)) + const o = a(6762) + const n = a(3044) + const l = a(4193) + p.context = new s.Context() + const m = i.getApiBaseUrl() + p.defaults = { baseUrl: m, request: { agent: i.getProxyAgent(m) } } + p.GitHub = o.Octokit.plugin(n.restEndpointMethods, l.paginateRest).defaults( + p.defaults + ) + function getOctokitOptions(e, p) { + const a = Object.assign({}, p || {}) + const d = i.getAuthString(e, a) + if (d) { + a.auth = d + } + return a + } + p.getOctokitOptions = getOctokitOptions + }, + 5526: function (e, p) { + var a = + (this && this.__awaiter) || + function (e, p, a, d) { + function adopt(e) { + return e instanceof a + ? e + : new a(function (p) { + p(e) + }) + } + return new (a || (a = Promise))(function (a, t) { + function fulfilled(e) { + try { + step(d.next(e)) + } catch (e) { + t(e) + } + } + function rejected(e) { + try { + step(d['throw'](e)) + } catch (e) { + t(e) + } + } + function step(e) { + e.done ? a(e.value) : adopt(e.value).then(fulfilled, rejected) + } + step((d = d.apply(e, p || [])).next()) + }) + } + Object.defineProperty(p, '__esModule', { value: true }) + p.PersonalAccessTokenCredentialHandler = + p.BearerCredentialHandler = + p.BasicCredentialHandler = + void 0 + class BasicCredentialHandler { + constructor(e, p) { + this.username = e + this.password = p + } + prepareRequest(e) { + if (!e.headers) { + throw Error('The request has no headers') + } + e.headers['Authorization'] = `Basic ${Buffer.from( + `${this.username}:${this.password}` + ).toString('base64')}` + } + canHandleAuthentication() { + return false + } + handleAuthentication() { + return a(this, void 0, void 0, function* () { + throw new Error('not implemented') + }) + } + } + p.BasicCredentialHandler = BasicCredentialHandler + class BearerCredentialHandler { + constructor(e) { + this.token = e + } + prepareRequest(e) { + if (!e.headers) { + throw Error('The request has no headers') + } + e.headers['Authorization'] = `Bearer ${this.token}` + } + canHandleAuthentication() { + return false + } + handleAuthentication() { + return a(this, void 0, void 0, function* () { + throw new Error('not implemented') + }) + } + } + p.BearerCredentialHandler = BearerCredentialHandler + class PersonalAccessTokenCredentialHandler { + constructor(e) { + this.token = e + } + prepareRequest(e) { + if (!e.headers) { + throw Error('The request has no headers') + } + e.headers['Authorization'] = `Basic ${Buffer.from( + `PAT:${this.token}` + ).toString('base64')}` + } + canHandleAuthentication() { + return false + } + handleAuthentication() { + return a(this, void 0, void 0, function* () { + throw new Error('not implemented') + }) + } + } + p.PersonalAccessTokenCredentialHandler = + PersonalAccessTokenCredentialHandler + }, + 6255: function (e, p, a) { + var d = + (this && this.__createBinding) || + (Object.create + ? function (e, p, a, d) { + if (d === undefined) d = a + Object.defineProperty(e, d, { + enumerable: true, + get: function () { + return p[a] + }, + }) + } + : function (e, p, a, d) { + if (d === undefined) d = a + e[d] = p[a] + }) + var t = + (this && this.__setModuleDefault) || + (Object.create + ? function (e, p) { + Object.defineProperty(e, 'default', { enumerable: true, value: p }) + } + : function (e, p) { + e['default'] = p + }) + var r = + (this && this.__importStar) || + function (e) { + if (e && e.__esModule) return e + var p = {} + if (e != null) + for (var a in e) + if (a !== 'default' && Object.hasOwnProperty.call(e, a)) d(p, e, a) + t(p, e) + return p + } + var s = + (this && this.__awaiter) || + function (e, p, a, d) { + function adopt(e) { + return e instanceof a + ? e + : new a(function (p) { + p(e) + }) + } + return new (a || (a = Promise))(function (a, t) { + function fulfilled(e) { + try { + step(d.next(e)) + } catch (e) { + t(e) + } + } + function rejected(e) { + try { + step(d['throw'](e)) + } catch (e) { + t(e) + } + } + function step(e) { + e.done ? a(e.value) : adopt(e.value).then(fulfilled, rejected) + } + step((d = d.apply(e, p || [])).next()) + }) + } + Object.defineProperty(p, '__esModule', { value: true }) + p.HttpClient = + p.isHttps = + p.HttpClientResponse = + p.HttpClientError = + p.getProxyUrl = + p.MediaTypes = + p.Headers = + p.HttpCodes = + void 0 + const i = r(a(3685)) + const o = r(a(5687)) + const n = r(a(9835)) + const l = r(a(4294)) + var m + ;(function (e) { + e[(e['OK'] = 200)] = 'OK' + e[(e['MultipleChoices'] = 300)] = 'MultipleChoices' + e[(e['MovedPermanently'] = 301)] = 'MovedPermanently' + e[(e['ResourceMoved'] = 302)] = 'ResourceMoved' + e[(e['SeeOther'] = 303)] = 'SeeOther' + e[(e['NotModified'] = 304)] = 'NotModified' + e[(e['UseProxy'] = 305)] = 'UseProxy' + e[(e['SwitchProxy'] = 306)] = 'SwitchProxy' + e[(e['TemporaryRedirect'] = 307)] = 'TemporaryRedirect' + e[(e['PermanentRedirect'] = 308)] = 'PermanentRedirect' + e[(e['BadRequest'] = 400)] = 'BadRequest' + e[(e['Unauthorized'] = 401)] = 'Unauthorized' + e[(e['PaymentRequired'] = 402)] = 'PaymentRequired' + e[(e['Forbidden'] = 403)] = 'Forbidden' + e[(e['NotFound'] = 404)] = 'NotFound' + e[(e['MethodNotAllowed'] = 405)] = 'MethodNotAllowed' + e[(e['NotAcceptable'] = 406)] = 'NotAcceptable' + e[(e['ProxyAuthenticationRequired'] = 407)] = + 'ProxyAuthenticationRequired' + e[(e['RequestTimeout'] = 408)] = 'RequestTimeout' + e[(e['Conflict'] = 409)] = 'Conflict' + e[(e['Gone'] = 410)] = 'Gone' + e[(e['TooManyRequests'] = 429)] = 'TooManyRequests' + e[(e['InternalServerError'] = 500)] = 'InternalServerError' + e[(e['NotImplemented'] = 501)] = 'NotImplemented' + e[(e['BadGateway'] = 502)] = 'BadGateway' + e[(e['ServiceUnavailable'] = 503)] = 'ServiceUnavailable' + e[(e['GatewayTimeout'] = 504)] = 'GatewayTimeout' + })((m = p.HttpCodes || (p.HttpCodes = {}))) + var u + ;(function (e) { + e['Accept'] = 'accept' + e['ContentType'] = 'content-type' + })((u = p.Headers || (p.Headers = {}))) + var c + ;(function (e) { + e['ApplicationJson'] = 'application/json' + })((c = p.MediaTypes || (p.MediaTypes = {}))) + function getProxyUrl(e) { + const p = n.getProxyUrl(new URL(e)) + return p ? p.href : '' + } + p.getProxyUrl = getProxyUrl + const v = [ + m.MovedPermanently, + m.ResourceMoved, + m.SeeOther, + m.TemporaryRedirect, + m.PermanentRedirect, + ] + const h = [m.BadGateway, m.ServiceUnavailable, m.GatewayTimeout] + const g = ['OPTIONS', 'GET', 'DELETE', 'HEAD'] + const w = 10 + const _ = 5 + class HttpClientError extends Error { + constructor(e, p) { + super(e) + this.name = 'HttpClientError' + this.statusCode = p + Object.setPrototypeOf(this, HttpClientError.prototype) + } + } + p.HttpClientError = HttpClientError + class HttpClientResponse { + constructor(e) { + this.message = e + } + readBody() { + return s(this, void 0, void 0, function* () { + return new Promise((e) => + s(this, void 0, void 0, function* () { + let p = Buffer.alloc(0) + this.message.on('data', (e) => { + p = Buffer.concat([p, e]) + }) + this.message.on('end', () => { + e(p.toString()) + }) + }) + ) + }) + } + } + p.HttpClientResponse = HttpClientResponse + function isHttps(e) { + const p = new URL(e) + return p.protocol === 'https:' + } + p.isHttps = isHttps + class HttpClient { + constructor(e, p, a) { + this._ignoreSslError = false + this._allowRedirects = true + this._allowRedirectDowngrade = false + this._maxRedirects = 50 + this._allowRetries = false + this._maxRetries = 1 + this._keepAlive = false + this._disposed = false + this.userAgent = e + this.handlers = p || [] + this.requestOptions = a + if (a) { + if (a.ignoreSslError != null) { + this._ignoreSslError = a.ignoreSslError + } + this._socketTimeout = a.socketTimeout + if (a.allowRedirects != null) { + this._allowRedirects = a.allowRedirects + } + if (a.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = a.allowRedirectDowngrade + } + if (a.maxRedirects != null) { + this._maxRedirects = Math.max(a.maxRedirects, 0) + } + if (a.keepAlive != null) { + this._keepAlive = a.keepAlive + } + if (a.allowRetries != null) { + this._allowRetries = a.allowRetries + } + if (a.maxRetries != null) { + this._maxRetries = a.maxRetries + } + } + } + options(e, p) { + return s(this, void 0, void 0, function* () { + return this.request('OPTIONS', e, null, p || {}) + }) + } + get(e, p) { + return s(this, void 0, void 0, function* () { + return this.request('GET', e, null, p || {}) + }) + } + del(e, p) { + return s(this, void 0, void 0, function* () { + return this.request('DELETE', e, null, p || {}) + }) + } + post(e, p, a) { + return s(this, void 0, void 0, function* () { + return this.request('POST', e, p, a || {}) + }) + } + patch(e, p, a) { + return s(this, void 0, void 0, function* () { + return this.request('PATCH', e, p, a || {}) + }) + } + put(e, p, a) { + return s(this, void 0, void 0, function* () { + return this.request('PUT', e, p, a || {}) + }) + } + head(e, p) { + return s(this, void 0, void 0, function* () { + return this.request('HEAD', e, null, p || {}) + }) + } + sendStream(e, p, a, d) { + return s(this, void 0, void 0, function* () { + return this.request(e, p, a, d) + }) + } + getJson(e, p = {}) { + return s(this, void 0, void 0, function* () { + p[u.Accept] = this._getExistingOrDefaultHeader( + p, + u.Accept, + c.ApplicationJson + ) + const a = yield this.get(e, p) + return this._processResponse(a, this.requestOptions) + }) + } + postJson(e, p, a = {}) { + return s(this, void 0, void 0, function* () { + const d = JSON.stringify(p, null, 2) + a[u.Accept] = this._getExistingOrDefaultHeader( + a, + u.Accept, + c.ApplicationJson + ) + a[u.ContentType] = this._getExistingOrDefaultHeader( + a, + u.ContentType, + c.ApplicationJson + ) + const t = yield this.post(e, d, a) + return this._processResponse(t, this.requestOptions) + }) + } + putJson(e, p, a = {}) { + return s(this, void 0, void 0, function* () { + const d = JSON.stringify(p, null, 2) + a[u.Accept] = this._getExistingOrDefaultHeader( + a, + u.Accept, + c.ApplicationJson + ) + a[u.ContentType] = this._getExistingOrDefaultHeader( + a, + u.ContentType, + c.ApplicationJson + ) + const t = yield this.put(e, d, a) + return this._processResponse(t, this.requestOptions) + }) + } + patchJson(e, p, a = {}) { + return s(this, void 0, void 0, function* () { + const d = JSON.stringify(p, null, 2) + a[u.Accept] = this._getExistingOrDefaultHeader( + a, + u.Accept, + c.ApplicationJson + ) + a[u.ContentType] = this._getExistingOrDefaultHeader( + a, + u.ContentType, + c.ApplicationJson + ) + const t = yield this.patch(e, d, a) + return this._processResponse(t, this.requestOptions) + }) + } + request(e, p, a, d) { + return s(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.') + } + const t = new URL(p) + let r = this._prepareRequest(e, t, d) + const s = + this._allowRetries && g.includes(e) ? this._maxRetries + 1 : 1 + let i = 0 + let o + do { + o = yield this.requestRaw(r, a) + if (o && o.message && o.message.statusCode === m.Unauthorized) { + let e + for (const p of this.handlers) { + if (p.canHandleAuthentication(o)) { + e = p + break + } + } + if (e) { + return e.handleAuthentication(this, r, a) + } else { + return o + } + } + let p = this._maxRedirects + while ( + o.message.statusCode && + v.includes(o.message.statusCode) && + this._allowRedirects && + p > 0 + ) { + const s = o.message.headers['location'] + if (!s) { + break + } + const i = new URL(s) + if ( + t.protocol === 'https:' && + t.protocol !== i.protocol && + !this._allowRedirectDowngrade + ) { + throw new Error( + 'Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.' + ) + } + yield o.readBody() + if (i.hostname !== t.hostname) { + for (const e in d) { + if (e.toLowerCase() === 'authorization') { + delete d[e] + } + } + } + r = this._prepareRequest(e, i, d) + o = yield this.requestRaw(r, a) + p-- + } + if (!o.message.statusCode || !h.includes(o.message.statusCode)) { + return o + } + i += 1 + if (i < s) { + yield o.readBody() + yield this._performExponentialBackoff(i) + } + } while (i < s) + return o + }) + } + dispose() { + if (this._agent) { + this._agent.destroy() + } + this._disposed = true + } + requestRaw(e, p) { + return s(this, void 0, void 0, function* () { + return new Promise((a, d) => { + function callbackForResult(e, p) { + if (e) { + d(e) + } else if (!p) { + d(new Error('Unknown error')) + } else { + a(p) + } + } + this.requestRawWithCallback(e, p, callbackForResult) + }) + }) + } + requestRawWithCallback(e, p, a) { + if (typeof p === 'string') { + if (!e.options.headers) { + e.options.headers = {} + } + e.options.headers['Content-Length'] = Buffer.byteLength(p, 'utf8') + } + let d = false + function handleResult(e, p) { + if (!d) { + d = true + a(e, p) + } + } + const t = e.httpModule.request(e.options, (e) => { + const p = new HttpClientResponse(e) + handleResult(undefined, p) + }) + let r + t.on('socket', (e) => { + r = e + }) + t.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (r) { + r.end() + } + handleResult(new Error(`Request timeout: ${e.options.path}`)) + }) + t.on('error', function (e) { + handleResult(e) + }) + if (p && typeof p === 'string') { + t.write(p, 'utf8') + } + if (p && typeof p !== 'string') { + p.on('close', function () { + t.end() + }) + p.pipe(t) + } else { + t.end() + } + } + getAgent(e) { + const p = new URL(e) + return this._getAgent(p) + } + _prepareRequest(e, p, a) { + const d = {} + d.parsedUrl = p + const t = d.parsedUrl.protocol === 'https:' + d.httpModule = t ? o : i + const r = t ? 443 : 80 + d.options = {} + d.options.host = d.parsedUrl.hostname + d.options.port = d.parsedUrl.port ? parseInt(d.parsedUrl.port) : r + d.options.path = + (d.parsedUrl.pathname || '') + (d.parsedUrl.search || '') + d.options.method = e + d.options.headers = this._mergeHeaders(a) + if (this.userAgent != null) { + d.options.headers['user-agent'] = this.userAgent + } + d.options.agent = this._getAgent(d.parsedUrl) + if (this.handlers) { + for (const e of this.handlers) { + e.prepareRequest(d.options) + } + } + return d + } + _mergeHeaders(e) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign( + {}, + lowercaseKeys(this.requestOptions.headers), + lowercaseKeys(e || {}) + ) + } + return lowercaseKeys(e || {}) + } + _getExistingOrDefaultHeader(e, p, a) { + let d + if (this.requestOptions && this.requestOptions.headers) { + d = lowercaseKeys(this.requestOptions.headers)[p] + } + return e[p] || d || a + } + _getAgent(e) { + let p + const a = n.getProxyUrl(e) + const d = a && a.hostname + if (this._keepAlive && d) { + p = this._proxyAgent + } + if (this._keepAlive && !d) { + p = this._agent + } + if (p) { + return p + } + const t = e.protocol === 'https:' + let r = 100 + if (this.requestOptions) { + r = this.requestOptions.maxSockets || i.globalAgent.maxSockets + } + if (a && a.hostname) { + const e = { + maxSockets: r, + keepAlive: this._keepAlive, + proxy: Object.assign( + Object.assign( + {}, + (a.username || a.password) && { + proxyAuth: `${a.username}:${a.password}`, + } + ), + { host: a.hostname, port: a.port } + ), + } + let d + const s = a.protocol === 'https:' + if (t) { + d = s ? l.httpsOverHttps : l.httpsOverHttp + } else { + d = s ? l.httpOverHttps : l.httpOverHttp + } + p = d(e) + this._proxyAgent = p + } + if (this._keepAlive && !p) { + const e = { keepAlive: this._keepAlive, maxSockets: r } + p = t ? new o.Agent(e) : new i.Agent(e) + this._agent = p + } + if (!p) { + p = t ? o.globalAgent : i.globalAgent + } + if (t && this._ignoreSslError) { + p.options = Object.assign(p.options || {}, { + rejectUnauthorized: false, + }) + } + return p + } + _performExponentialBackoff(e) { + return s(this, void 0, void 0, function* () { + e = Math.min(w, e) + const p = _ * Math.pow(2, e) + return new Promise((e) => setTimeout(() => e(), p)) + }) + } + _processResponse(e, p) { + return s(this, void 0, void 0, function* () { + return new Promise((a, d) => + s(this, void 0, void 0, function* () { + const t = e.message.statusCode || 0 + const r = { statusCode: t, result: null, headers: {} } + if (t === m.NotFound) { + a(r) + } + function dateTimeDeserializer(e, p) { + if (typeof p === 'string') { + const e = new Date(p) + if (!isNaN(e.valueOf())) { + return e + } + } + return p + } + let s + let i + try { + i = yield e.readBody() + if (i && i.length > 0) { + if (p && p.deserializeDates) { + s = JSON.parse(i, dateTimeDeserializer) + } else { + s = JSON.parse(i) + } + r.result = s + } + r.headers = e.message.headers + } catch (e) {} + if (t > 299) { + let e + if (s && s.message) { + e = s.message + } else if (i && i.length > 0) { + e = i + } else { + e = `Failed request: (${t})` + } + const p = new HttpClientError(e, t) + p.result = r.result + d(p) + } else { + a(r) + } + }) + ) + }) + } + } + p.HttpClient = HttpClient + const lowercaseKeys = (e) => + Object.keys(e).reduce((p, a) => ((p[a.toLowerCase()] = e[a]), p), {}) + }, + 9835: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + p.checkBypass = p.getProxyUrl = void 0 + function getProxyUrl(e) { + const p = e.protocol === 'https:' + if (checkBypass(e)) { + return undefined + } + const a = (() => { + if (p) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY'] + } else { + return process.env['http_proxy'] || process.env['HTTP_PROXY'] + } + })() + if (a) { + return new URL(a) + } else { + return undefined + } + } + p.getProxyUrl = getProxyUrl + function checkBypass(e) { + if (!e.hostname) { + return false + } + const p = e.hostname + if (isLoopbackAddress(p)) { + return true + } + const a = process.env['no_proxy'] || process.env['NO_PROXY'] || '' + if (!a) { + return false + } + let d + if (e.port) { + d = Number(e.port) + } else if (e.protocol === 'http:') { + d = 80 + } else if (e.protocol === 'https:') { + d = 443 + } + const t = [e.hostname.toUpperCase()] + if (typeof d === 'number') { + t.push(`${t[0]}:${d}`) + } + for (const e of a + .split(',') + .map((e) => e.trim().toUpperCase()) + .filter((e) => e)) { + if ( + e === '*' || + t.some( + (p) => + p === e || + p.endsWith(`.${e}`) || + (e.startsWith('.') && p.endsWith(`${e}`)) + ) + ) { + return true + } + } + return false + } + p.checkBypass = checkBypass + function isLoopbackAddress(e) { + const p = e.toLowerCase() + return ( + p === 'localhost' || + p.startsWith('127.') || + p.startsWith('[::1]') || + p.startsWith('[0:0:0:0:0:0:0:1]') + ) + } + }, + 334: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + const a = /^v1\./ + const d = /^ghs_/ + const t = /^ghu_/ + async function auth(e) { + const p = e.split(/\./).length === 3 + const r = a.test(e) || d.test(e) + const s = t.test(e) + const i = p ? 'app' : r ? 'installation' : s ? 'user-to-server' : 'oauth' + return { type: 'token', token: e, tokenType: i } + } + function withAuthorizationPrefix(e) { + if (e.split(/\./).length === 3) { + return `bearer ${e}` + } + return `token ${e}` + } + async function hook(e, p, a, d) { + const t = p.endpoint.merge(a, d) + t.headers.authorization = withAuthorizationPrefix(e) + return p(t) + } + const r = function createTokenAuth(e) { + if (!e) { + throw new Error( + '[@octokit/auth-token] No token passed to createTokenAuth' + ) + } + if (typeof e !== 'string') { + throw new Error( + '[@octokit/auth-token] Token passed to createTokenAuth is not a string' + ) + } + e = e.replace(/^(token|bearer) +/i, '') + return Object.assign(auth.bind(null, e), { hook: hook.bind(null, e) }) + } + p.createTokenAuth = r + }, + 6762: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + var d = a(5030) + var t = a(3682) + var r = a(6234) + var s = a(8467) + var i = a(334) + function _objectWithoutPropertiesLoose(e, p) { + if (e == null) return {} + var a = {} + var d = Object.keys(e) + var t, r + for (r = 0; r < d.length; r++) { + t = d[r] + if (p.indexOf(t) >= 0) continue + a[t] = e[t] + } + return a + } + function _objectWithoutProperties(e, p) { + if (e == null) return {} + var a = _objectWithoutPropertiesLoose(e, p) + var d, t + if (Object.getOwnPropertySymbols) { + var r = Object.getOwnPropertySymbols(e) + for (t = 0; t < r.length; t++) { + d = r[t] + if (p.indexOf(d) >= 0) continue + if (!Object.prototype.propertyIsEnumerable.call(e, d)) continue + a[d] = e[d] + } + } + return a + } + const o = '3.6.0' + const n = ['authStrategy'] + class Octokit { + constructor(e = {}) { + const p = new t.Collection() + const a = { + baseUrl: r.request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, e.request, { + hook: p.bind(null, 'request'), + }), + mediaType: { previews: [], format: '' }, + } + a.headers['user-agent'] = [ + e.userAgent, + `octokit-core.js/${o} ${d.getUserAgent()}`, + ] + .filter(Boolean) + .join(' ') + if (e.baseUrl) { + a.baseUrl = e.baseUrl + } + if (e.previews) { + a.mediaType.previews = e.previews + } + if (e.timeZone) { + a.headers['time-zone'] = e.timeZone + } + this.request = r.request.defaults(a) + this.graphql = s.withCustomRequest(this.request).defaults(a) + this.log = Object.assign( + { + debug: () => {}, + info: () => {}, + warn: console.warn.bind(console), + error: console.error.bind(console), + }, + e.log + ) + this.hook = p + if (!e.authStrategy) { + if (!e.auth) { + this.auth = async () => ({ type: 'unauthenticated' }) + } else { + const a = i.createTokenAuth(e.auth) + p.wrap('request', a.hook) + this.auth = a + } + } else { + const { authStrategy: a } = e, + d = _objectWithoutProperties(e, n) + const t = a( + Object.assign( + { + request: this.request, + log: this.log, + octokit: this, + octokitOptions: d, + }, + e.auth + ) + ) + p.wrap('request', t.hook) + this.auth = t + } + const l = this.constructor + l.plugins.forEach((p) => { + Object.assign(this, p(this, e)) + }) + } + static defaults(e) { + const p = class extends this { + constructor(...p) { + const a = p[0] || {} + if (typeof e === 'function') { + super(e(a)) + return + } + super( + Object.assign( + {}, + e, + a, + a.userAgent && e.userAgent + ? { userAgent: `${a.userAgent} ${e.userAgent}` } + : null + ) + ) + } + } + return p + } + static plugin(...e) { + var p + const a = this.plugins + const d = + ((p = class extends this {}), + (p.plugins = a.concat(e.filter((e) => !a.includes(e)))), + p) + return d + } + } + Octokit.VERSION = o + Octokit.plugins = [] + p.Octokit = Octokit + }, + 9440: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + var d = a(3287) + var t = a(5030) + function lowercaseKeys(e) { + if (!e) { + return {} + } + return Object.keys(e).reduce((p, a) => { + p[a.toLowerCase()] = e[a] + return p + }, {}) + } + function mergeDeep(e, p) { + const a = Object.assign({}, e) + Object.keys(p).forEach((t) => { + if (d.isPlainObject(p[t])) { + if (!(t in e)) Object.assign(a, { [t]: p[t] }) + else a[t] = mergeDeep(e[t], p[t]) + } else { + Object.assign(a, { [t]: p[t] }) + } + }) + return a + } + function removeUndefinedProperties(e) { + for (const p in e) { + if (e[p] === undefined) { + delete e[p] + } + } + return e + } + function merge(e, p, a) { + if (typeof p === 'string') { + let [e, d] = p.split(' ') + a = Object.assign(d ? { method: e, url: d } : { url: e }, a) + } else { + a = Object.assign({}, p) + } + a.headers = lowercaseKeys(a.headers) + removeUndefinedProperties(a) + removeUndefinedProperties(a.headers) + const d = mergeDeep(e || {}, a) + if (e && e.mediaType.previews.length) { + d.mediaType.previews = e.mediaType.previews + .filter((e) => !d.mediaType.previews.includes(e)) + .concat(d.mediaType.previews) + } + d.mediaType.previews = d.mediaType.previews.map((e) => + e.replace(/-preview/, '') + ) + return d + } + function addQueryParameters(e, p) { + const a = /\?/.test(e) ? '&' : '?' + const d = Object.keys(p) + if (d.length === 0) { + return e + } + return ( + e + + a + + d + .map((e) => { + if (e === 'q') { + return 'q=' + p.q.split('+').map(encodeURIComponent).join('+') + } + return `${e}=${encodeURIComponent(p[e])}` + }) + .join('&') + ) + } + const r = /\{[^}]+\}/g + function removeNonChars(e) { + return e.replace(/^\W+|\W+$/g, '').split(/,/) + } + function extractUrlVariableNames(e) { + const p = e.match(r) + if (!p) { + return [] + } + return p.map(removeNonChars).reduce((e, p) => e.concat(p), []) + } + function omit(e, p) { + return Object.keys(e) + .filter((e) => !p.includes(e)) + .reduce((p, a) => { + p[a] = e[a] + return p + }, {}) + } + function encodeReserved(e) { + return e + .split(/(%[0-9A-Fa-f]{2})/g) + .map(function (e) { + if (!/%[0-9A-Fa-f]/.test(e)) { + e = encodeURI(e).replace(/%5B/g, '[').replace(/%5D/g, ']') + } + return e + }) + .join('') + } + function encodeUnreserved(e) { + return encodeURIComponent(e).replace(/[!'()*]/g, function (e) { + return '%' + e.charCodeAt(0).toString(16).toUpperCase() + }) + } + function encodeValue(e, p, a) { + p = e === '+' || e === '#' ? encodeReserved(p) : encodeUnreserved(p) + if (a) { + return encodeUnreserved(a) + '=' + p + } else { + return p + } + } + function isDefined(e) { + return e !== undefined && e !== null + } + function isKeyOperator(e) { + return e === ';' || e === '&' || e === '?' + } + function getValues(e, p, a, d) { + var t = e[a], + r = [] + if (isDefined(t) && t !== '') { + if ( + typeof t === 'string' || + typeof t === 'number' || + typeof t === 'boolean' + ) { + t = t.toString() + if (d && d !== '*') { + t = t.substring(0, parseInt(d, 10)) + } + r.push(encodeValue(p, t, isKeyOperator(p) ? a : '')) + } else { + if (d === '*') { + if (Array.isArray(t)) { + t.filter(isDefined).forEach(function (e) { + r.push(encodeValue(p, e, isKeyOperator(p) ? a : '')) + }) + } else { + Object.keys(t).forEach(function (e) { + if (isDefined(t[e])) { + r.push(encodeValue(p, t[e], e)) + } + }) + } + } else { + const e = [] + if (Array.isArray(t)) { + t.filter(isDefined).forEach(function (a) { + e.push(encodeValue(p, a)) + }) + } else { + Object.keys(t).forEach(function (a) { + if (isDefined(t[a])) { + e.push(encodeUnreserved(a)) + e.push(encodeValue(p, t[a].toString())) + } + }) + } + if (isKeyOperator(p)) { + r.push(encodeUnreserved(a) + '=' + e.join(',')) + } else if (e.length !== 0) { + r.push(e.join(',')) + } + } + } + } else { + if (p === ';') { + if (isDefined(t)) { + r.push(encodeUnreserved(a)) + } + } else if (t === '' && (p === '&' || p === '?')) { + r.push(encodeUnreserved(a) + '=') + } else if (t === '') { + r.push('') + } + } + return r + } + function parseUrl(e) { + return { expand: expand.bind(null, e) } + } + function expand(e, p) { + var a = ['+', '#', '.', '/', ';', '?', '&'] + return e.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (e, d, t) { + if (d) { + let e = '' + const t = [] + if (a.indexOf(d.charAt(0)) !== -1) { + e = d.charAt(0) + d = d.substr(1) + } + d.split(/,/g).forEach(function (a) { + var d = /([^:\*]*)(?::(\d+)|(\*))?/.exec(a) + t.push(getValues(p, e, d[1], d[2] || d[3])) + }) + if (e && e !== '+') { + var r = ',' + if (e === '?') { + r = '&' + } else if (e !== '#') { + r = e + } + return (t.length !== 0 ? e : '') + t.join(r) + } else { + return t.join(',') + } + } else { + return encodeReserved(t) + } + }) + } + function parse(e) { + let p = e.method.toUpperCase() + let a = (e.url || '/').replace(/:([a-z]\w+)/g, '{$1}') + let d = Object.assign({}, e.headers) + let t + let r = omit(e, [ + 'method', + 'baseUrl', + 'url', + 'headers', + 'request', + 'mediaType', + ]) + const s = extractUrlVariableNames(a) + a = parseUrl(a).expand(r) + if (!/^http/.test(a)) { + a = e.baseUrl + a + } + const i = Object.keys(e) + .filter((e) => s.includes(e)) + .concat('baseUrl') + const o = omit(r, i) + const n = /application\/octet-stream/i.test(d.accept) + if (!n) { + if (e.mediaType.format) { + d.accept = d.accept + .split(/,/) + .map((p) => + p.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${e.mediaType.format}` + ) + ) + .join(',') + } + if (e.mediaType.previews.length) { + const p = d.accept.match(/[\w-]+(?=-preview)/g) || [] + d.accept = p + .concat(e.mediaType.previews) + .map((p) => { + const a = e.mediaType.format ? `.${e.mediaType.format}` : '+json' + return `application/vnd.github.${p}-preview${a}` + }) + .join(',') + } + } + if (['GET', 'HEAD'].includes(p)) { + a = addQueryParameters(a, o) + } else { + if ('data' in o) { + t = o.data + } else { + if (Object.keys(o).length) { + t = o + } else { + d['content-length'] = 0 + } + } + } + if (!d['content-type'] && typeof t !== 'undefined') { + d['content-type'] = 'application/json; charset=utf-8' + } + if (['PATCH', 'PUT'].includes(p) && typeof t === 'undefined') { + t = '' + } + return Object.assign( + { method: p, url: a, headers: d }, + typeof t !== 'undefined' ? { body: t } : null, + e.request ? { request: e.request } : null + ) + } + function endpointWithDefaults(e, p, a) { + return parse(merge(e, p, a)) + } + function withDefaults(e, p) { + const a = merge(e, p) + const d = endpointWithDefaults.bind(null, a) + return Object.assign(d, { + DEFAULTS: a, + defaults: withDefaults.bind(null, a), + merge: merge.bind(null, a), + parse: parse, + }) + } + const s = '6.0.12' + const i = `octokit-endpoint.js/${s} ${t.getUserAgent()}` + const o = { + method: 'GET', + baseUrl: 'https://api.github.com', + headers: { accept: 'application/vnd.github.v3+json', 'user-agent': i }, + mediaType: { format: '', previews: [] }, + } + const n = withDefaults(null, o) + p.endpoint = n + }, + 8467: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + var d = a(6234) + var t = a(5030) + const r = '4.8.0' + function _buildMessageForResponseErrors(e) { + return ( + `Request failed due to following response errors:\n` + + e.errors.map((e) => ` - ${e.message}`).join('\n') + ) + } + class GraphqlResponseError extends Error { + constructor(e, p, a) { + super(_buildMessageForResponseErrors(a)) + this.request = e + this.headers = p + this.response = a + this.name = 'GraphqlResponseError' + this.errors = a.errors + this.data = a.data + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor) + } + } + } + const s = [ + 'method', + 'baseUrl', + 'url', + 'headers', + 'request', + 'query', + 'mediaType', + ] + const i = ['query', 'method', 'url'] + const o = /\/api\/v3\/?$/ + function graphql(e, p, a) { + if (a) { + if (typeof p === 'string' && 'query' in a) { + return Promise.reject( + new Error( + `[@octokit/graphql] "query" cannot be used as variable name` + ) + ) + } + for (const e in a) { + if (!i.includes(e)) continue + return Promise.reject( + new Error( + `[@octokit/graphql] "${e}" cannot be used as variable name` + ) + ) + } + } + const d = typeof p === 'string' ? Object.assign({ query: p }, a) : p + const t = Object.keys(d).reduce((e, p) => { + if (s.includes(p)) { + e[p] = d[p] + return e + } + if (!e.variables) { + e.variables = {} + } + e.variables[p] = d[p] + return e + }, {}) + const r = d.baseUrl || e.endpoint.DEFAULTS.baseUrl + if (o.test(r)) { + t.url = r.replace(o, '/api/graphql') + } + return e(t).then((e) => { + if (e.data.errors) { + const p = {} + for (const a of Object.keys(e.headers)) { + p[a] = e.headers[a] + } + throw new GraphqlResponseError(t, p, e.data) + } + return e.data.data + }) + } + function withDefaults(e, p) { + const a = e.defaults(p) + const newApi = (e, p) => graphql(a, e, p) + return Object.assign(newApi, { + defaults: withDefaults.bind(null, a), + endpoint: d.request.endpoint, + }) + } + const n = withDefaults(d.request, { + headers: { 'user-agent': `octokit-graphql.js/${r} ${t.getUserAgent()}` }, + method: 'POST', + url: '/graphql', + }) + function withCustomRequest(e) { + return withDefaults(e, { method: 'POST', url: '/graphql' }) + } + p.GraphqlResponseError = GraphqlResponseError + p.graphql = n + p.withCustomRequest = withCustomRequest + }, + 4193: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + const a = '2.21.3' + function ownKeys(e, p) { + var a = Object.keys(e) + if (Object.getOwnPropertySymbols) { + var d = Object.getOwnPropertySymbols(e) + p && + (d = d.filter(function (p) { + return Object.getOwnPropertyDescriptor(e, p).enumerable + })), + a.push.apply(a, d) + } + return a + } + function _objectSpread2(e) { + for (var p = 1; p < arguments.length; p++) { + var a = null != arguments[p] ? arguments[p] : {} + p % 2 + ? ownKeys(Object(a), !0).forEach(function (p) { + _defineProperty(e, p, a[p]) + }) + : Object.getOwnPropertyDescriptors + ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(a)) + : ownKeys(Object(a)).forEach(function (p) { + Object.defineProperty(e, p, Object.getOwnPropertyDescriptor(a, p)) + }) + } + return e + } + function _defineProperty(e, p, a) { + if (p in e) { + Object.defineProperty(e, p, { + value: a, + enumerable: true, + configurable: true, + writable: true, + }) + } else { + e[p] = a + } + return e + } + function normalizePaginatedListResponse(e) { + if (!e.data) { + return _objectSpread2(_objectSpread2({}, e), {}, { data: [] }) + } + const p = 'total_count' in e.data && !('url' in e.data) + if (!p) return e + const a = e.data.incomplete_results + const d = e.data.repository_selection + const t = e.data.total_count + delete e.data.incomplete_results + delete e.data.repository_selection + delete e.data.total_count + const r = Object.keys(e.data)[0] + const s = e.data[r] + e.data = s + if (typeof a !== 'undefined') { + e.data.incomplete_results = a + } + if (typeof d !== 'undefined') { + e.data.repository_selection = d + } + e.data.total_count = t + return e + } + function iterator(e, p, a) { + const d = + typeof p === 'function' ? p.endpoint(a) : e.request.endpoint(p, a) + const t = typeof p === 'function' ? p : e.request + const r = d.method + const s = d.headers + let i = d.url + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!i) return { done: true } + try { + const e = await t({ method: r, url: i, headers: s }) + const p = normalizePaginatedListResponse(e) + i = ((p.headers.link || '').match(/<([^>]+)>;\s*rel="next"/) || + [])[1] + return { value: p } + } catch (e) { + if (e.status !== 409) throw e + i = '' + return { value: { status: 200, headers: {}, data: [] } } + } + }, + }), + } + } + function paginate(e, p, a, d) { + if (typeof a === 'function') { + d = a + a = undefined + } + return gather(e, [], iterator(e, p, a)[Symbol.asyncIterator](), d) + } + function gather(e, p, a, d) { + return a.next().then((t) => { + if (t.done) { + return p + } + let r = false + function done() { + r = true + } + p = p.concat(d ? d(t.value, done) : t.value.data) + if (r) { + return p + } + return gather(e, p, a, d) + }) + } + const d = Object.assign(paginate, { iterator: iterator }) + const t = [ + 'GET /app/hook/deliveries', + 'GET /app/installations', + 'GET /applications/grants', + 'GET /authorizations', + 'GET /enterprises/{enterprise}/actions/permissions/organizations', + 'GET /enterprises/{enterprise}/actions/runner-groups', + 'GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations', + 'GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners', + 'GET /enterprises/{enterprise}/actions/runners', + 'GET /enterprises/{enterprise}/audit-log', + 'GET /enterprises/{enterprise}/secret-scanning/alerts', + 'GET /enterprises/{enterprise}/settings/billing/advanced-security', + 'GET /events', + 'GET /gists', + 'GET /gists/public', + 'GET /gists/starred', + 'GET /gists/{gist_id}/comments', + 'GET /gists/{gist_id}/commits', + 'GET /gists/{gist_id}/forks', + 'GET /installation/repositories', + 'GET /issues', + 'GET /licenses', + 'GET /marketplace_listing/plans', + 'GET /marketplace_listing/plans/{plan_id}/accounts', + 'GET /marketplace_listing/stubbed/plans', + 'GET /marketplace_listing/stubbed/plans/{plan_id}/accounts', + 'GET /networks/{owner}/{repo}/events', + 'GET /notifications', + 'GET /organizations', + 'GET /orgs/{org}/actions/cache/usage-by-repository', + 'GET /orgs/{org}/actions/permissions/repositories', + 'GET /orgs/{org}/actions/runner-groups', + 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories', + 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners', + 'GET /orgs/{org}/actions/runners', + 'GET /orgs/{org}/actions/secrets', + 'GET /orgs/{org}/actions/secrets/{secret_name}/repositories', + 'GET /orgs/{org}/audit-log', + 'GET /orgs/{org}/blocks', + 'GET /orgs/{org}/code-scanning/alerts', + 'GET /orgs/{org}/codespaces', + 'GET /orgs/{org}/credential-authorizations', + 'GET /orgs/{org}/dependabot/secrets', + 'GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories', + 'GET /orgs/{org}/events', + 'GET /orgs/{org}/external-groups', + 'GET /orgs/{org}/failed_invitations', + 'GET /orgs/{org}/hooks', + 'GET /orgs/{org}/hooks/{hook_id}/deliveries', + 'GET /orgs/{org}/installations', + 'GET /orgs/{org}/invitations', + 'GET /orgs/{org}/invitations/{invitation_id}/teams', + 'GET /orgs/{org}/issues', + 'GET /orgs/{org}/members', + 'GET /orgs/{org}/migrations', + 'GET /orgs/{org}/migrations/{migration_id}/repositories', + 'GET /orgs/{org}/outside_collaborators', + 'GET /orgs/{org}/packages', + 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions', + 'GET /orgs/{org}/projects', + 'GET /orgs/{org}/public_members', + 'GET /orgs/{org}/repos', + 'GET /orgs/{org}/secret-scanning/alerts', + 'GET /orgs/{org}/settings/billing/advanced-security', + 'GET /orgs/{org}/team-sync/groups', + 'GET /orgs/{org}/teams', + 'GET /orgs/{org}/teams/{team_slug}/discussions', + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments', + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions', + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions', + 'GET /orgs/{org}/teams/{team_slug}/invitations', + 'GET /orgs/{org}/teams/{team_slug}/members', + 'GET /orgs/{org}/teams/{team_slug}/projects', + 'GET /orgs/{org}/teams/{team_slug}/repos', + 'GET /orgs/{org}/teams/{team_slug}/teams', + 'GET /projects/columns/{column_id}/cards', + 'GET /projects/{project_id}/collaborators', + 'GET /projects/{project_id}/columns', + 'GET /repos/{owner}/{repo}/actions/artifacts', + 'GET /repos/{owner}/{repo}/actions/caches', + 'GET /repos/{owner}/{repo}/actions/runners', + 'GET /repos/{owner}/{repo}/actions/runs', + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs', + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs', + 'GET /repos/{owner}/{repo}/actions/secrets', + 'GET /repos/{owner}/{repo}/actions/workflows', + 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs', + 'GET /repos/{owner}/{repo}/assignees', + 'GET /repos/{owner}/{repo}/branches', + 'GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations', + 'GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs', + 'GET /repos/{owner}/{repo}/code-scanning/alerts', + 'GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances', + 'GET /repos/{owner}/{repo}/code-scanning/analyses', + 'GET /repos/{owner}/{repo}/codespaces', + 'GET /repos/{owner}/{repo}/codespaces/devcontainers', + 'GET /repos/{owner}/{repo}/codespaces/secrets', + 'GET /repos/{owner}/{repo}/collaborators', + 'GET /repos/{owner}/{repo}/comments', + 'GET /repos/{owner}/{repo}/comments/{comment_id}/reactions', + 'GET /repos/{owner}/{repo}/commits', + 'GET /repos/{owner}/{repo}/commits/{commit_sha}/comments', + 'GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls', + 'GET /repos/{owner}/{repo}/commits/{ref}/check-runs', + 'GET /repos/{owner}/{repo}/commits/{ref}/check-suites', + 'GET /repos/{owner}/{repo}/commits/{ref}/status', + 'GET /repos/{owner}/{repo}/commits/{ref}/statuses', + 'GET /repos/{owner}/{repo}/contributors', + 'GET /repos/{owner}/{repo}/dependabot/secrets', + 'GET /repos/{owner}/{repo}/deployments', + 'GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses', + 'GET /repos/{owner}/{repo}/environments', + 'GET /repos/{owner}/{repo}/events', + 'GET /repos/{owner}/{repo}/forks', + 'GET /repos/{owner}/{repo}/git/matching-refs/{ref}', + 'GET /repos/{owner}/{repo}/hooks', + 'GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries', + 'GET /repos/{owner}/{repo}/invitations', + 'GET /repos/{owner}/{repo}/issues', + 'GET /repos/{owner}/{repo}/issues/comments', + 'GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions', + 'GET /repos/{owner}/{repo}/issues/events', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/comments', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/events', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/labels', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/reactions', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/timeline', + 'GET /repos/{owner}/{repo}/keys', + 'GET /repos/{owner}/{repo}/labels', + 'GET /repos/{owner}/{repo}/milestones', + 'GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels', + 'GET /repos/{owner}/{repo}/notifications', + 'GET /repos/{owner}/{repo}/pages/builds', + 'GET /repos/{owner}/{repo}/projects', + 'GET /repos/{owner}/{repo}/pulls', + 'GET /repos/{owner}/{repo}/pulls/comments', + 'GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions', + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/comments', + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/commits', + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/files', + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers', + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews', + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments', + 'GET /repos/{owner}/{repo}/releases', + 'GET /repos/{owner}/{repo}/releases/{release_id}/assets', + 'GET /repos/{owner}/{repo}/releases/{release_id}/reactions', + 'GET /repos/{owner}/{repo}/secret-scanning/alerts', + 'GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations', + 'GET /repos/{owner}/{repo}/stargazers', + 'GET /repos/{owner}/{repo}/subscribers', + 'GET /repos/{owner}/{repo}/tags', + 'GET /repos/{owner}/{repo}/teams', + 'GET /repos/{owner}/{repo}/topics', + 'GET /repositories', + 'GET /repositories/{repository_id}/environments/{environment_name}/secrets', + 'GET /search/code', + 'GET /search/commits', + 'GET /search/issues', + 'GET /search/labels', + 'GET /search/repositories', + 'GET /search/topics', + 'GET /search/users', + 'GET /teams/{team_id}/discussions', + 'GET /teams/{team_id}/discussions/{discussion_number}/comments', + 'GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions', + 'GET /teams/{team_id}/discussions/{discussion_number}/reactions', + 'GET /teams/{team_id}/invitations', + 'GET /teams/{team_id}/members', + 'GET /teams/{team_id}/projects', + 'GET /teams/{team_id}/repos', + 'GET /teams/{team_id}/teams', + 'GET /user/blocks', + 'GET /user/codespaces', + 'GET /user/codespaces/secrets', + 'GET /user/emails', + 'GET /user/followers', + 'GET /user/following', + 'GET /user/gpg_keys', + 'GET /user/installations', + 'GET /user/installations/{installation_id}/repositories', + 'GET /user/issues', + 'GET /user/keys', + 'GET /user/marketplace_purchases', + 'GET /user/marketplace_purchases/stubbed', + 'GET /user/memberships/orgs', + 'GET /user/migrations', + 'GET /user/migrations/{migration_id}/repositories', + 'GET /user/orgs', + 'GET /user/packages', + 'GET /user/packages/{package_type}/{package_name}/versions', + 'GET /user/public_emails', + 'GET /user/repos', + 'GET /user/repository_invitations', + 'GET /user/starred', + 'GET /user/subscriptions', + 'GET /user/teams', + 'GET /users', + 'GET /users/{username}/events', + 'GET /users/{username}/events/orgs/{org}', + 'GET /users/{username}/events/public', + 'GET /users/{username}/followers', + 'GET /users/{username}/following', + 'GET /users/{username}/gists', + 'GET /users/{username}/gpg_keys', + 'GET /users/{username}/keys', + 'GET /users/{username}/orgs', + 'GET /users/{username}/packages', + 'GET /users/{username}/projects', + 'GET /users/{username}/received_events', + 'GET /users/{username}/received_events/public', + 'GET /users/{username}/repos', + 'GET /users/{username}/starred', + 'GET /users/{username}/subscriptions', + ] + function isPaginatingEndpoint(e) { + if (typeof e === 'string') { + return t.includes(e) + } else { + return false + } + } + function paginateRest(e) { + return { + paginate: Object.assign(paginate.bind(null, e), { + iterator: iterator.bind(null, e), + }), + } + } + paginateRest.VERSION = a + p.composePaginateRest = d + p.isPaginatingEndpoint = isPaginatingEndpoint + p.paginateRest = paginateRest + p.paginatingEndpoints = t + }, + 3044: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + function ownKeys(e, p) { + var a = Object.keys(e) + if (Object.getOwnPropertySymbols) { + var d = Object.getOwnPropertySymbols(e) + if (p) { + d = d.filter(function (p) { + return Object.getOwnPropertyDescriptor(e, p).enumerable + }) + } + a.push.apply(a, d) + } + return a + } + function _objectSpread2(e) { + for (var p = 1; p < arguments.length; p++) { + var a = arguments[p] != null ? arguments[p] : {} + if (p % 2) { + ownKeys(Object(a), true).forEach(function (p) { + _defineProperty(e, p, a[p]) + }) + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(e, Object.getOwnPropertyDescriptors(a)) + } else { + ownKeys(Object(a)).forEach(function (p) { + Object.defineProperty(e, p, Object.getOwnPropertyDescriptor(a, p)) + }) + } + } + return e + } + function _defineProperty(e, p, a) { + if (p in e) { + Object.defineProperty(e, p, { + value: a, + enumerable: true, + configurable: true, + writable: true, + }) + } else { + e[p] = a + } + return e + } + const a = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: [ + 'POST /orgs/{org}/actions/runners/{runner_id}/labels', + ], + addCustomLabelsToSelfHostedRunnerForRepo: [ + 'POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels', + ], + addSelectedRepoToOrgSecret: [ + 'PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}', + ], + approveWorkflowRun: [ + 'POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve', + ], + cancelWorkflowRun: [ + 'POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel', + ], + createOrUpdateEnvironmentSecret: [ + 'PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}', + ], + createOrUpdateOrgSecret: [ + 'PUT /orgs/{org}/actions/secrets/{secret_name}', + ], + createOrUpdateRepoSecret: [ + 'PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}', + ], + createRegistrationTokenForOrg: [ + 'POST /orgs/{org}/actions/runners/registration-token', + ], + createRegistrationTokenForRepo: [ + 'POST /repos/{owner}/{repo}/actions/runners/registration-token', + ], + createRemoveTokenForOrg: [ + 'POST /orgs/{org}/actions/runners/remove-token', + ], + createRemoveTokenForRepo: [ + 'POST /repos/{owner}/{repo}/actions/runners/remove-token', + ], + createWorkflowDispatch: [ + 'POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches', + ], + deleteActionsCacheById: [ + 'DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}', + ], + deleteActionsCacheByKey: [ + 'DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}', + ], + deleteArtifact: [ + 'DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}', + ], + deleteEnvironmentSecret: [ + 'DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}', + ], + deleteOrgSecret: ['DELETE /orgs/{org}/actions/secrets/{secret_name}'], + deleteRepoSecret: [ + 'DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}', + ], + deleteSelfHostedRunnerFromOrg: [ + 'DELETE /orgs/{org}/actions/runners/{runner_id}', + ], + deleteSelfHostedRunnerFromRepo: [ + 'DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}', + ], + deleteWorkflowRun: [ + 'DELETE /repos/{owner}/{repo}/actions/runs/{run_id}', + ], + deleteWorkflowRunLogs: [ + 'DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs', + ], + disableSelectedRepositoryGithubActionsOrganization: [ + 'DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}', + ], + disableWorkflow: [ + 'PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable', + ], + downloadArtifact: [ + 'GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}', + ], + downloadJobLogsForWorkflowRun: [ + 'GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs', + ], + downloadWorkflowRunAttemptLogs: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs', + ], + downloadWorkflowRunLogs: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs', + ], + enableSelectedRepositoryGithubActionsOrganization: [ + 'PUT /orgs/{org}/actions/permissions/repositories/{repository_id}', + ], + enableWorkflow: [ + 'PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable', + ], + getActionsCacheList: ['GET /repos/{owner}/{repo}/actions/caches'], + getActionsCacheUsage: ['GET /repos/{owner}/{repo}/actions/cache/usage'], + getActionsCacheUsageByRepoForOrg: [ + 'GET /orgs/{org}/actions/cache/usage-by-repository', + ], + getActionsCacheUsageForEnterprise: [ + 'GET /enterprises/{enterprise}/actions/cache/usage', + ], + getActionsCacheUsageForOrg: ['GET /orgs/{org}/actions/cache/usage'], + getAllowedActionsOrganization: [ + 'GET /orgs/{org}/actions/permissions/selected-actions', + ], + getAllowedActionsRepository: [ + 'GET /repos/{owner}/{repo}/actions/permissions/selected-actions', + ], + getArtifact: [ + 'GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}', + ], + getEnvironmentPublicKey: [ + 'GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key', + ], + getEnvironmentSecret: [ + 'GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}', + ], + getGithubActionsDefaultWorkflowPermissionsEnterprise: [ + 'GET /enterprises/{enterprise}/actions/permissions/workflow', + ], + getGithubActionsDefaultWorkflowPermissionsOrganization: [ + 'GET /orgs/{org}/actions/permissions/workflow', + ], + getGithubActionsDefaultWorkflowPermissionsRepository: [ + 'GET /repos/{owner}/{repo}/actions/permissions/workflow', + ], + getGithubActionsPermissionsOrganization: [ + 'GET /orgs/{org}/actions/permissions', + ], + getGithubActionsPermissionsRepository: [ + 'GET /repos/{owner}/{repo}/actions/permissions', + ], + getJobForWorkflowRun: [ + 'GET /repos/{owner}/{repo}/actions/jobs/{job_id}', + ], + getOrgPublicKey: ['GET /orgs/{org}/actions/secrets/public-key'], + getOrgSecret: ['GET /orgs/{org}/actions/secrets/{secret_name}'], + getPendingDeploymentsForRun: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments', + ], + getRepoPermissions: [ + 'GET /repos/{owner}/{repo}/actions/permissions', + {}, + { renamed: ['actions', 'getGithubActionsPermissionsRepository'] }, + ], + getRepoPublicKey: [ + 'GET /repos/{owner}/{repo}/actions/secrets/public-key', + ], + getRepoSecret: [ + 'GET /repos/{owner}/{repo}/actions/secrets/{secret_name}', + ], + getReviewsForRun: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals', + ], + getSelfHostedRunnerForOrg: [ + 'GET /orgs/{org}/actions/runners/{runner_id}', + ], + getSelfHostedRunnerForRepo: [ + 'GET /repos/{owner}/{repo}/actions/runners/{runner_id}', + ], + getWorkflow: [ + 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}', + ], + getWorkflowAccessToRepository: [ + 'GET /repos/{owner}/{repo}/actions/permissions/access', + ], + getWorkflowRun: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}'], + getWorkflowRunAttempt: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}', + ], + getWorkflowRunUsage: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing', + ], + getWorkflowUsage: [ + 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing', + ], + listArtifactsForRepo: ['GET /repos/{owner}/{repo}/actions/artifacts'], + listEnvironmentSecrets: [ + 'GET /repositories/{repository_id}/environments/{environment_name}/secrets', + ], + listJobsForWorkflowRun: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs', + ], + listJobsForWorkflowRunAttempt: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs', + ], + listLabelsForSelfHostedRunnerForOrg: [ + 'GET /orgs/{org}/actions/runners/{runner_id}/labels', + ], + listLabelsForSelfHostedRunnerForRepo: [ + 'GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels', + ], + listOrgSecrets: ['GET /orgs/{org}/actions/secrets'], + listRepoSecrets: ['GET /repos/{owner}/{repo}/actions/secrets'], + listRepoWorkflows: ['GET /repos/{owner}/{repo}/actions/workflows'], + listRunnerApplicationsForOrg: [ + 'GET /orgs/{org}/actions/runners/downloads', + ], + listRunnerApplicationsForRepo: [ + 'GET /repos/{owner}/{repo}/actions/runners/downloads', + ], + listSelectedReposForOrgSecret: [ + 'GET /orgs/{org}/actions/secrets/{secret_name}/repositories', + ], + listSelectedRepositoriesEnabledGithubActionsOrganization: [ + 'GET /orgs/{org}/actions/permissions/repositories', + ], + listSelfHostedRunnersForOrg: ['GET /orgs/{org}/actions/runners'], + listSelfHostedRunnersForRepo: [ + 'GET /repos/{owner}/{repo}/actions/runners', + ], + listWorkflowRunArtifacts: [ + 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', + ], + listWorkflowRuns: [ + 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs', + ], + listWorkflowRunsForRepo: ['GET /repos/{owner}/{repo}/actions/runs'], + reRunJobForWorkflowRun: [ + 'POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun', + ], + reRunWorkflow: [ + 'POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun', + ], + reRunWorkflowFailedJobs: [ + 'POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs', + ], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ + 'DELETE /orgs/{org}/actions/runners/{runner_id}/labels', + ], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ + 'DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels', + ], + removeCustomLabelFromSelfHostedRunnerForOrg: [ + 'DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}', + ], + removeCustomLabelFromSelfHostedRunnerForRepo: [ + 'DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}', + ], + removeSelectedRepoFromOrgSecret: [ + 'DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}', + ], + reviewPendingDeploymentsForRun: [ + 'POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments', + ], + setAllowedActionsOrganization: [ + 'PUT /orgs/{org}/actions/permissions/selected-actions', + ], + setAllowedActionsRepository: [ + 'PUT /repos/{owner}/{repo}/actions/permissions/selected-actions', + ], + setCustomLabelsForSelfHostedRunnerForOrg: [ + 'PUT /orgs/{org}/actions/runners/{runner_id}/labels', + ], + setCustomLabelsForSelfHostedRunnerForRepo: [ + 'PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels', + ], + setGithubActionsDefaultWorkflowPermissionsEnterprise: [ + 'PUT /enterprises/{enterprise}/actions/permissions/workflow', + ], + setGithubActionsDefaultWorkflowPermissionsOrganization: [ + 'PUT /orgs/{org}/actions/permissions/workflow', + ], + setGithubActionsDefaultWorkflowPermissionsRepository: [ + 'PUT /repos/{owner}/{repo}/actions/permissions/workflow', + ], + setGithubActionsPermissionsOrganization: [ + 'PUT /orgs/{org}/actions/permissions', + ], + setGithubActionsPermissionsRepository: [ + 'PUT /repos/{owner}/{repo}/actions/permissions', + ], + setSelectedReposForOrgSecret: [ + 'PUT /orgs/{org}/actions/secrets/{secret_name}/repositories', + ], + setSelectedRepositoriesEnabledGithubActionsOrganization: [ + 'PUT /orgs/{org}/actions/permissions/repositories', + ], + setWorkflowAccessToRepository: [ + 'PUT /repos/{owner}/{repo}/actions/permissions/access', + ], + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: [ + 'GET /user/starred/{owner}/{repo}', + ], + deleteRepoSubscription: ['DELETE /repos/{owner}/{repo}/subscription'], + deleteThreadSubscription: [ + 'DELETE /notifications/threads/{thread_id}/subscription', + ], + getFeeds: ['GET /feeds'], + getRepoSubscription: ['GET /repos/{owner}/{repo}/subscription'], + getThread: ['GET /notifications/threads/{thread_id}'], + getThreadSubscriptionForAuthenticatedUser: [ + 'GET /notifications/threads/{thread_id}/subscription', + ], + listEventsForAuthenticatedUser: ['GET /users/{username}/events'], + listNotificationsForAuthenticatedUser: ['GET /notifications'], + listOrgEventsForAuthenticatedUser: [ + 'GET /users/{username}/events/orgs/{org}', + ], + listPublicEvents: ['GET /events'], + listPublicEventsForRepoNetwork: ['GET /networks/{owner}/{repo}/events'], + listPublicEventsForUser: ['GET /users/{username}/events/public'], + listPublicOrgEvents: ['GET /orgs/{org}/events'], + listReceivedEventsForUser: ['GET /users/{username}/received_events'], + listReceivedPublicEventsForUser: [ + 'GET /users/{username}/received_events/public', + ], + listRepoEvents: ['GET /repos/{owner}/{repo}/events'], + listRepoNotificationsForAuthenticatedUser: [ + 'GET /repos/{owner}/{repo}/notifications', + ], + listReposStarredByAuthenticatedUser: ['GET /user/starred'], + listReposStarredByUser: ['GET /users/{username}/starred'], + listReposWatchedByUser: ['GET /users/{username}/subscriptions'], + listStargazersForRepo: ['GET /repos/{owner}/{repo}/stargazers'], + listWatchedReposForAuthenticatedUser: ['GET /user/subscriptions'], + listWatchersForRepo: ['GET /repos/{owner}/{repo}/subscribers'], + markNotificationsAsRead: ['PUT /notifications'], + markRepoNotificationsAsRead: [ + 'PUT /repos/{owner}/{repo}/notifications', + ], + markThreadAsRead: ['PATCH /notifications/threads/{thread_id}'], + setRepoSubscription: ['PUT /repos/{owner}/{repo}/subscription'], + setThreadSubscription: [ + 'PUT /notifications/threads/{thread_id}/subscription', + ], + starRepoForAuthenticatedUser: ['PUT /user/starred/{owner}/{repo}'], + unstarRepoForAuthenticatedUser: ['DELETE /user/starred/{owner}/{repo}'], + }, + apps: { + addRepoToInstallation: [ + 'PUT /user/installations/{installation_id}/repositories/{repository_id}', + {}, + { renamed: ['apps', 'addRepoToInstallationForAuthenticatedUser'] }, + ], + addRepoToInstallationForAuthenticatedUser: [ + 'PUT /user/installations/{installation_id}/repositories/{repository_id}', + ], + checkToken: ['POST /applications/{client_id}/token'], + createFromManifest: ['POST /app-manifests/{code}/conversions'], + createInstallationAccessToken: [ + 'POST /app/installations/{installation_id}/access_tokens', + ], + deleteAuthorization: ['DELETE /applications/{client_id}/grant'], + deleteInstallation: ['DELETE /app/installations/{installation_id}'], + deleteToken: ['DELETE /applications/{client_id}/token'], + getAuthenticated: ['GET /app'], + getBySlug: ['GET /apps/{app_slug}'], + getInstallation: ['GET /app/installations/{installation_id}'], + getOrgInstallation: ['GET /orgs/{org}/installation'], + getRepoInstallation: ['GET /repos/{owner}/{repo}/installation'], + getSubscriptionPlanForAccount: [ + 'GET /marketplace_listing/accounts/{account_id}', + ], + getSubscriptionPlanForAccountStubbed: [ + 'GET /marketplace_listing/stubbed/accounts/{account_id}', + ], + getUserInstallation: ['GET /users/{username}/installation'], + getWebhookConfigForApp: ['GET /app/hook/config'], + getWebhookDelivery: ['GET /app/hook/deliveries/{delivery_id}'], + listAccountsForPlan: [ + 'GET /marketplace_listing/plans/{plan_id}/accounts', + ], + listAccountsForPlanStubbed: [ + 'GET /marketplace_listing/stubbed/plans/{plan_id}/accounts', + ], + listInstallationReposForAuthenticatedUser: [ + 'GET /user/installations/{installation_id}/repositories', + ], + listInstallations: ['GET /app/installations'], + listInstallationsForAuthenticatedUser: ['GET /user/installations'], + listPlans: ['GET /marketplace_listing/plans'], + listPlansStubbed: ['GET /marketplace_listing/stubbed/plans'], + listReposAccessibleToInstallation: ['GET /installation/repositories'], + listSubscriptionsForAuthenticatedUser: [ + 'GET /user/marketplace_purchases', + ], + listSubscriptionsForAuthenticatedUserStubbed: [ + 'GET /user/marketplace_purchases/stubbed', + ], + listWebhookDeliveries: ['GET /app/hook/deliveries'], + redeliverWebhookDelivery: [ + 'POST /app/hook/deliveries/{delivery_id}/attempts', + ], + removeRepoFromInstallation: [ + 'DELETE /user/installations/{installation_id}/repositories/{repository_id}', + {}, + { + renamed: ['apps', 'removeRepoFromInstallationForAuthenticatedUser'], + }, + ], + removeRepoFromInstallationForAuthenticatedUser: [ + 'DELETE /user/installations/{installation_id}/repositories/{repository_id}', + ], + resetToken: ['PATCH /applications/{client_id}/token'], + revokeInstallationAccessToken: ['DELETE /installation/token'], + scopeToken: ['POST /applications/{client_id}/token/scoped'], + suspendInstallation: [ + 'PUT /app/installations/{installation_id}/suspended', + ], + unsuspendInstallation: [ + 'DELETE /app/installations/{installation_id}/suspended', + ], + updateWebhookConfigForApp: ['PATCH /app/hook/config'], + }, + billing: { + getGithubActionsBillingOrg: [ + 'GET /orgs/{org}/settings/billing/actions', + ], + getGithubActionsBillingUser: [ + 'GET /users/{username}/settings/billing/actions', + ], + getGithubAdvancedSecurityBillingGhe: [ + 'GET /enterprises/{enterprise}/settings/billing/advanced-security', + ], + getGithubAdvancedSecurityBillingOrg: [ + 'GET /orgs/{org}/settings/billing/advanced-security', + ], + getGithubPackagesBillingOrg: [ + 'GET /orgs/{org}/settings/billing/packages', + ], + getGithubPackagesBillingUser: [ + 'GET /users/{username}/settings/billing/packages', + ], + getSharedStorageBillingOrg: [ + 'GET /orgs/{org}/settings/billing/shared-storage', + ], + getSharedStorageBillingUser: [ + 'GET /users/{username}/settings/billing/shared-storage', + ], + }, + checks: { + create: ['POST /repos/{owner}/{repo}/check-runs'], + createSuite: ['POST /repos/{owner}/{repo}/check-suites'], + get: ['GET /repos/{owner}/{repo}/check-runs/{check_run_id}'], + getSuite: ['GET /repos/{owner}/{repo}/check-suites/{check_suite_id}'], + listAnnotations: [ + 'GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations', + ], + listForRef: ['GET /repos/{owner}/{repo}/commits/{ref}/check-runs'], + listForSuite: [ + 'GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs', + ], + listSuitesForRef: [ + 'GET /repos/{owner}/{repo}/commits/{ref}/check-suites', + ], + rerequestRun: [ + 'POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest', + ], + rerequestSuite: [ + 'POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest', + ], + setSuitesPreferences: [ + 'PATCH /repos/{owner}/{repo}/check-suites/preferences', + ], + update: ['PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}'], + }, + codeScanning: { + deleteAnalysis: [ + 'DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}', + ], + getAlert: [ + 'GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}', + {}, + { renamedParameters: { alert_id: 'alert_number' } }, + ], + getAnalysis: [ + 'GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}', + ], + getSarif: ['GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}'], + listAlertInstances: [ + 'GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances', + ], + listAlertsForOrg: ['GET /orgs/{org}/code-scanning/alerts'], + listAlertsForRepo: ['GET /repos/{owner}/{repo}/code-scanning/alerts'], + listAlertsInstances: [ + 'GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances', + {}, + { renamed: ['codeScanning', 'listAlertInstances'] }, + ], + listRecentAnalyses: [ + 'GET /repos/{owner}/{repo}/code-scanning/analyses', + ], + updateAlert: [ + 'PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}', + ], + uploadSarif: ['POST /repos/{owner}/{repo}/code-scanning/sarifs'], + }, + codesOfConduct: { + getAllCodesOfConduct: ['GET /codes_of_conduct'], + getConductCode: ['GET /codes_of_conduct/{key}'], + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: [ + 'PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}', + ], + codespaceMachinesForAuthenticatedUser: [ + 'GET /user/codespaces/{codespace_name}/machines', + ], + createForAuthenticatedUser: ['POST /user/codespaces'], + createOrUpdateRepoSecret: [ + 'PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}', + ], + createOrUpdateSecretForAuthenticatedUser: [ + 'PUT /user/codespaces/secrets/{secret_name}', + ], + createWithPrForAuthenticatedUser: [ + 'POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces', + ], + createWithRepoForAuthenticatedUser: [ + 'POST /repos/{owner}/{repo}/codespaces', + ], + deleteForAuthenticatedUser: [ + 'DELETE /user/codespaces/{codespace_name}', + ], + deleteFromOrganization: [ + 'DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}', + ], + deleteRepoSecret: [ + 'DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}', + ], + deleteSecretForAuthenticatedUser: [ + 'DELETE /user/codespaces/secrets/{secret_name}', + ], + exportForAuthenticatedUser: [ + 'POST /user/codespaces/{codespace_name}/exports', + ], + getExportDetailsForAuthenticatedUser: [ + 'GET /user/codespaces/{codespace_name}/exports/{export_id}', + ], + getForAuthenticatedUser: ['GET /user/codespaces/{codespace_name}'], + getPublicKeyForAuthenticatedUser: [ + 'GET /user/codespaces/secrets/public-key', + ], + getRepoPublicKey: [ + 'GET /repos/{owner}/{repo}/codespaces/secrets/public-key', + ], + getRepoSecret: [ + 'GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}', + ], + getSecretForAuthenticatedUser: [ + 'GET /user/codespaces/secrets/{secret_name}', + ], + listDevcontainersInRepositoryForAuthenticatedUser: [ + 'GET /repos/{owner}/{repo}/codespaces/devcontainers', + ], + listForAuthenticatedUser: ['GET /user/codespaces'], + listInOrganization: [ + 'GET /orgs/{org}/codespaces', + {}, + { renamedParameters: { org_id: 'org' } }, + ], + listInRepositoryForAuthenticatedUser: [ + 'GET /repos/{owner}/{repo}/codespaces', + ], + listRepoSecrets: ['GET /repos/{owner}/{repo}/codespaces/secrets'], + listRepositoriesForSecretForAuthenticatedUser: [ + 'GET /user/codespaces/secrets/{secret_name}/repositories', + ], + listSecretsForAuthenticatedUser: ['GET /user/codespaces/secrets'], + removeRepositoryForSecretForAuthenticatedUser: [ + 'DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}', + ], + repoMachinesForAuthenticatedUser: [ + 'GET /repos/{owner}/{repo}/codespaces/machines', + ], + setRepositoriesForSecretForAuthenticatedUser: [ + 'PUT /user/codespaces/secrets/{secret_name}/repositories', + ], + startForAuthenticatedUser: [ + 'POST /user/codespaces/{codespace_name}/start', + ], + stopForAuthenticatedUser: [ + 'POST /user/codespaces/{codespace_name}/stop', + ], + stopInOrganization: [ + 'POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop', + ], + updateForAuthenticatedUser: ['PATCH /user/codespaces/{codespace_name}'], + }, + dependabot: { + addSelectedRepoToOrgSecret: [ + 'PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}', + ], + createOrUpdateOrgSecret: [ + 'PUT /orgs/{org}/dependabot/secrets/{secret_name}', + ], + createOrUpdateRepoSecret: [ + 'PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}', + ], + deleteOrgSecret: [ + 'DELETE /orgs/{org}/dependabot/secrets/{secret_name}', + ], + deleteRepoSecret: [ + 'DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}', + ], + getOrgPublicKey: ['GET /orgs/{org}/dependabot/secrets/public-key'], + getOrgSecret: ['GET /orgs/{org}/dependabot/secrets/{secret_name}'], + getRepoPublicKey: [ + 'GET /repos/{owner}/{repo}/dependabot/secrets/public-key', + ], + getRepoSecret: [ + 'GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}', + ], + listOrgSecrets: ['GET /orgs/{org}/dependabot/secrets'], + listRepoSecrets: ['GET /repos/{owner}/{repo}/dependabot/secrets'], + listSelectedReposForOrgSecret: [ + 'GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories', + ], + removeSelectedRepoFromOrgSecret: [ + 'DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}', + ], + setSelectedReposForOrgSecret: [ + 'PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories', + ], + }, + dependencyGraph: { + createRepositorySnapshot: [ + 'POST /repos/{owner}/{repo}/dependency-graph/snapshots', + ], + diffRange: [ + 'GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}', + ], + }, + emojis: { get: ['GET /emojis'] }, + enterpriseAdmin: { + addCustomLabelsToSelfHostedRunnerForEnterprise: [ + 'POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels', + ], + disableSelectedOrganizationGithubActionsEnterprise: [ + 'DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}', + ], + enableSelectedOrganizationGithubActionsEnterprise: [ + 'PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}', + ], + getAllowedActionsEnterprise: [ + 'GET /enterprises/{enterprise}/actions/permissions/selected-actions', + ], + getGithubActionsPermissionsEnterprise: [ + 'GET /enterprises/{enterprise}/actions/permissions', + ], + getServerStatistics: [ + 'GET /enterprise-installation/{enterprise_or_org}/server-statistics', + ], + listLabelsForSelfHostedRunnerForEnterprise: [ + 'GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels', + ], + listSelectedOrganizationsEnabledGithubActionsEnterprise: [ + 'GET /enterprises/{enterprise}/actions/permissions/organizations', + ], + removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [ + 'DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels', + ], + removeCustomLabelFromSelfHostedRunnerForEnterprise: [ + 'DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}', + ], + setAllowedActionsEnterprise: [ + 'PUT /enterprises/{enterprise}/actions/permissions/selected-actions', + ], + setCustomLabelsForSelfHostedRunnerForEnterprise: [ + 'PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels', + ], + setGithubActionsPermissionsEnterprise: [ + 'PUT /enterprises/{enterprise}/actions/permissions', + ], + setSelectedOrganizationsEnabledGithubActionsEnterprise: [ + 'PUT /enterprises/{enterprise}/actions/permissions/organizations', + ], + }, + gists: { + checkIsStarred: ['GET /gists/{gist_id}/star'], + create: ['POST /gists'], + createComment: ['POST /gists/{gist_id}/comments'], + delete: ['DELETE /gists/{gist_id}'], + deleteComment: ['DELETE /gists/{gist_id}/comments/{comment_id}'], + fork: ['POST /gists/{gist_id}/forks'], + get: ['GET /gists/{gist_id}'], + getComment: ['GET /gists/{gist_id}/comments/{comment_id}'], + getRevision: ['GET /gists/{gist_id}/{sha}'], + list: ['GET /gists'], + listComments: ['GET /gists/{gist_id}/comments'], + listCommits: ['GET /gists/{gist_id}/commits'], + listForUser: ['GET /users/{username}/gists'], + listForks: ['GET /gists/{gist_id}/forks'], + listPublic: ['GET /gists/public'], + listStarred: ['GET /gists/starred'], + star: ['PUT /gists/{gist_id}/star'], + unstar: ['DELETE /gists/{gist_id}/star'], + update: ['PATCH /gists/{gist_id}'], + updateComment: ['PATCH /gists/{gist_id}/comments/{comment_id}'], + }, + git: { + createBlob: ['POST /repos/{owner}/{repo}/git/blobs'], + createCommit: ['POST /repos/{owner}/{repo}/git/commits'], + createRef: ['POST /repos/{owner}/{repo}/git/refs'], + createTag: ['POST /repos/{owner}/{repo}/git/tags'], + createTree: ['POST /repos/{owner}/{repo}/git/trees'], + deleteRef: ['DELETE /repos/{owner}/{repo}/git/refs/{ref}'], + getBlob: ['GET /repos/{owner}/{repo}/git/blobs/{file_sha}'], + getCommit: ['GET /repos/{owner}/{repo}/git/commits/{commit_sha}'], + getRef: ['GET /repos/{owner}/{repo}/git/ref/{ref}'], + getTag: ['GET /repos/{owner}/{repo}/git/tags/{tag_sha}'], + getTree: ['GET /repos/{owner}/{repo}/git/trees/{tree_sha}'], + listMatchingRefs: ['GET /repos/{owner}/{repo}/git/matching-refs/{ref}'], + updateRef: ['PATCH /repos/{owner}/{repo}/git/refs/{ref}'], + }, + gitignore: { + getAllTemplates: ['GET /gitignore/templates'], + getTemplate: ['GET /gitignore/templates/{name}'], + }, + interactions: { + getRestrictionsForAuthenticatedUser: ['GET /user/interaction-limits'], + getRestrictionsForOrg: ['GET /orgs/{org}/interaction-limits'], + getRestrictionsForRepo: [ + 'GET /repos/{owner}/{repo}/interaction-limits', + ], + getRestrictionsForYourPublicRepos: [ + 'GET /user/interaction-limits', + {}, + { renamed: ['interactions', 'getRestrictionsForAuthenticatedUser'] }, + ], + removeRestrictionsForAuthenticatedUser: [ + 'DELETE /user/interaction-limits', + ], + removeRestrictionsForOrg: ['DELETE /orgs/{org}/interaction-limits'], + removeRestrictionsForRepo: [ + 'DELETE /repos/{owner}/{repo}/interaction-limits', + ], + removeRestrictionsForYourPublicRepos: [ + 'DELETE /user/interaction-limits', + {}, + { + renamed: ['interactions', 'removeRestrictionsForAuthenticatedUser'], + }, + ], + setRestrictionsForAuthenticatedUser: ['PUT /user/interaction-limits'], + setRestrictionsForOrg: ['PUT /orgs/{org}/interaction-limits'], + setRestrictionsForRepo: [ + 'PUT /repos/{owner}/{repo}/interaction-limits', + ], + setRestrictionsForYourPublicRepos: [ + 'PUT /user/interaction-limits', + {}, + { renamed: ['interactions', 'setRestrictionsForAuthenticatedUser'] }, + ], + }, + issues: { + addAssignees: [ + 'POST /repos/{owner}/{repo}/issues/{issue_number}/assignees', + ], + addLabels: ['POST /repos/{owner}/{repo}/issues/{issue_number}/labels'], + checkUserCanBeAssigned: [ + 'GET /repos/{owner}/{repo}/assignees/{assignee}', + ], + create: ['POST /repos/{owner}/{repo}/issues'], + createComment: [ + 'POST /repos/{owner}/{repo}/issues/{issue_number}/comments', + ], + createLabel: ['POST /repos/{owner}/{repo}/labels'], + createMilestone: ['POST /repos/{owner}/{repo}/milestones'], + deleteComment: [ + 'DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}', + ], + deleteLabel: ['DELETE /repos/{owner}/{repo}/labels/{name}'], + deleteMilestone: [ + 'DELETE /repos/{owner}/{repo}/milestones/{milestone_number}', + ], + get: ['GET /repos/{owner}/{repo}/issues/{issue_number}'], + getComment: ['GET /repos/{owner}/{repo}/issues/comments/{comment_id}'], + getEvent: ['GET /repos/{owner}/{repo}/issues/events/{event_id}'], + getLabel: ['GET /repos/{owner}/{repo}/labels/{name}'], + getMilestone: [ + 'GET /repos/{owner}/{repo}/milestones/{milestone_number}', + ], + list: ['GET /issues'], + listAssignees: ['GET /repos/{owner}/{repo}/assignees'], + listComments: [ + 'GET /repos/{owner}/{repo}/issues/{issue_number}/comments', + ], + listCommentsForRepo: ['GET /repos/{owner}/{repo}/issues/comments'], + listEvents: ['GET /repos/{owner}/{repo}/issues/{issue_number}/events'], + listEventsForRepo: ['GET /repos/{owner}/{repo}/issues/events'], + listEventsForTimeline: [ + 'GET /repos/{owner}/{repo}/issues/{issue_number}/timeline', + ], + listForAuthenticatedUser: ['GET /user/issues'], + listForOrg: ['GET /orgs/{org}/issues'], + listForRepo: ['GET /repos/{owner}/{repo}/issues'], + listLabelsForMilestone: [ + 'GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels', + ], + listLabelsForRepo: ['GET /repos/{owner}/{repo}/labels'], + listLabelsOnIssue: [ + 'GET /repos/{owner}/{repo}/issues/{issue_number}/labels', + ], + listMilestones: ['GET /repos/{owner}/{repo}/milestones'], + lock: ['PUT /repos/{owner}/{repo}/issues/{issue_number}/lock'], + removeAllLabels: [ + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels', + ], + removeAssignees: [ + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees', + ], + removeLabel: [ + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', + ], + setLabels: ['PUT /repos/{owner}/{repo}/issues/{issue_number}/labels'], + unlock: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock'], + update: ['PATCH /repos/{owner}/{repo}/issues/{issue_number}'], + updateComment: [ + 'PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}', + ], + updateLabel: ['PATCH /repos/{owner}/{repo}/labels/{name}'], + updateMilestone: [ + 'PATCH /repos/{owner}/{repo}/milestones/{milestone_number}', + ], + }, + licenses: { + get: ['GET /licenses/{license}'], + getAllCommonlyUsed: ['GET /licenses'], + getForRepo: ['GET /repos/{owner}/{repo}/license'], + }, + markdown: { + render: ['POST /markdown'], + renderRaw: [ + 'POST /markdown/raw', + { headers: { 'content-type': 'text/plain; charset=utf-8' } }, + ], + }, + meta: { + get: ['GET /meta'], + getOctocat: ['GET /octocat'], + getZen: ['GET /zen'], + root: ['GET /'], + }, + migrations: { + cancelImport: ['DELETE /repos/{owner}/{repo}/import'], + deleteArchiveForAuthenticatedUser: [ + 'DELETE /user/migrations/{migration_id}/archive', + ], + deleteArchiveForOrg: [ + 'DELETE /orgs/{org}/migrations/{migration_id}/archive', + ], + downloadArchiveForOrg: [ + 'GET /orgs/{org}/migrations/{migration_id}/archive', + ], + getArchiveForAuthenticatedUser: [ + 'GET /user/migrations/{migration_id}/archive', + ], + getCommitAuthors: ['GET /repos/{owner}/{repo}/import/authors'], + getImportStatus: ['GET /repos/{owner}/{repo}/import'], + getLargeFiles: ['GET /repos/{owner}/{repo}/import/large_files'], + getStatusForAuthenticatedUser: ['GET /user/migrations/{migration_id}'], + getStatusForOrg: ['GET /orgs/{org}/migrations/{migration_id}'], + listForAuthenticatedUser: ['GET /user/migrations'], + listForOrg: ['GET /orgs/{org}/migrations'], + listReposForAuthenticatedUser: [ + 'GET /user/migrations/{migration_id}/repositories', + ], + listReposForOrg: [ + 'GET /orgs/{org}/migrations/{migration_id}/repositories', + ], + listReposForUser: [ + 'GET /user/migrations/{migration_id}/repositories', + {}, + { renamed: ['migrations', 'listReposForAuthenticatedUser'] }, + ], + mapCommitAuthor: [ + 'PATCH /repos/{owner}/{repo}/import/authors/{author_id}', + ], + setLfsPreference: ['PATCH /repos/{owner}/{repo}/import/lfs'], + startForAuthenticatedUser: ['POST /user/migrations'], + startForOrg: ['POST /orgs/{org}/migrations'], + startImport: ['PUT /repos/{owner}/{repo}/import'], + unlockRepoForAuthenticatedUser: [ + 'DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock', + ], + unlockRepoForOrg: [ + 'DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock', + ], + updateImport: ['PATCH /repos/{owner}/{repo}/import'], + }, + orgs: { + blockUser: ['PUT /orgs/{org}/blocks/{username}'], + cancelInvitation: ['DELETE /orgs/{org}/invitations/{invitation_id}'], + checkBlockedUser: ['GET /orgs/{org}/blocks/{username}'], + checkMembershipForUser: ['GET /orgs/{org}/members/{username}'], + checkPublicMembershipForUser: [ + 'GET /orgs/{org}/public_members/{username}', + ], + convertMemberToOutsideCollaborator: [ + 'PUT /orgs/{org}/outside_collaborators/{username}', + ], + createInvitation: ['POST /orgs/{org}/invitations'], + createWebhook: ['POST /orgs/{org}/hooks'], + deleteWebhook: ['DELETE /orgs/{org}/hooks/{hook_id}'], + get: ['GET /orgs/{org}'], + getMembershipForAuthenticatedUser: ['GET /user/memberships/orgs/{org}'], + getMembershipForUser: ['GET /orgs/{org}/memberships/{username}'], + getWebhook: ['GET /orgs/{org}/hooks/{hook_id}'], + getWebhookConfigForOrg: ['GET /orgs/{org}/hooks/{hook_id}/config'], + getWebhookDelivery: [ + 'GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}', + ], + list: ['GET /organizations'], + listAppInstallations: ['GET /orgs/{org}/installations'], + listBlockedUsers: ['GET /orgs/{org}/blocks'], + listCustomRoles: ['GET /organizations/{organization_id}/custom_roles'], + listFailedInvitations: ['GET /orgs/{org}/failed_invitations'], + listForAuthenticatedUser: ['GET /user/orgs'], + listForUser: ['GET /users/{username}/orgs'], + listInvitationTeams: [ + 'GET /orgs/{org}/invitations/{invitation_id}/teams', + ], + listMembers: ['GET /orgs/{org}/members'], + listMembershipsForAuthenticatedUser: ['GET /user/memberships/orgs'], + listOutsideCollaborators: ['GET /orgs/{org}/outside_collaborators'], + listPendingInvitations: ['GET /orgs/{org}/invitations'], + listPublicMembers: ['GET /orgs/{org}/public_members'], + listWebhookDeliveries: ['GET /orgs/{org}/hooks/{hook_id}/deliveries'], + listWebhooks: ['GET /orgs/{org}/hooks'], + pingWebhook: ['POST /orgs/{org}/hooks/{hook_id}/pings'], + redeliverWebhookDelivery: [ + 'POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts', + ], + removeMember: ['DELETE /orgs/{org}/members/{username}'], + removeMembershipForUser: ['DELETE /orgs/{org}/memberships/{username}'], + removeOutsideCollaborator: [ + 'DELETE /orgs/{org}/outside_collaborators/{username}', + ], + removePublicMembershipForAuthenticatedUser: [ + 'DELETE /orgs/{org}/public_members/{username}', + ], + setMembershipForUser: ['PUT /orgs/{org}/memberships/{username}'], + setPublicMembershipForAuthenticatedUser: [ + 'PUT /orgs/{org}/public_members/{username}', + ], + unblockUser: ['DELETE /orgs/{org}/blocks/{username}'], + update: ['PATCH /orgs/{org}'], + updateMembershipForAuthenticatedUser: [ + 'PATCH /user/memberships/orgs/{org}', + ], + updateWebhook: ['PATCH /orgs/{org}/hooks/{hook_id}'], + updateWebhookConfigForOrg: ['PATCH /orgs/{org}/hooks/{hook_id}/config'], + }, + packages: { + deletePackageForAuthenticatedUser: [ + 'DELETE /user/packages/{package_type}/{package_name}', + ], + deletePackageForOrg: [ + 'DELETE /orgs/{org}/packages/{package_type}/{package_name}', + ], + deletePackageForUser: [ + 'DELETE /users/{username}/packages/{package_type}/{package_name}', + ], + deletePackageVersionForAuthenticatedUser: [ + 'DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}', + ], + deletePackageVersionForOrg: [ + 'DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}', + ], + deletePackageVersionForUser: [ + 'DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}', + ], + getAllPackageVersionsForAPackageOwnedByAnOrg: [ + 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions', + {}, + { + renamed: ['packages', 'getAllPackageVersionsForPackageOwnedByOrg'], + }, + ], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ + 'GET /user/packages/{package_type}/{package_name}/versions', + {}, + { + renamed: [ + 'packages', + 'getAllPackageVersionsForPackageOwnedByAuthenticatedUser', + ], + }, + ], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ + 'GET /user/packages/{package_type}/{package_name}/versions', + ], + getAllPackageVersionsForPackageOwnedByOrg: [ + 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions', + ], + getAllPackageVersionsForPackageOwnedByUser: [ + 'GET /users/{username}/packages/{package_type}/{package_name}/versions', + ], + getPackageForAuthenticatedUser: [ + 'GET /user/packages/{package_type}/{package_name}', + ], + getPackageForOrganization: [ + 'GET /orgs/{org}/packages/{package_type}/{package_name}', + ], + getPackageForUser: [ + 'GET /users/{username}/packages/{package_type}/{package_name}', + ], + getPackageVersionForAuthenticatedUser: [ + 'GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}', + ], + getPackageVersionForOrganization: [ + 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}', + ], + getPackageVersionForUser: [ + 'GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}', + ], + listPackagesForAuthenticatedUser: ['GET /user/packages'], + listPackagesForOrganization: ['GET /orgs/{org}/packages'], + listPackagesForUser: ['GET /users/{username}/packages'], + restorePackageForAuthenticatedUser: [ + 'POST /user/packages/{package_type}/{package_name}/restore{?token}', + ], + restorePackageForOrg: [ + 'POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}', + ], + restorePackageForUser: [ + 'POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}', + ], + restorePackageVersionForAuthenticatedUser: [ + 'POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore', + ], + restorePackageVersionForOrg: [ + 'POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore', + ], + restorePackageVersionForUser: [ + 'POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore', + ], + }, + projects: { + addCollaborator: [ + 'PUT /projects/{project_id}/collaborators/{username}', + ], + createCard: ['POST /projects/columns/{column_id}/cards'], + createColumn: ['POST /projects/{project_id}/columns'], + createForAuthenticatedUser: ['POST /user/projects'], + createForOrg: ['POST /orgs/{org}/projects'], + createForRepo: ['POST /repos/{owner}/{repo}/projects'], + delete: ['DELETE /projects/{project_id}'], + deleteCard: ['DELETE /projects/columns/cards/{card_id}'], + deleteColumn: ['DELETE /projects/columns/{column_id}'], + get: ['GET /projects/{project_id}'], + getCard: ['GET /projects/columns/cards/{card_id}'], + getColumn: ['GET /projects/columns/{column_id}'], + getPermissionForUser: [ + 'GET /projects/{project_id}/collaborators/{username}/permission', + ], + listCards: ['GET /projects/columns/{column_id}/cards'], + listCollaborators: ['GET /projects/{project_id}/collaborators'], + listColumns: ['GET /projects/{project_id}/columns'], + listForOrg: ['GET /orgs/{org}/projects'], + listForRepo: ['GET /repos/{owner}/{repo}/projects'], + listForUser: ['GET /users/{username}/projects'], + moveCard: ['POST /projects/columns/cards/{card_id}/moves'], + moveColumn: ['POST /projects/columns/{column_id}/moves'], + removeCollaborator: [ + 'DELETE /projects/{project_id}/collaborators/{username}', + ], + update: ['PATCH /projects/{project_id}'], + updateCard: ['PATCH /projects/columns/cards/{card_id}'], + updateColumn: ['PATCH /projects/columns/{column_id}'], + }, + pulls: { + checkIfMerged: ['GET /repos/{owner}/{repo}/pulls/{pull_number}/merge'], + create: ['POST /repos/{owner}/{repo}/pulls'], + createReplyForReviewComment: [ + 'POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies', + ], + createReview: [ + 'POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews', + ], + createReviewComment: [ + 'POST /repos/{owner}/{repo}/pulls/{pull_number}/comments', + ], + deletePendingReview: [ + 'DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}', + ], + deleteReviewComment: [ + 'DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}', + ], + dismissReview: [ + 'PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals', + ], + get: ['GET /repos/{owner}/{repo}/pulls/{pull_number}'], + getReview: [ + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}', + ], + getReviewComment: [ + 'GET /repos/{owner}/{repo}/pulls/comments/{comment_id}', + ], + list: ['GET /repos/{owner}/{repo}/pulls'], + listCommentsForReview: [ + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments', + ], + listCommits: ['GET /repos/{owner}/{repo}/pulls/{pull_number}/commits'], + listFiles: ['GET /repos/{owner}/{repo}/pulls/{pull_number}/files'], + listRequestedReviewers: [ + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers', + ], + listReviewComments: [ + 'GET /repos/{owner}/{repo}/pulls/{pull_number}/comments', + ], + listReviewCommentsForRepo: ['GET /repos/{owner}/{repo}/pulls/comments'], + listReviews: ['GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews'], + merge: ['PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge'], + removeRequestedReviewers: [ + 'DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers', + ], + requestReviewers: [ + 'POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers', + ], + submitReview: [ + 'POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events', + ], + update: ['PATCH /repos/{owner}/{repo}/pulls/{pull_number}'], + updateBranch: [ + 'PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch', + ], + updateReview: [ + 'PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}', + ], + updateReviewComment: [ + 'PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}', + ], + }, + rateLimit: { get: ['GET /rate_limit'] }, + reactions: { + createForCommitComment: [ + 'POST /repos/{owner}/{repo}/comments/{comment_id}/reactions', + ], + createForIssue: [ + 'POST /repos/{owner}/{repo}/issues/{issue_number}/reactions', + ], + createForIssueComment: [ + 'POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions', + ], + createForPullRequestReviewComment: [ + 'POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions', + ], + createForRelease: [ + 'POST /repos/{owner}/{repo}/releases/{release_id}/reactions', + ], + createForTeamDiscussionCommentInOrg: [ + 'POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions', + ], + createForTeamDiscussionInOrg: [ + 'POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions', + ], + deleteForCommitComment: [ + 'DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}', + ], + deleteForIssue: [ + 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}', + ], + deleteForIssueComment: [ + 'DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}', + ], + deleteForPullRequestComment: [ + 'DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}', + ], + deleteForRelease: [ + 'DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}', + ], + deleteForTeamDiscussion: [ + 'DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}', + ], + deleteForTeamDiscussionComment: [ + 'DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}', + ], + listForCommitComment: [ + 'GET /repos/{owner}/{repo}/comments/{comment_id}/reactions', + ], + listForIssue: [ + 'GET /repos/{owner}/{repo}/issues/{issue_number}/reactions', + ], + listForIssueComment: [ + 'GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions', + ], + listForPullRequestReviewComment: [ + 'GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions', + ], + listForRelease: [ + 'GET /repos/{owner}/{repo}/releases/{release_id}/reactions', + ], + listForTeamDiscussionCommentInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions', + ], + listForTeamDiscussionInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions', + ], + }, + repos: { + acceptInvitation: [ + 'PATCH /user/repository_invitations/{invitation_id}', + {}, + { renamed: ['repos', 'acceptInvitationForAuthenticatedUser'] }, + ], + acceptInvitationForAuthenticatedUser: [ + 'PATCH /user/repository_invitations/{invitation_id}', + ], + addAppAccessRestrictions: [ + 'POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps', + {}, + { mapToData: 'apps' }, + ], + addCollaborator: ['PUT /repos/{owner}/{repo}/collaborators/{username}'], + addStatusCheckContexts: [ + 'POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts', + {}, + { mapToData: 'contexts' }, + ], + addTeamAccessRestrictions: [ + 'POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams', + {}, + { mapToData: 'teams' }, + ], + addUserAccessRestrictions: [ + 'POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users', + {}, + { mapToData: 'users' }, + ], + checkCollaborator: [ + 'GET /repos/{owner}/{repo}/collaborators/{username}', + ], + checkVulnerabilityAlerts: [ + 'GET /repos/{owner}/{repo}/vulnerability-alerts', + ], + codeownersErrors: ['GET /repos/{owner}/{repo}/codeowners/errors'], + compareCommits: ['GET /repos/{owner}/{repo}/compare/{base}...{head}'], + compareCommitsWithBasehead: [ + 'GET /repos/{owner}/{repo}/compare/{basehead}', + ], + createAutolink: ['POST /repos/{owner}/{repo}/autolinks'], + createCommitComment: [ + 'POST /repos/{owner}/{repo}/commits/{commit_sha}/comments', + ], + createCommitSignatureProtection: [ + 'POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures', + ], + createCommitStatus: ['POST /repos/{owner}/{repo}/statuses/{sha}'], + createDeployKey: ['POST /repos/{owner}/{repo}/keys'], + createDeployment: ['POST /repos/{owner}/{repo}/deployments'], + createDeploymentStatus: [ + 'POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses', + ], + createDispatchEvent: ['POST /repos/{owner}/{repo}/dispatches'], + createForAuthenticatedUser: ['POST /user/repos'], + createFork: ['POST /repos/{owner}/{repo}/forks'], + createInOrg: ['POST /orgs/{org}/repos'], + createOrUpdateEnvironment: [ + 'PUT /repos/{owner}/{repo}/environments/{environment_name}', + ], + createOrUpdateFileContents: [ + 'PUT /repos/{owner}/{repo}/contents/{path}', + ], + createPagesSite: ['POST /repos/{owner}/{repo}/pages'], + createRelease: ['POST /repos/{owner}/{repo}/releases'], + createTagProtection: ['POST /repos/{owner}/{repo}/tags/protection'], + createUsingTemplate: [ + 'POST /repos/{template_owner}/{template_repo}/generate', + ], + createWebhook: ['POST /repos/{owner}/{repo}/hooks'], + declineInvitation: [ + 'DELETE /user/repository_invitations/{invitation_id}', + {}, + { renamed: ['repos', 'declineInvitationForAuthenticatedUser'] }, + ], + declineInvitationForAuthenticatedUser: [ + 'DELETE /user/repository_invitations/{invitation_id}', + ], + delete: ['DELETE /repos/{owner}/{repo}'], + deleteAccessRestrictions: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions', + ], + deleteAdminBranchProtection: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins', + ], + deleteAnEnvironment: [ + 'DELETE /repos/{owner}/{repo}/environments/{environment_name}', + ], + deleteAutolink: [ + 'DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}', + ], + deleteBranchProtection: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection', + ], + deleteCommitComment: [ + 'DELETE /repos/{owner}/{repo}/comments/{comment_id}', + ], + deleteCommitSignatureProtection: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures', + ], + deleteDeployKey: ['DELETE /repos/{owner}/{repo}/keys/{key_id}'], + deleteDeployment: [ + 'DELETE /repos/{owner}/{repo}/deployments/{deployment_id}', + ], + deleteFile: ['DELETE /repos/{owner}/{repo}/contents/{path}'], + deleteInvitation: [ + 'DELETE /repos/{owner}/{repo}/invitations/{invitation_id}', + ], + deletePagesSite: ['DELETE /repos/{owner}/{repo}/pages'], + deletePullRequestReviewProtection: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews', + ], + deleteRelease: ['DELETE /repos/{owner}/{repo}/releases/{release_id}'], + deleteReleaseAsset: [ + 'DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}', + ], + deleteTagProtection: [ + 'DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}', + ], + deleteWebhook: ['DELETE /repos/{owner}/{repo}/hooks/{hook_id}'], + disableAutomatedSecurityFixes: [ + 'DELETE /repos/{owner}/{repo}/automated-security-fixes', + ], + disableLfsForRepo: ['DELETE /repos/{owner}/{repo}/lfs'], + disableVulnerabilityAlerts: [ + 'DELETE /repos/{owner}/{repo}/vulnerability-alerts', + ], + downloadArchive: [ + 'GET /repos/{owner}/{repo}/zipball/{ref}', + {}, + { renamed: ['repos', 'downloadZipballArchive'] }, + ], + downloadTarballArchive: ['GET /repos/{owner}/{repo}/tarball/{ref}'], + downloadZipballArchive: ['GET /repos/{owner}/{repo}/zipball/{ref}'], + enableAutomatedSecurityFixes: [ + 'PUT /repos/{owner}/{repo}/automated-security-fixes', + ], + enableLfsForRepo: ['PUT /repos/{owner}/{repo}/lfs'], + enableVulnerabilityAlerts: [ + 'PUT /repos/{owner}/{repo}/vulnerability-alerts', + ], + generateReleaseNotes: [ + 'POST /repos/{owner}/{repo}/releases/generate-notes', + ], + get: ['GET /repos/{owner}/{repo}'], + getAccessRestrictions: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions', + ], + getAdminBranchProtection: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins', + ], + getAllEnvironments: ['GET /repos/{owner}/{repo}/environments'], + getAllStatusCheckContexts: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts', + ], + getAllTopics: ['GET /repos/{owner}/{repo}/topics'], + getAppsWithAccessToProtectedBranch: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps', + ], + getAutolink: ['GET /repos/{owner}/{repo}/autolinks/{autolink_id}'], + getBranch: ['GET /repos/{owner}/{repo}/branches/{branch}'], + getBranchProtection: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection', + ], + getClones: ['GET /repos/{owner}/{repo}/traffic/clones'], + getCodeFrequencyStats: [ + 'GET /repos/{owner}/{repo}/stats/code_frequency', + ], + getCollaboratorPermissionLevel: [ + 'GET /repos/{owner}/{repo}/collaborators/{username}/permission', + ], + getCombinedStatusForRef: [ + 'GET /repos/{owner}/{repo}/commits/{ref}/status', + ], + getCommit: ['GET /repos/{owner}/{repo}/commits/{ref}'], + getCommitActivityStats: [ + 'GET /repos/{owner}/{repo}/stats/commit_activity', + ], + getCommitComment: ['GET /repos/{owner}/{repo}/comments/{comment_id}'], + getCommitSignatureProtection: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures', + ], + getCommunityProfileMetrics: [ + 'GET /repos/{owner}/{repo}/community/profile', + ], + getContent: ['GET /repos/{owner}/{repo}/contents/{path}'], + getContributorsStats: ['GET /repos/{owner}/{repo}/stats/contributors'], + getDeployKey: ['GET /repos/{owner}/{repo}/keys/{key_id}'], + getDeployment: [ + 'GET /repos/{owner}/{repo}/deployments/{deployment_id}', + ], + getDeploymentStatus: [ + 'GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}', + ], + getEnvironment: [ + 'GET /repos/{owner}/{repo}/environments/{environment_name}', + ], + getLatestPagesBuild: ['GET /repos/{owner}/{repo}/pages/builds/latest'], + getLatestRelease: ['GET /repos/{owner}/{repo}/releases/latest'], + getPages: ['GET /repos/{owner}/{repo}/pages'], + getPagesBuild: ['GET /repos/{owner}/{repo}/pages/builds/{build_id}'], + getPagesHealthCheck: ['GET /repos/{owner}/{repo}/pages/health'], + getParticipationStats: [ + 'GET /repos/{owner}/{repo}/stats/participation', + ], + getPullRequestReviewProtection: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews', + ], + getPunchCardStats: ['GET /repos/{owner}/{repo}/stats/punch_card'], + getReadme: ['GET /repos/{owner}/{repo}/readme'], + getReadmeInDirectory: ['GET /repos/{owner}/{repo}/readme/{dir}'], + getRelease: ['GET /repos/{owner}/{repo}/releases/{release_id}'], + getReleaseAsset: [ + 'GET /repos/{owner}/{repo}/releases/assets/{asset_id}', + ], + getReleaseByTag: ['GET /repos/{owner}/{repo}/releases/tags/{tag}'], + getStatusChecksProtection: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks', + ], + getTeamsWithAccessToProtectedBranch: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams', + ], + getTopPaths: ['GET /repos/{owner}/{repo}/traffic/popular/paths'], + getTopReferrers: [ + 'GET /repos/{owner}/{repo}/traffic/popular/referrers', + ], + getUsersWithAccessToProtectedBranch: [ + 'GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users', + ], + getViews: ['GET /repos/{owner}/{repo}/traffic/views'], + getWebhook: ['GET /repos/{owner}/{repo}/hooks/{hook_id}'], + getWebhookConfigForRepo: [ + 'GET /repos/{owner}/{repo}/hooks/{hook_id}/config', + ], + getWebhookDelivery: [ + 'GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}', + ], + listAutolinks: ['GET /repos/{owner}/{repo}/autolinks'], + listBranches: ['GET /repos/{owner}/{repo}/branches'], + listBranchesForHeadCommit: [ + 'GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head', + ], + listCollaborators: ['GET /repos/{owner}/{repo}/collaborators'], + listCommentsForCommit: [ + 'GET /repos/{owner}/{repo}/commits/{commit_sha}/comments', + ], + listCommitCommentsForRepo: ['GET /repos/{owner}/{repo}/comments'], + listCommitStatusesForRef: [ + 'GET /repos/{owner}/{repo}/commits/{ref}/statuses', + ], + listCommits: ['GET /repos/{owner}/{repo}/commits'], + listContributors: ['GET /repos/{owner}/{repo}/contributors'], + listDeployKeys: ['GET /repos/{owner}/{repo}/keys'], + listDeploymentStatuses: [ + 'GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses', + ], + listDeployments: ['GET /repos/{owner}/{repo}/deployments'], + listForAuthenticatedUser: ['GET /user/repos'], + listForOrg: ['GET /orgs/{org}/repos'], + listForUser: ['GET /users/{username}/repos'], + listForks: ['GET /repos/{owner}/{repo}/forks'], + listInvitations: ['GET /repos/{owner}/{repo}/invitations'], + listInvitationsForAuthenticatedUser: [ + 'GET /user/repository_invitations', + ], + listLanguages: ['GET /repos/{owner}/{repo}/languages'], + listPagesBuilds: ['GET /repos/{owner}/{repo}/pages/builds'], + listPublic: ['GET /repositories'], + listPullRequestsAssociatedWithCommit: [ + 'GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls', + ], + listReleaseAssets: [ + 'GET /repos/{owner}/{repo}/releases/{release_id}/assets', + ], + listReleases: ['GET /repos/{owner}/{repo}/releases'], + listTagProtection: ['GET /repos/{owner}/{repo}/tags/protection'], + listTags: ['GET /repos/{owner}/{repo}/tags'], + listTeams: ['GET /repos/{owner}/{repo}/teams'], + listWebhookDeliveries: [ + 'GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries', + ], + listWebhooks: ['GET /repos/{owner}/{repo}/hooks'], + merge: ['POST /repos/{owner}/{repo}/merges'], + mergeUpstream: ['POST /repos/{owner}/{repo}/merge-upstream'], + pingWebhook: ['POST /repos/{owner}/{repo}/hooks/{hook_id}/pings'], + redeliverWebhookDelivery: [ + 'POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts', + ], + removeAppAccessRestrictions: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps', + {}, + { mapToData: 'apps' }, + ], + removeCollaborator: [ + 'DELETE /repos/{owner}/{repo}/collaborators/{username}', + ], + removeStatusCheckContexts: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts', + {}, + { mapToData: 'contexts' }, + ], + removeStatusCheckProtection: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks', + ], + removeTeamAccessRestrictions: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams', + {}, + { mapToData: 'teams' }, + ], + removeUserAccessRestrictions: [ + 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users', + {}, + { mapToData: 'users' }, + ], + renameBranch: ['POST /repos/{owner}/{repo}/branches/{branch}/rename'], + replaceAllTopics: ['PUT /repos/{owner}/{repo}/topics'], + requestPagesBuild: ['POST /repos/{owner}/{repo}/pages/builds'], + setAdminBranchProtection: [ + 'POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins', + ], + setAppAccessRestrictions: [ + 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps', + {}, + { mapToData: 'apps' }, + ], + setStatusCheckContexts: [ + 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts', + {}, + { mapToData: 'contexts' }, + ], + setTeamAccessRestrictions: [ + 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams', + {}, + { mapToData: 'teams' }, + ], + setUserAccessRestrictions: [ + 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users', + {}, + { mapToData: 'users' }, + ], + testPushWebhook: ['POST /repos/{owner}/{repo}/hooks/{hook_id}/tests'], + transfer: ['POST /repos/{owner}/{repo}/transfer'], + update: ['PATCH /repos/{owner}/{repo}'], + updateBranchProtection: [ + 'PUT /repos/{owner}/{repo}/branches/{branch}/protection', + ], + updateCommitComment: [ + 'PATCH /repos/{owner}/{repo}/comments/{comment_id}', + ], + updateInformationAboutPagesSite: ['PUT /repos/{owner}/{repo}/pages'], + updateInvitation: [ + 'PATCH /repos/{owner}/{repo}/invitations/{invitation_id}', + ], + updatePullRequestReviewProtection: [ + 'PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews', + ], + updateRelease: ['PATCH /repos/{owner}/{repo}/releases/{release_id}'], + updateReleaseAsset: [ + 'PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}', + ], + updateStatusCheckPotection: [ + 'PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks', + {}, + { renamed: ['repos', 'updateStatusCheckProtection'] }, + ], + updateStatusCheckProtection: [ + 'PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks', + ], + updateWebhook: ['PATCH /repos/{owner}/{repo}/hooks/{hook_id}'], + updateWebhookConfigForRepo: [ + 'PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config', + ], + uploadReleaseAsset: [ + 'POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}', + { baseUrl: 'https://uploads.github.com' }, + ], + }, + search: { + code: ['GET /search/code'], + commits: ['GET /search/commits'], + issuesAndPullRequests: ['GET /search/issues'], + labels: ['GET /search/labels'], + repos: ['GET /search/repositories'], + topics: ['GET /search/topics'], + users: ['GET /search/users'], + }, + secretScanning: { + getAlert: [ + 'GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}', + ], + listAlertsForEnterprise: [ + 'GET /enterprises/{enterprise}/secret-scanning/alerts', + ], + listAlertsForOrg: ['GET /orgs/{org}/secret-scanning/alerts'], + listAlertsForRepo: ['GET /repos/{owner}/{repo}/secret-scanning/alerts'], + listLocationsForAlert: [ + 'GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations', + ], + updateAlert: [ + 'PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}', + ], + }, + teams: { + addOrUpdateMembershipForUserInOrg: [ + 'PUT /orgs/{org}/teams/{team_slug}/memberships/{username}', + ], + addOrUpdateProjectPermissionsInOrg: [ + 'PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}', + ], + addOrUpdateRepoPermissionsInOrg: [ + 'PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}', + ], + checkPermissionsForProjectInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/projects/{project_id}', + ], + checkPermissionsForRepoInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}', + ], + create: ['POST /orgs/{org}/teams'], + createDiscussionCommentInOrg: [ + 'POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments', + ], + createDiscussionInOrg: [ + 'POST /orgs/{org}/teams/{team_slug}/discussions', + ], + deleteDiscussionCommentInOrg: [ + 'DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}', + ], + deleteDiscussionInOrg: [ + 'DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}', + ], + deleteInOrg: ['DELETE /orgs/{org}/teams/{team_slug}'], + getByName: ['GET /orgs/{org}/teams/{team_slug}'], + getDiscussionCommentInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}', + ], + getDiscussionInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}', + ], + getMembershipForUserInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/memberships/{username}', + ], + list: ['GET /orgs/{org}/teams'], + listChildInOrg: ['GET /orgs/{org}/teams/{team_slug}/teams'], + listDiscussionCommentsInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments', + ], + listDiscussionsInOrg: ['GET /orgs/{org}/teams/{team_slug}/discussions'], + listForAuthenticatedUser: ['GET /user/teams'], + listMembersInOrg: ['GET /orgs/{org}/teams/{team_slug}/members'], + listPendingInvitationsInOrg: [ + 'GET /orgs/{org}/teams/{team_slug}/invitations', + ], + listProjectsInOrg: ['GET /orgs/{org}/teams/{team_slug}/projects'], + listReposInOrg: ['GET /orgs/{org}/teams/{team_slug}/repos'], + removeMembershipForUserInOrg: [ + 'DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}', + ], + removeProjectInOrg: [ + 'DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}', + ], + removeRepoInOrg: [ + 'DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}', + ], + updateDiscussionCommentInOrg: [ + 'PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}', + ], + updateDiscussionInOrg: [ + 'PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}', + ], + updateInOrg: ['PATCH /orgs/{org}/teams/{team_slug}'], + }, + users: { + addEmailForAuthenticated: [ + 'POST /user/emails', + {}, + { renamed: ['users', 'addEmailForAuthenticatedUser'] }, + ], + addEmailForAuthenticatedUser: ['POST /user/emails'], + block: ['PUT /user/blocks/{username}'], + checkBlocked: ['GET /user/blocks/{username}'], + checkFollowingForUser: [ + 'GET /users/{username}/following/{target_user}', + ], + checkPersonIsFollowedByAuthenticated: [ + 'GET /user/following/{username}', + ], + createGpgKeyForAuthenticated: [ + 'POST /user/gpg_keys', + {}, + { renamed: ['users', 'createGpgKeyForAuthenticatedUser'] }, + ], + createGpgKeyForAuthenticatedUser: ['POST /user/gpg_keys'], + createPublicSshKeyForAuthenticated: [ + 'POST /user/keys', + {}, + { renamed: ['users', 'createPublicSshKeyForAuthenticatedUser'] }, + ], + createPublicSshKeyForAuthenticatedUser: ['POST /user/keys'], + deleteEmailForAuthenticated: [ + 'DELETE /user/emails', + {}, + { renamed: ['users', 'deleteEmailForAuthenticatedUser'] }, + ], + deleteEmailForAuthenticatedUser: ['DELETE /user/emails'], + deleteGpgKeyForAuthenticated: [ + 'DELETE /user/gpg_keys/{gpg_key_id}', + {}, + { renamed: ['users', 'deleteGpgKeyForAuthenticatedUser'] }, + ], + deleteGpgKeyForAuthenticatedUser: [ + 'DELETE /user/gpg_keys/{gpg_key_id}', + ], + deletePublicSshKeyForAuthenticated: [ + 'DELETE /user/keys/{key_id}', + {}, + { renamed: ['users', 'deletePublicSshKeyForAuthenticatedUser'] }, + ], + deletePublicSshKeyForAuthenticatedUser: ['DELETE /user/keys/{key_id}'], + follow: ['PUT /user/following/{username}'], + getAuthenticated: ['GET /user'], + getByUsername: ['GET /users/{username}'], + getContextForUser: ['GET /users/{username}/hovercard'], + getGpgKeyForAuthenticated: [ + 'GET /user/gpg_keys/{gpg_key_id}', + {}, + { renamed: ['users', 'getGpgKeyForAuthenticatedUser'] }, + ], + getGpgKeyForAuthenticatedUser: ['GET /user/gpg_keys/{gpg_key_id}'], + getPublicSshKeyForAuthenticated: [ + 'GET /user/keys/{key_id}', + {}, + { renamed: ['users', 'getPublicSshKeyForAuthenticatedUser'] }, + ], + getPublicSshKeyForAuthenticatedUser: ['GET /user/keys/{key_id}'], + list: ['GET /users'], + listBlockedByAuthenticated: [ + 'GET /user/blocks', + {}, + { renamed: ['users', 'listBlockedByAuthenticatedUser'] }, + ], + listBlockedByAuthenticatedUser: ['GET /user/blocks'], + listEmailsForAuthenticated: [ + 'GET /user/emails', + {}, + { renamed: ['users', 'listEmailsForAuthenticatedUser'] }, + ], + listEmailsForAuthenticatedUser: ['GET /user/emails'], + listFollowedByAuthenticated: [ + 'GET /user/following', + {}, + { renamed: ['users', 'listFollowedByAuthenticatedUser'] }, + ], + listFollowedByAuthenticatedUser: ['GET /user/following'], + listFollowersForAuthenticatedUser: ['GET /user/followers'], + listFollowersForUser: ['GET /users/{username}/followers'], + listFollowingForUser: ['GET /users/{username}/following'], + listGpgKeysForAuthenticated: [ + 'GET /user/gpg_keys', + {}, + { renamed: ['users', 'listGpgKeysForAuthenticatedUser'] }, + ], + listGpgKeysForAuthenticatedUser: ['GET /user/gpg_keys'], + listGpgKeysForUser: ['GET /users/{username}/gpg_keys'], + listPublicEmailsForAuthenticated: [ + 'GET /user/public_emails', + {}, + { renamed: ['users', 'listPublicEmailsForAuthenticatedUser'] }, + ], + listPublicEmailsForAuthenticatedUser: ['GET /user/public_emails'], + listPublicKeysForUser: ['GET /users/{username}/keys'], + listPublicSshKeysForAuthenticated: [ + 'GET /user/keys', + {}, + { renamed: ['users', 'listPublicSshKeysForAuthenticatedUser'] }, + ], + listPublicSshKeysForAuthenticatedUser: ['GET /user/keys'], + setPrimaryEmailVisibilityForAuthenticated: [ + 'PATCH /user/email/visibility', + {}, + { + renamed: ['users', 'setPrimaryEmailVisibilityForAuthenticatedUser'], + }, + ], + setPrimaryEmailVisibilityForAuthenticatedUser: [ + 'PATCH /user/email/visibility', + ], + unblock: ['DELETE /user/blocks/{username}'], + unfollow: ['DELETE /user/following/{username}'], + updateAuthenticated: ['PATCH /user'], + }, + } + const d = '5.16.2' + function endpointsToMethods(e, p) { + const a = {} + for (const [d, t] of Object.entries(p)) { + for (const [p, r] of Object.entries(t)) { + const [t, s, i] = r + const [o, n] = t.split(/ /) + const l = Object.assign({ method: o, url: n }, s) + if (!a[d]) { + a[d] = {} + } + const m = a[d] + if (i) { + m[p] = decorate(e, d, p, l, i) + continue + } + m[p] = e.request.defaults(l) + } + } + return a + } + function decorate(e, p, a, d, t) { + const r = e.request.defaults(d) + function withDecorations(...d) { + let s = r.endpoint.merge(...d) + if (t.mapToData) { + s = Object.assign({}, s, { + data: s[t.mapToData], + [t.mapToData]: undefined, + }) + return r(s) + } + if (t.renamed) { + const [d, r] = t.renamed + e.log.warn( + `octokit.${p}.${a}() has been renamed to octokit.${d}.${r}()` + ) + } + if (t.deprecated) { + e.log.warn(t.deprecated) + } + if (t.renamedParameters) { + const s = r.endpoint.merge(...d) + for (const [d, r] of Object.entries(t.renamedParameters)) { + if (d in s) { + e.log.warn( + `"${d}" parameter is deprecated for "octokit.${p}.${a}()". Use "${r}" instead` + ) + if (!(r in s)) { + s[r] = s[d] + } + delete s[d] + } + } + return r(s) + } + return r(...d) + } + return Object.assign(withDecorations, r) + } + function restEndpointMethods(e) { + const p = endpointsToMethods(e, a) + return { rest: p } + } + restEndpointMethods.VERSION = d + function legacyRestEndpointMethods(e) { + const p = endpointsToMethods(e, a) + return _objectSpread2(_objectSpread2({}, p), {}, { rest: p }) + } + legacyRestEndpointMethods.VERSION = d + p.legacyRestEndpointMethods = legacyRestEndpointMethods + p.restEndpointMethods = restEndpointMethods + }, + 537: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + function _interopDefault(e) { + return e && typeof e === 'object' && 'default' in e ? e['default'] : e + } + var d = a(8932) + var t = _interopDefault(a(1223)) + const r = t((e) => console.warn(e)) + const s = t((e) => console.warn(e)) + class RequestError extends Error { + constructor(e, p, a) { + super(e) + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor) + } + this.name = 'HttpError' + this.status = p + let t + if ('headers' in a && typeof a.headers !== 'undefined') { + t = a.headers + } + if ('response' in a) { + this.response = a.response + t = a.response.headers + } + const i = Object.assign({}, a.request) + if (a.request.headers.authorization) { + i.headers = Object.assign({}, a.request.headers, { + authorization: a.request.headers.authorization.replace( + / .*$/, + ' [REDACTED]' + ), + }) + } + i.url = i.url + .replace(/\bclient_secret=\w+/g, 'client_secret=[REDACTED]') + .replace(/\baccess_token=\w+/g, 'access_token=[REDACTED]') + this.request = i + Object.defineProperty(this, 'code', { + get() { + r( + new d.Deprecation( + '[@octokit/request-error] `error.code` is deprecated, use `error.status`.' + ) + ) + return p + }, + }) + Object.defineProperty(this, 'headers', { + get() { + s( + new d.Deprecation( + '[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.' + ) + ) + return t || {} + }, + }) + } + } + p.RequestError = RequestError + }, + 6234: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + function _interopDefault(e) { + return e && typeof e === 'object' && 'default' in e ? e['default'] : e + } + var d = a(9440) + var t = a(5030) + var r = a(3287) + var s = _interopDefault(a(467)) + var i = a(537) + const o = '5.6.3' + function getBufferResponse(e) { + return e.arrayBuffer() + } + function fetchWrapper(e) { + const p = e.request && e.request.log ? e.request.log : console + if (r.isPlainObject(e.body) || Array.isArray(e.body)) { + e.body = JSON.stringify(e.body) + } + let a = {} + let d + let t + const o = (e.request && e.request.fetch) || s + return o( + e.url, + Object.assign( + { + method: e.method, + body: e.body, + headers: e.headers, + redirect: e.redirect, + }, + e.request + ) + ) + .then(async (r) => { + t = r.url + d = r.status + for (const e of r.headers) { + a[e[0]] = e[1] + } + if ('deprecation' in a) { + const d = a.link && a.link.match(/<([^>]+)>; rel="deprecation"/) + const t = d && d.pop() + p.warn( + `[@octokit/request] "${e.method} ${ + e.url + }" is deprecated. It is scheduled to be removed on ${a.sunset}${ + t ? `. See ${t}` : '' + }` + ) + } + if (d === 204 || d === 205) { + return + } + if (e.method === 'HEAD') { + if (d < 400) { + return + } + throw new i.RequestError(r.statusText, d, { + response: { url: t, status: d, headers: a, data: undefined }, + request: e, + }) + } + if (d === 304) { + throw new i.RequestError('Not modified', d, { + response: { + url: t, + status: d, + headers: a, + data: await getResponseData(r), + }, + request: e, + }) + } + if (d >= 400) { + const p = await getResponseData(r) + const s = new i.RequestError(toErrorMessage(p), d, { + response: { url: t, status: d, headers: a, data: p }, + request: e, + }) + throw s + } + return getResponseData(r) + }) + .then((e) => ({ status: d, url: t, headers: a, data: e })) + .catch((p) => { + if (p instanceof i.RequestError) throw p + throw new i.RequestError(p.message, 500, { request: e }) + }) + } + async function getResponseData(e) { + const p = e.headers.get('content-type') + if (/application\/json/.test(p)) { + return e.json() + } + if (!p || /^text\/|charset=utf-8$/.test(p)) { + return e.text() + } + return getBufferResponse(e) + } + function toErrorMessage(e) { + if (typeof e === 'string') return e + if ('message' in e) { + if (Array.isArray(e.errors)) { + return `${e.message}: ${e.errors.map(JSON.stringify).join(', ')}` + } + return e.message + } + return `Unknown error: ${JSON.stringify(e)}` + } + function withDefaults(e, p) { + const a = e.defaults(p) + const newApi = function (e, p) { + const d = a.merge(e, p) + if (!d.request || !d.request.hook) { + return fetchWrapper(a.parse(d)) + } + const request = (e, p) => fetchWrapper(a.parse(a.merge(e, p))) + Object.assign(request, { + endpoint: a, + defaults: withDefaults.bind(null, a), + }) + return d.request.hook(request, d) + } + return Object.assign(newApi, { + endpoint: a, + defaults: withDefaults.bind(null, a), + }) + } + const n = withDefaults(d.endpoint, { + headers: { 'user-agent': `octokit-request.js/${o} ${t.getUserAgent()}` }, + }) + p.request = n + }, + 3682: (e, p, a) => { + var d = a(4670) + var t = a(5549) + var r = a(6819) + var s = Function.bind + var i = s.bind(s) + function bindApi(e, p, a) { + var d = i(r, null).apply(null, a ? [p, a] : [p]) + e.api = { remove: d } + e.remove = d + ;['before', 'error', 'after', 'wrap'].forEach(function (d) { + var r = a ? [p, d, a] : [p, d] + e[d] = e.api[d] = i(t, null).apply(null, r) + }) + } + function HookSingular() { + var e = 'h' + var p = { registry: {} } + var a = d.bind(null, p, e) + bindApi(a, p, e) + return a + } + function HookCollection() { + var e = { registry: {} } + var p = d.bind(null, e) + bindApi(p, e) + return p + } + var o = false + function Hook() { + if (!o) { + console.warn( + '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' + ) + o = true + } + return HookCollection() + } + Hook.Singular = HookSingular.bind() + Hook.Collection = HookCollection.bind() + e.exports = Hook + e.exports.Hook = Hook + e.exports.Singular = Hook.Singular + e.exports.Collection = Hook.Collection + }, + 5549: (e) => { + e.exports = addHook + function addHook(e, p, a, d) { + var t = d + if (!e.registry[a]) { + e.registry[a] = [] + } + if (p === 'before') { + d = function (e, p) { + return Promise.resolve().then(t.bind(null, p)).then(e.bind(null, p)) + } + } + if (p === 'after') { + d = function (e, p) { + var a + return Promise.resolve() + .then(e.bind(null, p)) + .then(function (e) { + a = e + return t(a, p) + }) + .then(function () { + return a + }) + } + } + if (p === 'error') { + d = function (e, p) { + return Promise.resolve() + .then(e.bind(null, p)) + .catch(function (e) { + return t(e, p) + }) + } + } + e.registry[a].push({ hook: d, orig: t }) + } + }, + 4670: (e) => { + e.exports = register + function register(e, p, a, d) { + if (typeof a !== 'function') { + throw new Error('method for before hook must be a function') + } + if (!d) { + d = {} + } + if (Array.isArray(p)) { + return p.reverse().reduce(function (p, a) { + return register.bind(null, e, a, p, d) + }, a)() + } + return Promise.resolve().then(function () { + if (!e.registry[p]) { + return a(d) + } + return e.registry[p].reduce(function (e, p) { + return p.hook.bind(null, e, d) + }, a)() + }) + } + }, + 6819: (e) => { + e.exports = removeHook + function removeHook(e, p, a) { + if (!e.registry[p]) { + return + } + var d = e.registry[p] + .map(function (e) { + return e.orig + }) + .indexOf(a) + if (d === -1) { + return + } + e.registry[p].splice(d, 1) + } + }, + 8932: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + class Deprecation extends Error { + constructor(e) { + super(e) + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor) + } + this.name = 'Deprecation' + } + } + p.Deprecation = Deprecation + }, + 3287: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + /*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ function isObject(e) { + return Object.prototype.toString.call(e) === '[object Object]' + } + function isPlainObject(e) { + var p, a + if (isObject(e) === false) return false + p = e.constructor + if (p === undefined) return true + a = p.prototype + if (isObject(a) === false) return false + if (a.hasOwnProperty('isPrototypeOf') === false) { + return false + } + return true + } + p.isPlainObject = isPlainObject + }, + 467: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + function _interopDefault(e) { + return e && typeof e === 'object' && 'default' in e ? e['default'] : e + } + var d = _interopDefault(a(2781)) + var t = _interopDefault(a(3685)) + var r = _interopDefault(a(7310)) + var s = _interopDefault(a(8665)) + var i = _interopDefault(a(5687)) + var o = _interopDefault(a(9796)) + const n = d.Readable + const l = Symbol('buffer') + const m = Symbol('type') + class Blob { + constructor() { + this[m] = '' + const e = arguments[0] + const p = arguments[1] + const a = [] + let d = 0 + if (e) { + const p = e + const t = Number(p.length) + for (let e = 0; e < t; e++) { + const t = p[e] + let r + if (t instanceof Buffer) { + r = t + } else if (ArrayBuffer.isView(t)) { + r = Buffer.from(t.buffer, t.byteOffset, t.byteLength) + } else if (t instanceof ArrayBuffer) { + r = Buffer.from(t) + } else if (t instanceof Blob) { + r = t[l] + } else { + r = Buffer.from(typeof t === 'string' ? t : String(t)) + } + d += r.length + a.push(r) + } + } + this[l] = Buffer.concat(a) + let t = p && p.type !== undefined && String(p.type).toLowerCase() + if (t && !/[^\u0020-\u007E]/.test(t)) { + this[m] = t + } + } + get size() { + return this[l].length + } + get type() { + return this[m] + } + text() { + return Promise.resolve(this[l].toString()) + } + arrayBuffer() { + const e = this[l] + const p = e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength) + return Promise.resolve(p) + } + stream() { + const e = new n() + e._read = function () {} + e.push(this[l]) + e.push(null) + return e + } + toString() { + return '[object Blob]' + } + slice() { + const e = this.size + const p = arguments[0] + const a = arguments[1] + let d, t + if (p === undefined) { + d = 0 + } else if (p < 0) { + d = Math.max(e + p, 0) + } else { + d = Math.min(p, e) + } + if (a === undefined) { + t = e + } else if (a < 0) { + t = Math.max(e + a, 0) + } else { + t = Math.min(a, e) + } + const r = Math.max(t - d, 0) + const s = this[l] + const i = s.slice(d, d + r) + const o = new Blob([], { type: arguments[2] }) + o[l] = i + return o + } + } + Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true }, + }) + Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true, + }) + function FetchError(e, p, a) { + Error.call(this, e) + this.message = e + this.type = p + if (a) { + this.code = this.errno = a.code + } + Error.captureStackTrace(this, this.constructor) + } + FetchError.prototype = Object.create(Error.prototype) + FetchError.prototype.constructor = FetchError + FetchError.prototype.name = 'FetchError' + let u + try { + u = a(2877).convert + } catch (e) {} + const c = Symbol('Body internals') + const v = d.PassThrough + function Body(e) { + var p = this + var a = + arguments.length > 1 && arguments[1] !== undefined + ? arguments[1] + : {}, + t = a.size + let r = t === undefined ? 0 : t + var s = a.timeout + let i = s === undefined ? 0 : s + if (e == null) { + e = null + } else if (isURLSearchParams(e)) { + e = Buffer.from(e.toString()) + } else if (isBlob(e)); + else if (Buffer.isBuffer(e)); + else if (Object.prototype.toString.call(e) === '[object ArrayBuffer]') { + e = Buffer.from(e) + } else if (ArrayBuffer.isView(e)) { + e = Buffer.from(e.buffer, e.byteOffset, e.byteLength) + } else if (e instanceof d); + else { + e = Buffer.from(String(e)) + } + this[c] = { body: e, disturbed: false, error: null } + this.size = r + this.timeout = i + if (e instanceof d) { + e.on('error', function (e) { + const a = + e.name === 'AbortError' + ? e + : new FetchError( + `Invalid response body while trying to fetch ${p.url}: ${e.message}`, + 'system', + e + ) + p[c].error = a + }) + } + } + Body.prototype = { + get body() { + return this[c].body + }, + get bodyUsed() { + return this[c].disturbed + }, + arrayBuffer() { + return consumeBody.call(this).then(function (e) { + return e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength) + }) + }, + blob() { + let e = (this.headers && this.headers.get('content-type')) || '' + return consumeBody.call(this).then(function (p) { + return Object.assign(new Blob([], { type: e.toLowerCase() }), { + [l]: p, + }) + }) + }, + json() { + var e = this + return consumeBody.call(this).then(function (p) { + try { + return JSON.parse(p.toString()) + } catch (p) { + return Body.Promise.reject( + new FetchError( + `invalid json response body at ${e.url} reason: ${p.message}`, + 'invalid-json' + ) + ) + } + }) + }, + text() { + return consumeBody.call(this).then(function (e) { + return e.toString() + }) + }, + buffer() { + return consumeBody.call(this) + }, + textConverted() { + var e = this + return consumeBody.call(this).then(function (p) { + return convertBody(p, e.headers) + }) + }, + } + Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true }, + }) + Body.mixIn = function (e) { + for (const p of Object.getOwnPropertyNames(Body.prototype)) { + if (!(p in e)) { + const a = Object.getOwnPropertyDescriptor(Body.prototype, p) + Object.defineProperty(e, p, a) + } + } + } + function consumeBody() { + var e = this + if (this[c].disturbed) { + return Body.Promise.reject( + new TypeError(`body used already for: ${this.url}`) + ) + } + this[c].disturbed = true + if (this[c].error) { + return Body.Promise.reject(this[c].error) + } + let p = this.body + if (p === null) { + return Body.Promise.resolve(Buffer.alloc(0)) + } + if (isBlob(p)) { + p = p.stream() + } + if (Buffer.isBuffer(p)) { + return Body.Promise.resolve(p) + } + if (!(p instanceof d)) { + return Body.Promise.resolve(Buffer.alloc(0)) + } + let a = [] + let t = 0 + let r = false + return new Body.Promise(function (d, s) { + let i + if (e.timeout) { + i = setTimeout(function () { + r = true + s( + new FetchError( + `Response timeout while trying to fetch ${e.url} (over ${e.timeout}ms)`, + 'body-timeout' + ) + ) + }, e.timeout) + } + p.on('error', function (p) { + if (p.name === 'AbortError') { + r = true + s(p) + } else { + s( + new FetchError( + `Invalid response body while trying to fetch ${e.url}: ${p.message}`, + 'system', + p + ) + ) + } + }) + p.on('data', function (p) { + if (r || p === null) { + return + } + if (e.size && t + p.length > e.size) { + r = true + s( + new FetchError( + `content size at ${e.url} over limit: ${e.size}`, + 'max-size' + ) + ) + return + } + t += p.length + a.push(p) + }) + p.on('end', function () { + if (r) { + return + } + clearTimeout(i) + try { + d(Buffer.concat(a, t)) + } catch (p) { + s( + new FetchError( + `Could not create Buffer from response body for ${e.url}: ${p.message}`, + 'system', + p + ) + ) + } + }) + }) + } + function convertBody(e, p) { + if (typeof u !== 'function') { + throw new Error( + 'The package `encoding` must be installed to use the textConverted() function' + ) + } + const a = p.get('content-type') + let d = 'utf-8' + let t, r + if (a) { + t = /charset=([^;]*)/i.exec(a) + } + r = e.slice(0, 1024).toString() + if (!t && r) { + t = / 0 && arguments[0] !== undefined + ? arguments[0] + : undefined + this[w] = Object.create(null) + if (e instanceof Headers) { + const p = e.raw() + const a = Object.keys(p) + for (const e of a) { + for (const a of p[e]) { + this.append(e, a) + } + } + return + } + if (e == null); + else if (typeof e === 'object') { + const p = e[Symbol.iterator] + if (p != null) { + if (typeof p !== 'function') { + throw new TypeError('Header pairs must be iterable') + } + const a = [] + for (const p of e) { + if ( + typeof p !== 'object' || + typeof p[Symbol.iterator] !== 'function' + ) { + throw new TypeError('Each header pair must be iterable') + } + a.push(Array.from(p)) + } + for (const e of a) { + if (e.length !== 2) { + throw new TypeError( + 'Each header pair must be a name/value tuple' + ) + } + this.append(e[0], e[1]) + } + } else { + for (const p of Object.keys(e)) { + const a = e[p] + this.append(p, a) + } + } + } else { + throw new TypeError('Provided initializer must be an object') + } + } + get(e) { + e = `${e}` + validateName(e) + const p = find(this[w], e) + if (p === undefined) { + return null + } + return this[w][p].join(', ') + } + forEach(e) { + let p = + arguments.length > 1 && arguments[1] !== undefined + ? arguments[1] + : undefined + let a = getHeaders(this) + let d = 0 + while (d < a.length) { + var t = a[d] + const r = t[0], + s = t[1] + e.call(p, s, r, this) + a = getHeaders(this) + d++ + } + } + set(e, p) { + e = `${e}` + p = `${p}` + validateName(e) + validateValue(p) + const a = find(this[w], e) + this[w][a !== undefined ? a : e] = [p] + } + append(e, p) { + e = `${e}` + p = `${p}` + validateName(e) + validateValue(p) + const a = find(this[w], e) + if (a !== undefined) { + this[w][a].push(p) + } else { + this[w][e] = [p] + } + } + has(e) { + e = `${e}` + validateName(e) + return find(this[w], e) !== undefined + } + delete(e) { + e = `${e}` + validateName(e) + const p = find(this[w], e) + if (p !== undefined) { + delete this[w][p] + } + } + raw() { + return this[w] + } + keys() { + return createHeadersIterator(this, 'key') + } + values() { + return createHeadersIterator(this, 'value') + } + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value') + } + } + Headers.prototype.entries = Headers.prototype[Symbol.iterator] + Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true, + }) + Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true }, + }) + function getHeaders(e) { + let p = + arguments.length > 1 && arguments[1] !== undefined + ? arguments[1] + : 'key+value' + const a = Object.keys(e[w]).sort() + return a.map( + p === 'key' + ? function (e) { + return e.toLowerCase() + } + : p === 'value' + ? function (p) { + return e[w][p].join(', ') + } + : function (p) { + return [p.toLowerCase(), e[w][p].join(', ')] + } + ) + } + const _ = Symbol('internal') + function createHeadersIterator(e, p) { + const a = Object.create(T) + a[_] = { target: e, kind: p, index: 0 } + return a + } + const T = Object.setPrototypeOf( + { + next() { + if (!this || Object.getPrototypeOf(this) !== T) { + throw new TypeError('Value of `this` is not a HeadersIterator') + } + var e = this[_] + const p = e.target, + a = e.kind, + d = e.index + const t = getHeaders(p, a) + const r = t.length + if (d >= r) { + return { value: undefined, done: true } + } + this[_].index = d + 1 + return { value: t[d], done: false } + }, + }, + Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) + ) + Object.defineProperty(T, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true, + }) + function exportNodeCompatibleHeaders(e) { + const p = Object.assign({ __proto__: null }, e[w]) + const a = find(e[w], 'Host') + if (a !== undefined) { + p[a] = p[a][0] + } + return p + } + function createHeadersLenient(e) { + const p = new Headers() + for (const a of Object.keys(e)) { + if (h.test(a)) { + continue + } + if (Array.isArray(e[a])) { + for (const d of e[a]) { + if (g.test(d)) { + continue + } + if (p[w][a] === undefined) { + p[w][a] = [d] + } else { + p[w][a].push(d) + } + } + } else if (!g.test(e[a])) { + p[w][a] = [e[a]] + } + } + return p + } + const E = Symbol('Response internals') + const b = t.STATUS_CODES + class Response { + constructor() { + let e = + arguments.length > 0 && arguments[0] !== undefined + ? arguments[0] + : null + let p = + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} + Body.call(this, e, p) + const a = p.status || 200 + const d = new Headers(p.headers) + if (e != null && !d.has('Content-Type')) { + const p = extractContentType(e) + if (p) { + d.append('Content-Type', p) + } + } + this[E] = { + url: p.url, + status: a, + statusText: p.statusText || b[a], + headers: d, + counter: p.counter, + } + } + get url() { + return this[E].url || '' + } + get status() { + return this[E].status + } + get ok() { + return this[E].status >= 200 && this[E].status < 300 + } + get redirected() { + return this[E].counter > 0 + } + get statusText() { + return this[E].statusText + } + get headers() { + return this[E].headers + } + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected, + }) + } + } + Body.mixIn(Response.prototype) + Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true }, + }) + Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true, + }) + const y = Symbol('Request internals') + const S = r.URL || s.URL + const D = r.parse + const P = r.format + function parseURL(e) { + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(e)) { + e = new S(e).toString() + } + return D(e) + } + const A = 'destroy' in d.Readable.prototype + function isRequest(e) { + return typeof e === 'object' && typeof e[y] === 'object' + } + function isAbortSignal(e) { + const p = e && typeof e === 'object' && Object.getPrototypeOf(e) + return !!(p && p.constructor.name === 'AbortSignal') + } + class Request { + constructor(e) { + let p = + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} + let a + if (!isRequest(e)) { + if (e && e.href) { + a = parseURL(e.href) + } else { + a = parseURL(`${e}`) + } + e = {} + } else { + a = parseURL(e.url) + } + let d = p.method || e.method || 'GET' + d = d.toUpperCase() + if ( + (p.body != null || (isRequest(e) && e.body !== null)) && + (d === 'GET' || d === 'HEAD') + ) { + throw new TypeError('Request with GET/HEAD method cannot have body') + } + let t = + p.body != null + ? p.body + : isRequest(e) && e.body !== null + ? clone(e) + : null + Body.call(this, t, { + timeout: p.timeout || e.timeout || 0, + size: p.size || e.size || 0, + }) + const r = new Headers(p.headers || e.headers || {}) + if (t != null && !r.has('Content-Type')) { + const e = extractContentType(t) + if (e) { + r.append('Content-Type', e) + } + } + let s = isRequest(e) ? e.signal : null + if ('signal' in p) s = p.signal + if (s != null && !isAbortSignal(s)) { + throw new TypeError('Expected signal to be an instanceof AbortSignal') + } + this[y] = { + method: d, + redirect: p.redirect || e.redirect || 'follow', + headers: r, + parsedURL: a, + signal: s, + } + this.follow = + p.follow !== undefined + ? p.follow + : e.follow !== undefined + ? e.follow + : 20 + this.compress = + p.compress !== undefined + ? p.compress + : e.compress !== undefined + ? e.compress + : true + this.counter = p.counter || e.counter || 0 + this.agent = p.agent || e.agent + } + get method() { + return this[y].method + } + get url() { + return P(this[y].parsedURL) + } + get headers() { + return this[y].headers + } + get redirect() { + return this[y].redirect + } + get signal() { + return this[y].signal + } + clone() { + return new Request(this) + } + } + Body.mixIn(Request.prototype) + Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true, + }) + Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true }, + }) + function getNodeRequestOptions(e) { + const p = e[y].parsedURL + const a = new Headers(e[y].headers) + if (!a.has('Accept')) { + a.set('Accept', '*/*') + } + if (!p.protocol || !p.hostname) { + throw new TypeError('Only absolute URLs are supported') + } + if (!/^https?:$/.test(p.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported') + } + if (e.signal && e.body instanceof d.Readable && !A) { + throw new Error( + 'Cancellation of streamed requests with AbortSignal is not supported in node < 8' + ) + } + let t = null + if (e.body == null && /^(POST|PUT)$/i.test(e.method)) { + t = '0' + } + if (e.body != null) { + const p = getTotalBytes(e) + if (typeof p === 'number') { + t = String(p) + } + } + if (t) { + a.set('Content-Length', t) + } + if (!a.has('User-Agent')) { + a.set( + 'User-Agent', + 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)' + ) + } + if (e.compress && !a.has('Accept-Encoding')) { + a.set('Accept-Encoding', 'gzip,deflate') + } + let r = e.agent + if (typeof r === 'function') { + r = r(p) + } + if (!a.has('Connection') && !r) { + a.set('Connection', 'close') + } + return Object.assign({}, p, { + method: e.method, + headers: exportNodeCompatibleHeaders(a), + agent: r, + }) + } + function AbortError(e) { + Error.call(this, e) + this.type = 'aborted' + this.message = e + Error.captureStackTrace(this, this.constructor) + } + AbortError.prototype = Object.create(Error.prototype) + AbortError.prototype.constructor = AbortError + AbortError.prototype.name = 'AbortError' + const O = r.URL || s.URL + const k = d.PassThrough + const N = function isDomainOrSubdomain(e, p) { + const a = new O(p).hostname + const d = new O(e).hostname + return a === d || (a[a.length - d.length - 1] === '.' && a.endsWith(d)) + } + const R = function isSameProtocol(e, p) { + const a = new O(p).protocol + const d = new O(e).protocol + return a === d + } + function fetch(e, p) { + if (!fetch.Promise) { + throw new Error( + 'native promise missing, set fetch.Promise to your favorite alternative' + ) + } + Body.Promise = fetch.Promise + return new fetch.Promise(function (a, r) { + const s = new Request(e, p) + const n = getNodeRequestOptions(s) + const l = (n.protocol === 'https:' ? i : t).request + const m = s.signal + let u = null + const c = function abort() { + let e = new AbortError('The user aborted a request.') + r(e) + if (s.body && s.body instanceof d.Readable) { + destroyStream(s.body, e) + } + if (!u || !u.body) return + u.body.emit('error', e) + } + if (m && m.aborted) { + c() + return + } + const v = function abortAndFinalize() { + c() + finalize() + } + const h = l(n) + let g + if (m) { + m.addEventListener('abort', v) + } + function finalize() { + h.abort() + if (m) m.removeEventListener('abort', v) + clearTimeout(g) + } + if (s.timeout) { + h.once('socket', function (e) { + g = setTimeout(function () { + r( + new FetchError( + `network timeout at: ${s.url}`, + 'request-timeout' + ) + ) + finalize() + }, s.timeout) + }) + } + h.on('error', function (e) { + r( + new FetchError( + `request to ${s.url} failed, reason: ${e.message}`, + 'system', + e + ) + ) + if (u && u.body) { + destroyStream(u.body, e) + } + finalize() + }) + fixResponseChunkedTransferBadEnding(h, function (e) { + if (m && m.aborted) { + return + } + if (u && u.body) { + destroyStream(u.body, e) + } + }) + if (parseInt(process.version.substring(1)) < 14) { + h.on('socket', function (e) { + e.addListener('close', function (p) { + const a = e.listenerCount('data') > 0 + if (u && a && !p && !(m && m.aborted)) { + const e = new Error('Premature close') + e.code = 'ERR_STREAM_PREMATURE_CLOSE' + u.body.emit('error', e) + } + }) + }) + } + h.on('response', function (e) { + clearTimeout(g) + const p = createHeadersLenient(e.headers) + if (fetch.isRedirect(e.statusCode)) { + const d = p.get('Location') + let t = null + try { + t = d === null ? null : new O(d, s.url).toString() + } catch (e) { + if (s.redirect !== 'manual') { + r( + new FetchError( + `uri requested responds with an invalid redirect URL: ${d}`, + 'invalid-redirect' + ) + ) + finalize() + return + } + } + switch (s.redirect) { + case 'error': + r( + new FetchError( + `uri requested responds with a redirect, redirect mode is set to error: ${s.url}`, + 'no-redirect' + ) + ) + finalize() + return + case 'manual': + if (t !== null) { + try { + p.set('Location', t) + } catch (e) { + r(e) + } + } + break + case 'follow': + if (t === null) { + break + } + if (s.counter >= s.follow) { + r( + new FetchError( + `maximum redirect reached at: ${s.url}`, + 'max-redirect' + ) + ) + finalize() + return + } + const d = { + headers: new Headers(s.headers), + follow: s.follow, + counter: s.counter + 1, + agent: s.agent, + compress: s.compress, + method: s.method, + body: s.body, + signal: s.signal, + timeout: s.timeout, + size: s.size, + } + if (!N(s.url, t) || !R(s.url, t)) { + for (const e of [ + 'authorization', + 'www-authenticate', + 'cookie', + 'cookie2', + ]) { + d.headers.delete(e) + } + } + if ( + e.statusCode !== 303 && + s.body && + getTotalBytes(s) === null + ) { + r( + new FetchError( + 'Cannot follow redirect with body being a readable stream', + 'unsupported-redirect' + ) + ) + finalize() + return + } + if ( + e.statusCode === 303 || + ((e.statusCode === 301 || e.statusCode === 302) && + s.method === 'POST') + ) { + d.method = 'GET' + d.body = undefined + d.headers.delete('content-length') + } + a(fetch(new Request(t, d))) + finalize() + return + } + } + e.once('end', function () { + if (m) m.removeEventListener('abort', v) + }) + let d = e.pipe(new k()) + const t = { + url: s.url, + status: e.statusCode, + statusText: e.statusMessage, + headers: p, + size: s.size, + timeout: s.timeout, + counter: s.counter, + } + const i = p.get('Content-Encoding') + if ( + !s.compress || + s.method === 'HEAD' || + i === null || + e.statusCode === 204 || + e.statusCode === 304 + ) { + u = new Response(d, t) + a(u) + return + } + const n = { flush: o.Z_SYNC_FLUSH, finishFlush: o.Z_SYNC_FLUSH } + if (i == 'gzip' || i == 'x-gzip') { + d = d.pipe(o.createGunzip(n)) + u = new Response(d, t) + a(u) + return + } + if (i == 'deflate' || i == 'x-deflate') { + const p = e.pipe(new k()) + p.once('data', function (e) { + if ((e[0] & 15) === 8) { + d = d.pipe(o.createInflate()) + } else { + d = d.pipe(o.createInflateRaw()) + } + u = new Response(d, t) + a(u) + }) + p.on('end', function () { + if (!u) { + u = new Response(d, t) + a(u) + } + }) + return + } + if (i == 'br' && typeof o.createBrotliDecompress === 'function') { + d = d.pipe(o.createBrotliDecompress()) + u = new Response(d, t) + a(u) + return + } + u = new Response(d, t) + a(u) + }) + writeToStream(h, s) + }) + } + function fixResponseChunkedTransferBadEnding(e, p) { + let a + e.on('socket', function (e) { + a = e + }) + e.on('response', function (e) { + const d = e.headers + if (d['transfer-encoding'] === 'chunked' && !d['content-length']) { + e.once('close', function (e) { + const d = a.listenerCount('data') > 0 + if (d && !e) { + const e = new Error('Premature close') + e.code = 'ERR_STREAM_PREMATURE_CLOSE' + p(e) + } + }) + } + }) + } + function destroyStream(e, p) { + if (e.destroy) { + e.destroy(p) + } else { + e.emit('error', p) + e.end() + } + } + fetch.isRedirect = function (e) { + return e === 301 || e === 302 || e === 303 || e === 307 || e === 308 + } + fetch.Promise = global.Promise + e.exports = p = fetch + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = p + p.Headers = Headers + p.Request = Request + p.Response = Response + p.FetchError = FetchError + }, + 1223: (e, p, a) => { + var d = a(2940) + e.exports = d(once) + e.exports.strict = d(onceStrict) + once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true, + }) + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true, + }) + }) + function once(e) { + var f = function () { + if (f.called) return f.value + f.called = true + return (f.value = e.apply(this, arguments)) + } + f.called = false + return f + } + function onceStrict(e) { + var f = function () { + if (f.called) throw new Error(f.onceError) + f.called = true + return (f.value = e.apply(this, arguments)) + } + var p = e.name || 'Function wrapped with `once`' + f.onceError = p + " shouldn't be called more than once" + f.called = false + return f + } + }, + 4256: (e, p, a) => { + var d = a(5477) + var t = a(2020) + var r = { TRANSITIONAL: 0, NONTRANSITIONAL: 1 } + function normalize(e) { + return e + .split('\0') + .map(function (e) { + return e.normalize('NFC') + }) + .join('\0') + } + function findStatus(e) { + var p = 0 + var a = t.length - 1 + while (p <= a) { + var d = Math.floor((p + a) / 2) + var r = t[d] + if (r[0][0] <= e && r[0][1] >= e) { + return r + } else if (r[0][0] > e) { + a = d - 1 + } else { + p = d + 1 + } + } + return null + } + var s = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g + function countSymbols(e) { + return e.replace(s, '_').length + } + function mapChars(e, p, a) { + var d = false + var t = '' + var s = countSymbols(e) + for (var i = 0; i < s; ++i) { + var o = e.codePointAt(i) + var n = findStatus(o) + switch (n[1]) { + case 'disallowed': + d = true + t += String.fromCodePoint(o) + break + case 'ignored': + break + case 'mapped': + t += String.fromCodePoint.apply(String, n[2]) + break + case 'deviation': + if (a === r.TRANSITIONAL) { + t += String.fromCodePoint.apply(String, n[2]) + } else { + t += String.fromCodePoint(o) + } + break + case 'valid': + t += String.fromCodePoint(o) + break + case 'disallowed_STD3_mapped': + if (p) { + d = true + t += String.fromCodePoint(o) + } else { + t += String.fromCodePoint.apply(String, n[2]) + } + break + case 'disallowed_STD3_valid': + if (p) { + d = true + } + t += String.fromCodePoint(o) + break + } + } + return { string: t, error: d } + } + var i = + /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/ + function validateLabel(e, p) { + if (e.substr(0, 4) === 'xn--') { + e = d.toUnicode(e) + p = r.NONTRANSITIONAL + } + var a = false + if ( + normalize(e) !== e || + (e[3] === '-' && e[4] === '-') || + e[0] === '-' || + e[e.length - 1] === '-' || + e.indexOf('.') !== -1 || + e.search(i) === 0 + ) { + a = true + } + var t = countSymbols(e) + for (var s = 0; s < t; ++s) { + var o = findStatus(e.codePointAt(s)) + if ( + (processing === r.TRANSITIONAL && o[1] !== 'valid') || + (processing === r.NONTRANSITIONAL && + o[1] !== 'valid' && + o[1] !== 'deviation') + ) { + a = true + break + } + } + return { label: e, error: a } + } + function processing(e, p, a) { + var d = mapChars(e, p, a) + d.string = normalize(d.string) + var t = d.string.split('.') + for (var r = 0; r < t.length; ++r) { + try { + var s = validateLabel(t[r]) + t[r] = s.label + d.error = d.error || s.error + } catch (e) { + d.error = true + } + } + return { string: t.join('.'), error: d.error } + } + e.exports.toASCII = function (e, p, a, t) { + var r = processing(e, p, a) + var s = r.string.split('.') + s = s.map(function (e) { + try { + return d.toASCII(e) + } catch (p) { + r.error = true + return e + } + }) + if (t) { + var i = s.slice(0, s.length - 1).join('.').length + if (i.length > 253 || i.length === 0) { + r.error = true + } + for (var o = 0; o < s.length; ++o) { + if (s.length > 63 || s.length === 0) { + r.error = true + break + } + } + } + if (r.error) return null + return s.join('.') + } + e.exports.toUnicode = function (e, p) { + var a = processing(e, p, r.NONTRANSITIONAL) + return { domain: a.string, error: a.error } + } + e.exports.PROCESSING_OPTIONS = r + }, + 4294: (e, p, a) => { + e.exports = a(4219) + }, + 4219: (e, p, a) => { + var d = a(1808) + var t = a(4404) + var r = a(3685) + var s = a(5687) + var i = a(2361) + var o = a(9491) + var n = a(3837) + p.httpOverHttp = httpOverHttp + p.httpsOverHttp = httpsOverHttp + p.httpOverHttps = httpOverHttps + p.httpsOverHttps = httpsOverHttps + function httpOverHttp(e) { + var p = new TunnelingAgent(e) + p.request = r.request + return p + } + function httpsOverHttp(e) { + var p = new TunnelingAgent(e) + p.request = r.request + p.createSocket = createSecureSocket + p.defaultPort = 443 + return p + } + function httpOverHttps(e) { + var p = new TunnelingAgent(e) + p.request = s.request + return p + } + function httpsOverHttps(e) { + var p = new TunnelingAgent(e) + p.request = s.request + p.createSocket = createSecureSocket + p.defaultPort = 443 + return p + } + function TunnelingAgent(e) { + var p = this + p.options = e || {} + p.proxyOptions = p.options.proxy || {} + p.maxSockets = p.options.maxSockets || r.Agent.defaultMaxSockets + p.requests = [] + p.sockets = [] + p.on('free', function onFree(e, a, d, t) { + var r = toOptions(a, d, t) + for (var s = 0, i = p.requests.length; s < i; ++s) { + var o = p.requests[s] + if (o.host === r.host && o.port === r.port) { + p.requests.splice(s, 1) + o.request.onSocket(e) + return + } + } + e.destroy() + p.removeSocket(e) + }) + } + n.inherits(TunnelingAgent, i.EventEmitter) + TunnelingAgent.prototype.addRequest = function addRequest(e, p, a, d) { + var t = this + var r = mergeOptions({ request: e }, t.options, toOptions(p, a, d)) + if (t.sockets.length >= this.maxSockets) { + t.requests.push(r) + return + } + t.createSocket(r, function (p) { + p.on('free', onFree) + p.on('close', onCloseOrRemove) + p.on('agentRemove', onCloseOrRemove) + e.onSocket(p) + function onFree() { + t.emit('free', p, r) + } + function onCloseOrRemove(e) { + t.removeSocket(p) + p.removeListener('free', onFree) + p.removeListener('close', onCloseOrRemove) + p.removeListener('agentRemove', onCloseOrRemove) + } + }) + } + TunnelingAgent.prototype.createSocket = function createSocket(e, p) { + var a = this + var d = {} + a.sockets.push(d) + var t = mergeOptions({}, a.proxyOptions, { + method: 'CONNECT', + path: e.host + ':' + e.port, + agent: false, + headers: { host: e.host + ':' + e.port }, + }) + if (e.localAddress) { + t.localAddress = e.localAddress + } + if (t.proxyAuth) { + t.headers = t.headers || {} + t.headers['Proxy-Authorization'] = + 'Basic ' + new Buffer(t.proxyAuth).toString('base64') + } + l('making CONNECT request') + var r = a.request(t) + r.useChunkedEncodingByDefault = false + r.once('response', onResponse) + r.once('upgrade', onUpgrade) + r.once('connect', onConnect) + r.once('error', onError) + r.end() + function onResponse(e) { + e.upgrade = true + } + function onUpgrade(e, p, a) { + process.nextTick(function () { + onConnect(e, p, a) + }) + } + function onConnect(t, s, i) { + r.removeAllListeners() + s.removeAllListeners() + if (t.statusCode !== 200) { + l( + 'tunneling socket could not be established, statusCode=%d', + t.statusCode + ) + s.destroy() + var o = new Error( + 'tunneling socket could not be established, ' + + 'statusCode=' + + t.statusCode + ) + o.code = 'ECONNRESET' + e.request.emit('error', o) + a.removeSocket(d) + return + } + if (i.length > 0) { + l('got illegal response body from proxy') + s.destroy() + var o = new Error('got illegal response body from proxy') + o.code = 'ECONNRESET' + e.request.emit('error', o) + a.removeSocket(d) + return + } + l('tunneling connection has established') + a.sockets[a.sockets.indexOf(d)] = s + return p(s) + } + function onError(p) { + r.removeAllListeners() + l( + 'tunneling socket could not be established, cause=%s\n', + p.message, + p.stack + ) + var t = new Error( + 'tunneling socket could not be established, ' + 'cause=' + p.message + ) + t.code = 'ECONNRESET' + e.request.emit('error', t) + a.removeSocket(d) + } + } + TunnelingAgent.prototype.removeSocket = function removeSocket(e) { + var p = this.sockets.indexOf(e) + if (p === -1) { + return + } + this.sockets.splice(p, 1) + var a = this.requests.shift() + if (a) { + this.createSocket(a, function (e) { + a.request.onSocket(e) + }) + } + } + function createSecureSocket(e, p) { + var a = this + TunnelingAgent.prototype.createSocket.call(a, e, function (d) { + var r = e.request.getHeader('host') + var s = mergeOptions({}, a.options, { + socket: d, + servername: r ? r.replace(/:.*$/, '') : e.host, + }) + var i = t.connect(0, s) + a.sockets[a.sockets.indexOf(d)] = i + p(i) + }) + } + function toOptions(e, p, a) { + if (typeof e === 'string') { + return { host: e, port: p, localAddress: a } + } + return e + } + function mergeOptions(e) { + for (var p = 1, a = arguments.length; p < a; ++p) { + var d = arguments[p] + if (typeof d === 'object') { + var t = Object.keys(d) + for (var r = 0, s = t.length; r < s; ++r) { + var i = t[r] + if (d[i] !== undefined) { + e[i] = d[i] + } + } + } + } + return e + } + var l + if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + l = function () { + var e = Array.prototype.slice.call(arguments) + if (typeof e[0] === 'string') { + e[0] = 'TUNNEL: ' + e[0] + } else { + e.unshift('TUNNEL:') + } + console.error.apply(console, e) + } + } else { + l = function () {} + } + p.debug = l + }, + 5030: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + function getUserAgent() { + if (typeof navigator === 'object' && 'userAgent' in navigator) { + return navigator.userAgent + } + if (typeof process === 'object' && 'version' in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${ + process.arch + })` + } + return '' + } + p.getUserAgent = getUserAgent + }, + 5840: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + Object.defineProperty(p, 'v1', { + enumerable: true, + get: function () { + return d.default + }, + }) + Object.defineProperty(p, 'v3', { + enumerable: true, + get: function () { + return t.default + }, + }) + Object.defineProperty(p, 'v4', { + enumerable: true, + get: function () { + return r.default + }, + }) + Object.defineProperty(p, 'v5', { + enumerable: true, + get: function () { + return s.default + }, + }) + Object.defineProperty(p, 'NIL', { + enumerable: true, + get: function () { + return i.default + }, + }) + Object.defineProperty(p, 'version', { + enumerable: true, + get: function () { + return o.default + }, + }) + Object.defineProperty(p, 'validate', { + enumerable: true, + get: function () { + return n.default + }, + }) + Object.defineProperty(p, 'stringify', { + enumerable: true, + get: function () { + return l.default + }, + }) + Object.defineProperty(p, 'parse', { + enumerable: true, + get: function () { + return m.default + }, + }) + var d = _interopRequireDefault(a(8628)) + var t = _interopRequireDefault(a(6409)) + var r = _interopRequireDefault(a(5122)) + var s = _interopRequireDefault(a(9120)) + var i = _interopRequireDefault(a(5332)) + var o = _interopRequireDefault(a(1595)) + var n = _interopRequireDefault(a(6900)) + var l = _interopRequireDefault(a(8950)) + var m = _interopRequireDefault(a(2746)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + }, + 4569: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(6113)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + function md5(e) { + if (Array.isArray(e)) { + e = Buffer.from(e) + } else if (typeof e === 'string') { + e = Buffer.from(e, 'utf8') + } + return d.default.createHash('md5').update(e).digest() + } + var t = md5 + p['default'] = t + }, + 5332: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var a = '00000000-0000-0000-0000-000000000000' + p['default'] = a + }, + 2746: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(6900)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + function parse(e) { + if (!(0, d.default)(e)) { + throw TypeError('Invalid UUID') + } + let p + const a = new Uint8Array(16) + a[0] = (p = parseInt(e.slice(0, 8), 16)) >>> 24 + a[1] = (p >>> 16) & 255 + a[2] = (p >>> 8) & 255 + a[3] = p & 255 + a[4] = (p = parseInt(e.slice(9, 13), 16)) >>> 8 + a[5] = p & 255 + a[6] = (p = parseInt(e.slice(14, 18), 16)) >>> 8 + a[7] = p & 255 + a[8] = (p = parseInt(e.slice(19, 23), 16)) >>> 8 + a[9] = p & 255 + a[10] = ((p = parseInt(e.slice(24, 36), 16)) / 1099511627776) & 255 + a[11] = (p / 4294967296) & 255 + a[12] = (p >>> 24) & 255 + a[13] = (p >>> 16) & 255 + a[14] = (p >>> 8) & 255 + a[15] = p & 255 + return a + } + var t = parse + p['default'] = t + }, + 814: (e, p) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var a = + /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i + p['default'] = a + }, + 807: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = rng + var d = _interopRequireDefault(a(6113)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + const t = new Uint8Array(256) + let r = t.length + function rng() { + if (r > t.length - 16) { + d.default.randomFillSync(t) + r = 0 + } + return t.slice(r, (r += 16)) + } + }, + 5274: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(6113)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + function sha1(e) { + if (Array.isArray(e)) { + e = Buffer.from(e) + } else if (typeof e === 'string') { + e = Buffer.from(e, 'utf8') + } + return d.default.createHash('sha1').update(e).digest() + } + var t = sha1 + p['default'] = t + }, + 8950: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(6900)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + const t = [] + for (let e = 0; e < 256; ++e) { + t.push((e + 256).toString(16).substr(1)) + } + function stringify(e, p = 0) { + const a = ( + t[e[p + 0]] + + t[e[p + 1]] + + t[e[p + 2]] + + t[e[p + 3]] + + '-' + + t[e[p + 4]] + + t[e[p + 5]] + + '-' + + t[e[p + 6]] + + t[e[p + 7]] + + '-' + + t[e[p + 8]] + + t[e[p + 9]] + + '-' + + t[e[p + 10]] + + t[e[p + 11]] + + t[e[p + 12]] + + t[e[p + 13]] + + t[e[p + 14]] + + t[e[p + 15]] + ).toLowerCase() + if (!(0, d.default)(a)) { + throw TypeError('Stringified UUID is invalid') + } + return a + } + var r = stringify + p['default'] = r + }, + 8628: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(807)) + var t = _interopRequireDefault(a(8950)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + let r + let s + let i = 0 + let o = 0 + function v1(e, p, a) { + let n = (p && a) || 0 + const l = p || new Array(16) + e = e || {} + let m = e.node || r + let u = e.clockseq !== undefined ? e.clockseq : s + if (m == null || u == null) { + const p = e.random || (e.rng || d.default)() + if (m == null) { + m = r = [p[0] | 1, p[1], p[2], p[3], p[4], p[5]] + } + if (u == null) { + u = s = ((p[6] << 8) | p[7]) & 16383 + } + } + let c = e.msecs !== undefined ? e.msecs : Date.now() + let v = e.nsecs !== undefined ? e.nsecs : o + 1 + const h = c - i + (v - o) / 1e4 + if (h < 0 && e.clockseq === undefined) { + u = (u + 1) & 16383 + } + if ((h < 0 || c > i) && e.nsecs === undefined) { + v = 0 + } + if (v >= 1e4) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec") + } + i = c + o = v + s = u + c += 122192928e5 + const g = ((c & 268435455) * 1e4 + v) % 4294967296 + l[n++] = (g >>> 24) & 255 + l[n++] = (g >>> 16) & 255 + l[n++] = (g >>> 8) & 255 + l[n++] = g & 255 + const w = ((c / 4294967296) * 1e4) & 268435455 + l[n++] = (w >>> 8) & 255 + l[n++] = w & 255 + l[n++] = ((w >>> 24) & 15) | 16 + l[n++] = (w >>> 16) & 255 + l[n++] = (u >>> 8) | 128 + l[n++] = u & 255 + for (let e = 0; e < 6; ++e) { + l[n + e] = m[e] + } + return p || (0, t.default)(l) + } + var n = v1 + p['default'] = n + }, + 6409: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(5998)) + var t = _interopRequireDefault(a(4569)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + const r = (0, d.default)('v3', 48, t.default) + var s = r + p['default'] = s + }, + 5998: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = _default + p.URL = p.DNS = void 0 + var d = _interopRequireDefault(a(8950)) + var t = _interopRequireDefault(a(2746)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + function stringToBytes(e) { + e = unescape(encodeURIComponent(e)) + const p = [] + for (let a = 0; a < e.length; ++a) { + p.push(e.charCodeAt(a)) + } + return p + } + const r = '6ba7b810-9dad-11d1-80b4-00c04fd430c8' + p.DNS = r + const s = '6ba7b811-9dad-11d1-80b4-00c04fd430c8' + p.URL = s + function _default(e, p, a) { + function generateUUID(e, r, s, i) { + if (typeof e === 'string') { + e = stringToBytes(e) + } + if (typeof r === 'string') { + r = (0, t.default)(r) + } + if (r.length !== 16) { + throw TypeError( + 'Namespace must be array-like (16 iterable integer values, 0-255)' + ) + } + let o = new Uint8Array(16 + e.length) + o.set(r) + o.set(e, r.length) + o = a(o) + o[6] = (o[6] & 15) | p + o[8] = (o[8] & 63) | 128 + if (s) { + i = i || 0 + for (let e = 0; e < 16; ++e) { + s[i + e] = o[e] + } + return s + } + return (0, d.default)(o) + } + try { + generateUUID.name = e + } catch (e) {} + generateUUID.DNS = r + generateUUID.URL = s + return generateUUID + } + }, + 5122: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(807)) + var t = _interopRequireDefault(a(8950)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + function v4(e, p, a) { + e = e || {} + const r = e.random || (e.rng || d.default)() + r[6] = (r[6] & 15) | 64 + r[8] = (r[8] & 63) | 128 + if (p) { + a = a || 0 + for (let e = 0; e < 16; ++e) { + p[a + e] = r[e] + } + return p + } + return (0, t.default)(r) + } + var r = v4 + p['default'] = r + }, + 9120: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(5998)) + var t = _interopRequireDefault(a(5274)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + const r = (0, d.default)('v5', 80, t.default) + var s = r + p['default'] = s + }, + 6900: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(814)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + function validate(e) { + return typeof e === 'string' && d.default.test(e) + } + var t = validate + p['default'] = t + }, + 1595: (e, p, a) => { + Object.defineProperty(p, '__esModule', { value: true }) + p['default'] = void 0 + var d = _interopRequireDefault(a(6900)) + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e } + } + function version(e) { + if (!(0, d.default)(e)) { + throw TypeError('Invalid UUID') + } + return parseInt(e.substr(14, 1), 16) + } + var t = version + p['default'] = t + }, + 4886: (e) => { + var p = {} + e.exports = p + function sign(e) { + return e < 0 ? -1 : 1 + } + function evenRound(e) { + if (e % 1 === 0.5 && (e & 1) === 0) { + return Math.floor(e) + } else { + return Math.round(e) + } + } + function createNumberConversion(e, p) { + if (!p.unsigned) { + --e + } + const a = p.unsigned ? 0 : -Math.pow(2, e) + const d = Math.pow(2, e) - 1 + const t = p.moduloBitLength + ? Math.pow(2, p.moduloBitLength) + : Math.pow(2, e) + const r = p.moduloBitLength + ? Math.pow(2, p.moduloBitLength - 1) + : Math.pow(2, e - 1) + return function (e, s) { + if (!s) s = {} + let i = +e + if (s.enforceRange) { + if (!Number.isFinite(i)) { + throw new TypeError('Argument is not a finite number') + } + i = sign(i) * Math.floor(Math.abs(i)) + if (i < a || i > d) { + throw new TypeError('Argument is not in byte range') + } + return i + } + if (!isNaN(i) && s.clamp) { + i = evenRound(i) + if (i < a) i = a + if (i > d) i = d + return i + } + if (!Number.isFinite(i) || i === 0) { + return 0 + } + i = sign(i) * Math.floor(Math.abs(i)) + i = i % t + if (!p.unsigned && i >= r) { + return i - t + } else if (p.unsigned) { + if (i < 0) { + i += t + } else if (i === -0) { + return 0 + } + } + return i + } + } + p['void'] = function () { + return undefined + } + p['boolean'] = function (e) { + return !!e + } + p['byte'] = createNumberConversion(8, { unsigned: false }) + p['octet'] = createNumberConversion(8, { unsigned: true }) + p['short'] = createNumberConversion(16, { unsigned: false }) + p['unsigned short'] = createNumberConversion(16, { unsigned: true }) + p['long'] = createNumberConversion(32, { unsigned: false }) + p['unsigned long'] = createNumberConversion(32, { unsigned: true }) + p['long long'] = createNumberConversion(32, { + unsigned: false, + moduloBitLength: 64, + }) + p['unsigned long long'] = createNumberConversion(32, { + unsigned: true, + moduloBitLength: 64, + }) + p['double'] = function (e) { + const p = +e + if (!Number.isFinite(p)) { + throw new TypeError('Argument is not a finite floating-point value') + } + return p + } + p['unrestricted double'] = function (e) { + const p = +e + if (isNaN(p)) { + throw new TypeError('Argument is NaN') + } + return p + } + p['float'] = p['double'] + p['unrestricted float'] = p['unrestricted double'] + p['DOMString'] = function (e, p) { + if (!p) p = {} + if (p.treatNullAsEmptyString && e === null) { + return '' + } + return String(e) + } + p['ByteString'] = function (e, p) { + const a = String(e) + let d = undefined + for (let e = 0; (d = a.codePointAt(e)) !== undefined; ++e) { + if (d > 255) { + throw new TypeError('Argument is not a valid bytestring') + } + } + return a + } + p['USVString'] = function (e) { + const p = String(e) + const a = p.length + const d = [] + for (let e = 0; e < a; ++e) { + const t = p.charCodeAt(e) + if (t < 55296 || t > 57343) { + d.push(String.fromCodePoint(t)) + } else if (56320 <= t && t <= 57343) { + d.push(String.fromCodePoint(65533)) + } else { + if (e === a - 1) { + d.push(String.fromCodePoint(65533)) + } else { + const a = p.charCodeAt(e + 1) + if (56320 <= a && a <= 57343) { + const p = t & 1023 + const r = a & 1023 + d.push(String.fromCodePoint((2 << 15) + (2 << 9) * p + r)) + ++e + } else { + d.push(String.fromCodePoint(65533)) + } + } + } + } + return d.join('') + } + p['Date'] = function (e, p) { + if (!(e instanceof Date)) { + throw new TypeError('Argument is not a Date object') + } + if (isNaN(e)) { + return undefined + } + return e + } + p['RegExp'] = function (e, p) { + if (!(e instanceof RegExp)) { + e = new RegExp(e) + } + return e + } + }, + 7537: (e, p, a) => { + const d = a(2158) + p.implementation = class URLImpl { + constructor(e) { + const p = e[0] + const a = e[1] + let t = null + if (a !== undefined) { + t = d.basicURLParse(a) + if (t === 'failure') { + throw new TypeError('Invalid base URL') + } + } + const r = d.basicURLParse(p, { baseURL: t }) + if (r === 'failure') { + throw new TypeError('Invalid URL') + } + this._url = r + } + get href() { + return d.serializeURL(this._url) + } + set href(e) { + const p = d.basicURLParse(e) + if (p === 'failure') { + throw new TypeError('Invalid URL') + } + this._url = p + } + get origin() { + return d.serializeURLOrigin(this._url) + } + get protocol() { + return this._url.scheme + ':' + } + set protocol(e) { + d.basicURLParse(e + ':', { + url: this._url, + stateOverride: 'scheme start', + }) + } + get username() { + return this._url.username + } + set username(e) { + if (d.cannotHaveAUsernamePasswordPort(this._url)) { + return + } + d.setTheUsername(this._url, e) + } + get password() { + return this._url.password + } + set password(e) { + if (d.cannotHaveAUsernamePasswordPort(this._url)) { + return + } + d.setThePassword(this._url, e) + } + get host() { + const e = this._url + if (e.host === null) { + return '' + } + if (e.port === null) { + return d.serializeHost(e.host) + } + return d.serializeHost(e.host) + ':' + d.serializeInteger(e.port) + } + set host(e) { + if (this._url.cannotBeABaseURL) { + return + } + d.basicURLParse(e, { url: this._url, stateOverride: 'host' }) + } + get hostname() { + if (this._url.host === null) { + return '' + } + return d.serializeHost(this._url.host) + } + set hostname(e) { + if (this._url.cannotBeABaseURL) { + return + } + d.basicURLParse(e, { url: this._url, stateOverride: 'hostname' }) + } + get port() { + if (this._url.port === null) { + return '' + } + return d.serializeInteger(this._url.port) + } + set port(e) { + if (d.cannotHaveAUsernamePasswordPort(this._url)) { + return + } + if (e === '') { + this._url.port = null + } else { + d.basicURLParse(e, { url: this._url, stateOverride: 'port' }) + } + } + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0] + } + if (this._url.path.length === 0) { + return '' + } + return '/' + this._url.path.join('/') + } + set pathname(e) { + if (this._url.cannotBeABaseURL) { + return + } + this._url.path = [] + d.basicURLParse(e, { url: this._url, stateOverride: 'path start' }) + } + get search() { + if (this._url.query === null || this._url.query === '') { + return '' + } + return '?' + this._url.query + } + set search(e) { + const p = this._url + if (e === '') { + p.query = null + return + } + const a = e[0] === '?' ? e.substring(1) : e + p.query = '' + d.basicURLParse(a, { url: p, stateOverride: 'query' }) + } + get hash() { + if (this._url.fragment === null || this._url.fragment === '') { + return '' + } + return '#' + this._url.fragment + } + set hash(e) { + if (e === '') { + this._url.fragment = null + return + } + const p = e[0] === '#' ? e.substring(1) : e + this._url.fragment = '' + d.basicURLParse(p, { url: this._url, stateOverride: 'fragment' }) + } + toJSON() { + return this.href + } + } + }, + 3394: (e, p, a) => { + const d = a(4886) + const t = a(3185) + const r = a(7537) + const s = t.implSymbol + function URL(p) { + if (!this || this[s] || !(this instanceof URL)) { + throw new TypeError( + "Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function." + ) + } + if (arguments.length < 1) { + throw new TypeError( + "Failed to construct 'URL': 1 argument required, but only " + + arguments.length + + ' present.' + ) + } + const a = [] + for (let e = 0; e < arguments.length && e < 2; ++e) { + a[e] = arguments[e] + } + a[0] = d['USVString'](a[0]) + if (a[1] !== undefined) { + a[1] = d['USVString'](a[1]) + } + e.exports.setup(this, a) + } + URL.prototype.toJSON = function toJSON() { + if (!this || !e.exports.is(this)) { + throw new TypeError('Illegal invocation') + } + const p = [] + for (let e = 0; e < arguments.length && e < 0; ++e) { + p[e] = arguments[e] + } + return this[s].toJSON.apply(this[s], p) + } + Object.defineProperty(URL.prototype, 'href', { + get() { + return this[s].href + }, + set(e) { + e = d['USVString'](e) + this[s].href = e + }, + enumerable: true, + configurable: true, + }) + URL.prototype.toString = function () { + if (!this || !e.exports.is(this)) { + throw new TypeError('Illegal invocation') + } + return this.href + } + Object.defineProperty(URL.prototype, 'origin', { + get() { + return this[s].origin + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'protocol', { + get() { + return this[s].protocol + }, + set(e) { + e = d['USVString'](e) + this[s].protocol = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'username', { + get() { + return this[s].username + }, + set(e) { + e = d['USVString'](e) + this[s].username = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'password', { + get() { + return this[s].password + }, + set(e) { + e = d['USVString'](e) + this[s].password = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'host', { + get() { + return this[s].host + }, + set(e) { + e = d['USVString'](e) + this[s].host = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'hostname', { + get() { + return this[s].hostname + }, + set(e) { + e = d['USVString'](e) + this[s].hostname = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'port', { + get() { + return this[s].port + }, + set(e) { + e = d['USVString'](e) + this[s].port = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'pathname', { + get() { + return this[s].pathname + }, + set(e) { + e = d['USVString'](e) + this[s].pathname = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'search', { + get() { + return this[s].search + }, + set(e) { + e = d['USVString'](e) + this[s].search = e + }, + enumerable: true, + configurable: true, + }) + Object.defineProperty(URL.prototype, 'hash', { + get() { + return this[s].hash + }, + set(e) { + e = d['USVString'](e) + this[s].hash = e + }, + enumerable: true, + configurable: true, + }) + e.exports = { + is(e) { + return !!e && e[s] instanceof r.implementation + }, + create(e, p) { + let a = Object.create(URL.prototype) + this.setup(a, e, p) + return a + }, + setup(e, p, a) { + if (!a) a = {} + a.wrapper = e + e[s] = new r.implementation(p, a) + e[s][t.wrapperSymbol] = e + }, + interface: URL, + expose: { Window: { URL: URL }, Worker: { URL: URL } }, + } + }, + 8665: (e, p, a) => { + p.URL = a(3394)['interface'] + p.serializeURL = a(2158).serializeURL + p.serializeURLOrigin = a(2158).serializeURLOrigin + p.basicURLParse = a(2158).basicURLParse + p.setTheUsername = a(2158).setTheUsername + p.setThePassword = a(2158).setThePassword + p.serializeHost = a(2158).serializeHost + p.serializeInteger = a(2158).serializeInteger + p.parseURL = a(2158).parseURL + }, + 2158: (e, p, a) => { + const d = a(5477) + const t = a(4256) + const r = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443, + } + const s = Symbol('failure') + function countSymbols(e) { + return d.ucs2.decode(e).length + } + function at(e, p) { + const a = e[p] + return isNaN(a) ? undefined : String.fromCodePoint(a) + } + function isASCIIDigit(e) { + return e >= 48 && e <= 57 + } + function isASCIIAlpha(e) { + return (e >= 65 && e <= 90) || (e >= 97 && e <= 122) + } + function isASCIIAlphanumeric(e) { + return isASCIIAlpha(e) || isASCIIDigit(e) + } + function isASCIIHex(e) { + return isASCIIDigit(e) || (e >= 65 && e <= 70) || (e >= 97 && e <= 102) + } + function isSingleDot(e) { + return e === '.' || e.toLowerCase() === '%2e' + } + function isDoubleDot(e) { + e = e.toLowerCase() + return e === '..' || e === '%2e.' || e === '.%2e' || e === '%2e%2e' + } + function isWindowsDriveLetterCodePoints(e, p) { + return isASCIIAlpha(e) && (p === 58 || p === 124) + } + function isWindowsDriveLetterString(e) { + return ( + e.length === 2 && + isASCIIAlpha(e.codePointAt(0)) && + (e[1] === ':' || e[1] === '|') + ) + } + function isNormalizedWindowsDriveLetterString(e) { + return e.length === 2 && isASCIIAlpha(e.codePointAt(0)) && e[1] === ':' + } + function containsForbiddenHostCodePoint(e) { + return ( + e.search( + /\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/ + ) !== -1 + ) + } + function containsForbiddenHostCodePointExcludingPercent(e) { + return ( + e.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== + -1 + ) + } + function isSpecialScheme(e) { + return r[e] !== undefined + } + function isSpecial(e) { + return isSpecialScheme(e.scheme) + } + function defaultPort(e) { + return r[e] + } + function percentEncode(e) { + let p = e.toString(16).toUpperCase() + if (p.length === 1) { + p = '0' + p + } + return '%' + p + } + function utf8PercentEncode(e) { + const p = new Buffer(e) + let a = '' + for (let e = 0; e < p.length; ++e) { + a += percentEncode(p[e]) + } + return a + } + function utf8PercentDecode(e) { + const p = new Buffer(e) + const a = [] + for (let e = 0; e < p.length; ++e) { + if (p[e] !== 37) { + a.push(p[e]) + } else if ( + p[e] === 37 && + isASCIIHex(p[e + 1]) && + isASCIIHex(p[e + 2]) + ) { + a.push(parseInt(p.slice(e + 1, e + 3).toString(), 16)) + e += 2 + } else { + a.push(p[e]) + } + } + return new Buffer(a).toString() + } + function isC0ControlPercentEncode(e) { + return e <= 31 || e > 126 + } + const i = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]) + function isPathPercentEncode(e) { + return isC0ControlPercentEncode(e) || i.has(e) + } + const o = new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]) + function isUserinfoPercentEncode(e) { + return isPathPercentEncode(e) || o.has(e) + } + function percentEncodeChar(e, p) { + const a = String.fromCodePoint(e) + if (p(e)) { + return utf8PercentEncode(a) + } + return a + } + function parseIPv4Number(e) { + let p = 10 + if ( + e.length >= 2 && + e.charAt(0) === '0' && + e.charAt(1).toLowerCase() === 'x' + ) { + e = e.substring(2) + p = 16 + } else if (e.length >= 2 && e.charAt(0) === '0') { + e = e.substring(1) + p = 8 + } + if (e === '') { + return 0 + } + const a = p === 10 ? /[^0-9]/ : p === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/ + if (a.test(e)) { + return s + } + return parseInt(e, p) + } + function parseIPv4(e) { + const p = e.split('.') + if (p[p.length - 1] === '') { + if (p.length > 1) { + p.pop() + } + } + if (p.length > 4) { + return e + } + const a = [] + for (const d of p) { + if (d === '') { + return e + } + const p = parseIPv4Number(d) + if (p === s) { + return e + } + a.push(p) + } + for (let e = 0; e < a.length - 1; ++e) { + if (a[e] > 255) { + return s + } + } + if (a[a.length - 1] >= Math.pow(256, 5 - a.length)) { + return s + } + let d = a.pop() + let t = 0 + for (const e of a) { + d += e * Math.pow(256, 3 - t) + ++t + } + return d + } + function serializeIPv4(e) { + let p = '' + let a = e + for (let e = 1; e <= 4; ++e) { + p = String(a % 256) + p + if (e !== 4) { + p = '.' + p + } + a = Math.floor(a / 256) + } + return p + } + function parseIPv6(e) { + const p = [0, 0, 0, 0, 0, 0, 0, 0] + let a = 0 + let t = null + let r = 0 + e = d.ucs2.decode(e) + if (e[r] === 58) { + if (e[r + 1] !== 58) { + return s + } + r += 2 + ++a + t = a + } + while (r < e.length) { + if (a === 8) { + return s + } + if (e[r] === 58) { + if (t !== null) { + return s + } + ++r + ++a + t = a + continue + } + let d = 0 + let i = 0 + while (i < 4 && isASCIIHex(e[r])) { + d = d * 16 + parseInt(at(e, r), 16) + ++r + ++i + } + if (e[r] === 46) { + if (i === 0) { + return s + } + r -= i + if (a > 6) { + return s + } + let d = 0 + while (e[r] !== undefined) { + let t = null + if (d > 0) { + if (e[r] === 46 && d < 4) { + ++r + } else { + return s + } + } + if (!isASCIIDigit(e[r])) { + return s + } + while (isASCIIDigit(e[r])) { + const p = parseInt(at(e, r)) + if (t === null) { + t = p + } else if (t === 0) { + return s + } else { + t = t * 10 + p + } + if (t > 255) { + return s + } + ++r + } + p[a] = p[a] * 256 + t + ++d + if (d === 2 || d === 4) { + ++a + } + } + if (d !== 4) { + return s + } + break + } else if (e[r] === 58) { + ++r + if (e[r] === undefined) { + return s + } + } else if (e[r] !== undefined) { + return s + } + p[a] = d + ++a + } + if (t !== null) { + let e = a - t + a = 7 + while (a !== 0 && e > 0) { + const d = p[t + e - 1] + p[t + e - 1] = p[a] + p[a] = d + --a + --e + } + } else if (t === null && a !== 8) { + return s + } + return p + } + function serializeIPv6(e) { + let p = '' + const a = findLongestZeroSequence(e) + const d = a.idx + let t = false + for (let a = 0; a <= 7; ++a) { + if (t && e[a] === 0) { + continue + } else if (t) { + t = false + } + if (d === a) { + const e = a === 0 ? '::' : ':' + p += e + t = true + continue + } + p += e[a].toString(16) + if (a !== 7) { + p += ':' + } + } + return p + } + function parseHost(e, p) { + if (e[0] === '[') { + if (e[e.length - 1] !== ']') { + return s + } + return parseIPv6(e.substring(1, e.length - 1)) + } + if (!p) { + return parseOpaqueHost(e) + } + const a = utf8PercentDecode(e) + const d = t.toASCII(a, false, t.PROCESSING_OPTIONS.NONTRANSITIONAL, false) + if (d === null) { + return s + } + if (containsForbiddenHostCodePoint(d)) { + return s + } + const r = parseIPv4(d) + if (typeof r === 'number' || r === s) { + return r + } + return d + } + function parseOpaqueHost(e) { + if (containsForbiddenHostCodePointExcludingPercent(e)) { + return s + } + let p = '' + const a = d.ucs2.decode(e) + for (let e = 0; e < a.length; ++e) { + p += percentEncodeChar(a[e], isC0ControlPercentEncode) + } + return p + } + function findLongestZeroSequence(e) { + let p = null + let a = 1 + let d = null + let t = 0 + for (let r = 0; r < e.length; ++r) { + if (e[r] !== 0) { + if (t > a) { + p = d + a = t + } + d = null + t = 0 + } else { + if (d === null) { + d = r + } + ++t + } + } + if (t > a) { + p = d + a = t + } + return { idx: p, len: a } + } + function serializeHost(e) { + if (typeof e === 'number') { + return serializeIPv4(e) + } + if (e instanceof Array) { + return '[' + serializeIPv6(e) + ']' + } + return e + } + function trimControlChars(e) { + return e.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, '') + } + function trimTabAndNewline(e) { + return e.replace(/\u0009|\u000A|\u000D/g, '') + } + function shortenPath(e) { + const p = e.path + if (p.length === 0) { + return + } + if ( + e.scheme === 'file' && + p.length === 1 && + isNormalizedWindowsDriveLetter(p[0]) + ) { + return + } + p.pop() + } + function includesCredentials(e) { + return e.username !== '' || e.password !== '' + } + function cannotHaveAUsernamePasswordPort(e) { + return ( + e.host === null || + e.host === '' || + e.cannotBeABaseURL || + e.scheme === 'file' + ) + } + function isNormalizedWindowsDriveLetter(e) { + return /^[A-Za-z]:$/.test(e) + } + function URLStateMachine(e, p, a, t, r) { + this.pointer = 0 + this.input = e + this.base = p || null + this.encodingOverride = a || 'utf-8' + this.stateOverride = r + this.url = t + this.failure = false + this.parseError = false + if (!this.url) { + this.url = { + scheme: '', + username: '', + password: '', + host: null, + port: null, + path: [], + query: null, + fragment: null, + cannotBeABaseURL: false, + } + const e = trimControlChars(this.input) + if (e !== this.input) { + this.parseError = true + } + this.input = e + } + const i = trimTabAndNewline(this.input) + if (i !== this.input) { + this.parseError = true + } + this.input = i + this.state = r || 'scheme start' + this.buffer = '' + this.atFlag = false + this.arrFlag = false + this.passwordTokenSeenFlag = false + this.input = d.ucs2.decode(this.input) + for (; this.pointer <= this.input.length; ++this.pointer) { + const e = this.input[this.pointer] + const p = isNaN(e) ? undefined : String.fromCodePoint(e) + const a = this['parse ' + this.state](e, p) + if (!a) { + break + } else if (a === s) { + this.failure = true + break + } + } + } + URLStateMachine.prototype['parse scheme start'] = function parseSchemeStart( + e, + p + ) { + if (isASCIIAlpha(e)) { + this.buffer += p.toLowerCase() + this.state = 'scheme' + } else if (!this.stateOverride) { + this.state = 'no scheme' + --this.pointer + } else { + this.parseError = true + return s + } + return true + } + URLStateMachine.prototype['parse scheme'] = function parseScheme(e, p) { + if (isASCIIAlphanumeric(e) || e === 43 || e === 45 || e === 46) { + this.buffer += p.toLowerCase() + } else if (e === 58) { + if (this.stateOverride) { + if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { + return false + } + if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { + return false + } + if ( + (includesCredentials(this.url) || this.url.port !== null) && + this.buffer === 'file' + ) { + return false + } + if ( + this.url.scheme === 'file' && + (this.url.host === '' || this.url.host === null) + ) { + return false + } + } + this.url.scheme = this.buffer + this.buffer = '' + if (this.stateOverride) { + return false + } + if (this.url.scheme === 'file') { + if ( + this.input[this.pointer + 1] !== 47 || + this.input[this.pointer + 2] !== 47 + ) { + this.parseError = true + } + this.state = 'file' + } else if ( + isSpecial(this.url) && + this.base !== null && + this.base.scheme === this.url.scheme + ) { + this.state = 'special relative or authority' + } else if (isSpecial(this.url)) { + this.state = 'special authority slashes' + } else if (this.input[this.pointer + 1] === 47) { + this.state = 'path or authority' + ++this.pointer + } else { + this.url.cannotBeABaseURL = true + this.url.path.push('') + this.state = 'cannot-be-a-base-URL path' + } + } else if (!this.stateOverride) { + this.buffer = '' + this.state = 'no scheme' + this.pointer = -1 + } else { + this.parseError = true + return s + } + return true + } + URLStateMachine.prototype['parse no scheme'] = function parseNoScheme(e) { + if (this.base === null || (this.base.cannotBeABaseURL && e !== 35)) { + return s + } else if (this.base.cannotBeABaseURL && e === 35) { + this.url.scheme = this.base.scheme + this.url.path = this.base.path.slice() + this.url.query = this.base.query + this.url.fragment = '' + this.url.cannotBeABaseURL = true + this.state = 'fragment' + } else if (this.base.scheme === 'file') { + this.state = 'file' + --this.pointer + } else { + this.state = 'relative' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse special relative or authority'] = + function parseSpecialRelativeOrAuthority(e) { + if (e === 47 && this.input[this.pointer + 1] === 47) { + this.state = 'special authority ignore slashes' + ++this.pointer + } else { + this.parseError = true + this.state = 'relative' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse path or authority'] = + function parsePathOrAuthority(e) { + if (e === 47) { + this.state = 'authority' + } else { + this.state = 'path' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse relative'] = function parseRelative(e) { + this.url.scheme = this.base.scheme + if (isNaN(e)) { + this.url.username = this.base.username + this.url.password = this.base.password + this.url.host = this.base.host + this.url.port = this.base.port + this.url.path = this.base.path.slice() + this.url.query = this.base.query + } else if (e === 47) { + this.state = 'relative slash' + } else if (e === 63) { + this.url.username = this.base.username + this.url.password = this.base.password + this.url.host = this.base.host + this.url.port = this.base.port + this.url.path = this.base.path.slice() + this.url.query = '' + this.state = 'query' + } else if (e === 35) { + this.url.username = this.base.username + this.url.password = this.base.password + this.url.host = this.base.host + this.url.port = this.base.port + this.url.path = this.base.path.slice() + this.url.query = this.base.query + this.url.fragment = '' + this.state = 'fragment' + } else if (isSpecial(this.url) && e === 92) { + this.parseError = true + this.state = 'relative slash' + } else { + this.url.username = this.base.username + this.url.password = this.base.password + this.url.host = this.base.host + this.url.port = this.base.port + this.url.path = this.base.path.slice(0, this.base.path.length - 1) + this.state = 'path' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse relative slash'] = + function parseRelativeSlash(e) { + if (isSpecial(this.url) && (e === 47 || e === 92)) { + if (e === 92) { + this.parseError = true + } + this.state = 'special authority ignore slashes' + } else if (e === 47) { + this.state = 'authority' + } else { + this.url.username = this.base.username + this.url.password = this.base.password + this.url.host = this.base.host + this.url.port = this.base.port + this.state = 'path' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse special authority slashes'] = + function parseSpecialAuthoritySlashes(e) { + if (e === 47 && this.input[this.pointer + 1] === 47) { + this.state = 'special authority ignore slashes' + ++this.pointer + } else { + this.parseError = true + this.state = 'special authority ignore slashes' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse special authority ignore slashes'] = + function parseSpecialAuthorityIgnoreSlashes(e) { + if (e !== 47 && e !== 92) { + this.state = 'authority' + --this.pointer + } else { + this.parseError = true + } + return true + } + URLStateMachine.prototype['parse authority'] = function parseAuthority( + e, + p + ) { + if (e === 64) { + this.parseError = true + if (this.atFlag) { + this.buffer = '%40' + this.buffer + } + this.atFlag = true + const e = countSymbols(this.buffer) + for (let p = 0; p < e; ++p) { + const e = this.buffer.codePointAt(p) + if (e === 58 && !this.passwordTokenSeenFlag) { + this.passwordTokenSeenFlag = true + continue + } + const a = percentEncodeChar(e, isUserinfoPercentEncode) + if (this.passwordTokenSeenFlag) { + this.url.password += a + } else { + this.url.username += a + } + } + this.buffer = '' + } else if ( + isNaN(e) || + e === 47 || + e === 63 || + e === 35 || + (isSpecial(this.url) && e === 92) + ) { + if (this.atFlag && this.buffer === '') { + this.parseError = true + return s + } + this.pointer -= countSymbols(this.buffer) + 1 + this.buffer = '' + this.state = 'host' + } else { + this.buffer += p + } + return true + } + URLStateMachine.prototype['parse hostname'] = URLStateMachine.prototype[ + 'parse host' + ] = function parseHostName(e, p) { + if (this.stateOverride && this.url.scheme === 'file') { + --this.pointer + this.state = 'file host' + } else if (e === 58 && !this.arrFlag) { + if (this.buffer === '') { + this.parseError = true + return s + } + const e = parseHost(this.buffer, isSpecial(this.url)) + if (e === s) { + return s + } + this.url.host = e + this.buffer = '' + this.state = 'port' + if (this.stateOverride === 'hostname') { + return false + } + } else if ( + isNaN(e) || + e === 47 || + e === 63 || + e === 35 || + (isSpecial(this.url) && e === 92) + ) { + --this.pointer + if (isSpecial(this.url) && this.buffer === '') { + this.parseError = true + return s + } else if ( + this.stateOverride && + this.buffer === '' && + (includesCredentials(this.url) || this.url.port !== null) + ) { + this.parseError = true + return false + } + const e = parseHost(this.buffer, isSpecial(this.url)) + if (e === s) { + return s + } + this.url.host = e + this.buffer = '' + this.state = 'path start' + if (this.stateOverride) { + return false + } + } else { + if (e === 91) { + this.arrFlag = true + } else if (e === 93) { + this.arrFlag = false + } + this.buffer += p + } + return true + } + URLStateMachine.prototype['parse port'] = function parsePort(e, p) { + if (isASCIIDigit(e)) { + this.buffer += p + } else if ( + isNaN(e) || + e === 47 || + e === 63 || + e === 35 || + (isSpecial(this.url) && e === 92) || + this.stateOverride + ) { + if (this.buffer !== '') { + const e = parseInt(this.buffer) + if (e > Math.pow(2, 16) - 1) { + this.parseError = true + return s + } + this.url.port = e === defaultPort(this.url.scheme) ? null : e + this.buffer = '' + } + if (this.stateOverride) { + return false + } + this.state = 'path start' + --this.pointer + } else { + this.parseError = true + return s + } + return true + } + const n = new Set([47, 92, 63, 35]) + URLStateMachine.prototype['parse file'] = function parseFile(e) { + this.url.scheme = 'file' + if (e === 47 || e === 92) { + if (e === 92) { + this.parseError = true + } + this.state = 'file slash' + } else if (this.base !== null && this.base.scheme === 'file') { + if (isNaN(e)) { + this.url.host = this.base.host + this.url.path = this.base.path.slice() + this.url.query = this.base.query + } else if (e === 63) { + this.url.host = this.base.host + this.url.path = this.base.path.slice() + this.url.query = '' + this.state = 'query' + } else if (e === 35) { + this.url.host = this.base.host + this.url.path = this.base.path.slice() + this.url.query = this.base.query + this.url.fragment = '' + this.state = 'fragment' + } else { + if ( + this.input.length - this.pointer - 1 === 0 || + !isWindowsDriveLetterCodePoints(e, this.input[this.pointer + 1]) || + (this.input.length - this.pointer - 1 >= 2 && + !n.has(this.input[this.pointer + 2])) + ) { + this.url.host = this.base.host + this.url.path = this.base.path.slice() + shortenPath(this.url) + } else { + this.parseError = true + } + this.state = 'path' + --this.pointer + } + } else { + this.state = 'path' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse file slash'] = function parseFileSlash(e) { + if (e === 47 || e === 92) { + if (e === 92) { + this.parseError = true + } + this.state = 'file host' + } else { + if (this.base !== null && this.base.scheme === 'file') { + if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { + this.url.path.push(this.base.path[0]) + } else { + this.url.host = this.base.host + } + } + this.state = 'path' + --this.pointer + } + return true + } + URLStateMachine.prototype['parse file host'] = function parseFileHost( + e, + p + ) { + if (isNaN(e) || e === 47 || e === 92 || e === 63 || e === 35) { + --this.pointer + if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { + this.parseError = true + this.state = 'path' + } else if (this.buffer === '') { + this.url.host = '' + if (this.stateOverride) { + return false + } + this.state = 'path start' + } else { + let e = parseHost(this.buffer, isSpecial(this.url)) + if (e === s) { + return s + } + if (e === 'localhost') { + e = '' + } + this.url.host = e + if (this.stateOverride) { + return false + } + this.buffer = '' + this.state = 'path start' + } + } else { + this.buffer += p + } + return true + } + URLStateMachine.prototype['parse path start'] = function parsePathStart(e) { + if (isSpecial(this.url)) { + if (e === 92) { + this.parseError = true + } + this.state = 'path' + if (e !== 47 && e !== 92) { + --this.pointer + } + } else if (!this.stateOverride && e === 63) { + this.url.query = '' + this.state = 'query' + } else if (!this.stateOverride && e === 35) { + this.url.fragment = '' + this.state = 'fragment' + } else if (e !== undefined) { + this.state = 'path' + if (e !== 47) { + --this.pointer + } + } + return true + } + URLStateMachine.prototype['parse path'] = function parsePath(e) { + if ( + isNaN(e) || + e === 47 || + (isSpecial(this.url) && e === 92) || + (!this.stateOverride && (e === 63 || e === 35)) + ) { + if (isSpecial(this.url) && e === 92) { + this.parseError = true + } + if (isDoubleDot(this.buffer)) { + shortenPath(this.url) + if (e !== 47 && !(isSpecial(this.url) && e === 92)) { + this.url.path.push('') + } + } else if ( + isSingleDot(this.buffer) && + e !== 47 && + !(isSpecial(this.url) && e === 92) + ) { + this.url.path.push('') + } else if (!isSingleDot(this.buffer)) { + if ( + this.url.scheme === 'file' && + this.url.path.length === 0 && + isWindowsDriveLetterString(this.buffer) + ) { + if (this.url.host !== '' && this.url.host !== null) { + this.parseError = true + this.url.host = '' + } + this.buffer = this.buffer[0] + ':' + } + this.url.path.push(this.buffer) + } + this.buffer = '' + if ( + this.url.scheme === 'file' && + (e === undefined || e === 63 || e === 35) + ) { + while (this.url.path.length > 1 && this.url.path[0] === '') { + this.parseError = true + this.url.path.shift() + } + } + if (e === 63) { + this.url.query = '' + this.state = 'query' + } + if (e === 35) { + this.url.fragment = '' + this.state = 'fragment' + } + } else { + if ( + e === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2])) + ) { + this.parseError = true + } + this.buffer += percentEncodeChar(e, isPathPercentEncode) + } + return true + } + URLStateMachine.prototype['parse cannot-be-a-base-URL path'] = + function parseCannotBeABaseURLPath(e) { + if (e === 63) { + this.url.query = '' + this.state = 'query' + } else if (e === 35) { + this.url.fragment = '' + this.state = 'fragment' + } else { + if (!isNaN(e) && e !== 37) { + this.parseError = true + } + if ( + e === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2])) + ) { + this.parseError = true + } + if (!isNaN(e)) { + this.url.path[0] = + this.url.path[0] + percentEncodeChar(e, isC0ControlPercentEncode) + } + } + return true + } + URLStateMachine.prototype['parse query'] = function parseQuery(e, p) { + if (isNaN(e) || (!this.stateOverride && e === 35)) { + if ( + !isSpecial(this.url) || + this.url.scheme === 'ws' || + this.url.scheme === 'wss' + ) { + this.encodingOverride = 'utf-8' + } + const p = new Buffer(this.buffer) + for (let e = 0; e < p.length; ++e) { + if ( + p[e] < 33 || + p[e] > 126 || + p[e] === 34 || + p[e] === 35 || + p[e] === 60 || + p[e] === 62 + ) { + this.url.query += percentEncode(p[e]) + } else { + this.url.query += String.fromCodePoint(p[e]) + } + } + this.buffer = '' + if (e === 35) { + this.url.fragment = '' + this.state = 'fragment' + } + } else { + if ( + e === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2])) + ) { + this.parseError = true + } + this.buffer += p + } + return true + } + URLStateMachine.prototype['parse fragment'] = function parseFragment(e) { + if (isNaN(e)) { + } else if (e === 0) { + this.parseError = true + } else { + if ( + e === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2])) + ) { + this.parseError = true + } + this.url.fragment += percentEncodeChar(e, isC0ControlPercentEncode) + } + return true + } + function serializeURL(e, p) { + let a = e.scheme + ':' + if (e.host !== null) { + a += '//' + if (e.username !== '' || e.password !== '') { + a += e.username + if (e.password !== '') { + a += ':' + e.password + } + a += '@' + } + a += serializeHost(e.host) + if (e.port !== null) { + a += ':' + e.port + } + } else if (e.host === null && e.scheme === 'file') { + a += '//' + } + if (e.cannotBeABaseURL) { + a += e.path[0] + } else { + for (const p of e.path) { + a += '/' + p + } + } + if (e.query !== null) { + a += '?' + e.query + } + if (!p && e.fragment !== null) { + a += '#' + e.fragment + } + return a + } + function serializeOrigin(e) { + let p = e.scheme + '://' + p += serializeHost(e.host) + if (e.port !== null) { + p += ':' + e.port + } + return p + } + e.exports.serializeURL = serializeURL + e.exports.serializeURLOrigin = function (p) { + switch (p.scheme) { + case 'blob': + try { + return e.exports.serializeURLOrigin(e.exports.parseURL(p.path[0])) + } catch (e) { + return 'null' + } + case 'ftp': + case 'gopher': + case 'http': + case 'https': + case 'ws': + case 'wss': + return serializeOrigin({ + scheme: p.scheme, + host: p.host, + port: p.port, + }) + case 'file': + return 'file://' + default: + return 'null' + } + } + e.exports.basicURLParse = function (e, p) { + if (p === undefined) { + p = {} + } + const a = new URLStateMachine( + e, + p.baseURL, + p.encodingOverride, + p.url, + p.stateOverride + ) + if (a.failure) { + return 'failure' + } + return a.url + } + e.exports.setTheUsername = function (e, p) { + e.username = '' + const a = d.ucs2.decode(p) + for (let p = 0; p < a.length; ++p) { + e.username += percentEncodeChar(a[p], isUserinfoPercentEncode) + } + } + e.exports.setThePassword = function (e, p) { + e.password = '' + const a = d.ucs2.decode(p) + for (let p = 0; p < a.length; ++p) { + e.password += percentEncodeChar(a[p], isUserinfoPercentEncode) + } + } + e.exports.serializeHost = serializeHost + e.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort + e.exports.serializeInteger = function (e) { + return String(e) + } + e.exports.parseURL = function (p, a) { + if (a === undefined) { + a = {} + } + return e.exports.basicURLParse(p, { + baseURL: a.baseURL, + encodingOverride: a.encodingOverride, + }) + } + }, + 3185: (e) => { + e.exports.mixin = function mixin(e, p) { + const a = Object.getOwnPropertyNames(p) + for (let d = 0; d < a.length; ++d) { + Object.defineProperty(e, a[d], Object.getOwnPropertyDescriptor(p, a[d])) + } + } + e.exports.wrapperSymbol = Symbol('wrapper') + e.exports.implSymbol = Symbol('impl') + e.exports.wrapperForImpl = function (p) { + return p[e.exports.wrapperSymbol] + } + e.exports.implForWrapper = function (p) { + return p[e.exports.implSymbol] + } + }, + 2940: (e) => { + e.exports = wrappy + function wrappy(e, p) { + if (e && p) return wrappy(e)(p) + if (typeof e !== 'function') throw new TypeError('need wrapper function') + Object.keys(e).forEach(function (p) { + wrapper[p] = e[p] + }) + return wrapper + function wrapper() { + var p = new Array(arguments.length) + for (var a = 0; a < p.length; a++) { + p[a] = arguments[a] + } + var d = e.apply(this, p) + var t = p[p.length - 1] + if (typeof d === 'function' && d !== t) { + Object.keys(t).forEach(function (e) { + d[e] = t[e] + }) + } + return d + } + } + }, + 2877: (module) => { + module.exports = eval('require')('encoding') + }, + 9491: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('assert') + }, + 6113: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('crypto') + }, + 2361: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('events') + }, + 7147: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('fs') + }, + 3685: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('http') + }, + 5687: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('https') + }, + 1808: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('net') + }, + 2037: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('os') + }, + 1017: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('path') + }, + 5477: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('punycode') + }, + 2781: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('stream') + }, + 4404: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('tls') + }, + 7310: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('url') + }, + 3837: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('util') + }, + 9796: (e) => { + e.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)('zlib') + }, + 2020: (e) => { + e.exports = JSON.parse( + '[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]' + ) + }, +} +var __webpack_module_cache__ = {} +function __nccwpck_require__(e) { + var p = __webpack_module_cache__[e] + if (p !== undefined) { + return p.exports + } + var a = (__webpack_module_cache__[e] = { exports: {} }) + var d = true + try { + __webpack_modules__[e].call(a.exports, a, a.exports, __nccwpck_require__) + d = false + } finally { + if (d) delete __webpack_module_cache__[e] + } + return a.exports +} +;(() => { + __nccwpck_require__.n = (e) => { + var p = e && e.__esModule ? () => e['default'] : () => e + __nccwpck_require__.d(p, { a: p }) + return p + } +})() +;(() => { + __nccwpck_require__.d = (e, p) => { + for (var a in p) { + if (__nccwpck_require__.o(p, a) && !__nccwpck_require__.o(e, a)) { + Object.defineProperty(e, a, { enumerable: true, get: p[a] }) + } + } + } +})() +;(() => { + __nccwpck_require__.o = (e, p) => Object.prototype.hasOwnProperty.call(e, p) +})() +if (typeof __nccwpck_require__ !== 'undefined') + __nccwpck_require__.ab = + new URL('.', import.meta.url).pathname.slice( + import.meta.url.match(/^file:\/\/\/\w:/) ? 1 : 0, + -1 + ) + '/' +var __webpack_exports__ = {} +;(() => { + var e = __nccwpck_require__(2186) + var p = __nccwpck_require__.n(e) + var a = __nccwpck_require__(5438) + var d = __nccwpck_require__.n(a) + async function run() { + const p = process.env.GITHUB_TOKEN + if (!p) throw new Error('No GITHUB_TOKEN provided') + const { issue: d } = a.context.payload + if (!d) return console.log('Not an issue, exiting') + const { body: t, number: r, title: s } = d + if (!r) return console.log('Could not get issue number, exiting') + if (!t) return console.log('Could not get issue body, exiting') + if (!s) return console.log('Could not get issue title, exiting') + const { rest: i } = (0, a.getOctokit)(p) + const o = await loadAreaLabels(i) + ;(0, e.debug)(`Loaded labels: ${Array.from(o.keys()).join(', ')}`) + const n = [] + const l = t + .split( + 'Which area(s) of Next.js are affected? (leave empty if unsure)' + )[1] + ?.split('Link to the code that reproduces this issue')[0] + if (!l) { + console.log( + `Issue #${r} does not contain a match section, likely not a bug template, exiting` + ) + return + } + ;(0, e.debug)(`Match section: ${l}`) + for (const [e, p] of o.entries()) { + if (l.includes(p)) { + n.push(e) + } + } + ;(0, e.debug)(`Labels to add: ${n.join(', ')}`) + if (!n.length) return console.log('No labels to add, exiting') + await addLabels(i, r, n) + ;(0, e.debug)(`Added labels to issue #${r}: ${n.join(', ')}`) + } + async function loadAreaLabels(e) { + try { + const { data: p } = await e.issues.listLabelsForRepo({ + owner: a.context.repo.owner, + repo: a.context.repo.repo, + per_page: 100, + }) + const d = new Map() + for (const e of p) { + if (e.name.startsWith('area:') && e.description) { + d.set(e.name, e.description) + } + } + return d + } catch (e) { + console.error('Error loading labels: ' + e) + throw e + } + } + async function addLabels(p, d, t) { + try { + const r = t.map((e) => `"${e}"`).join(', ') + ;(0, e.debug)(`Adding label(s) (${r}) to issue #${d}`) + return await p.issues.addLabels({ + owner: a.context.repo.owner, + repo: a.context.repo.repo, + issue_number: d, + labels: t, + }) + } catch (e) { + console.error(`Could not add label(s) ${t} to issue #${d}`) + throw e + } + } + run().catch(e.setFailed) +})() diff --git a/.github/actions/issue-labeler/lib/licenses.txt b/.github/actions/issue-labeler/lib/licenses.txt new file mode 100644 index 0000000000000..bac409bc85496 --- /dev/null +++ b/.github/actions/issue-labeler/lib/licenses.txt @@ -0,0 +1,635 @@ +@actions/core +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@actions/github +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@actions/http-client +MIT +Actions Http Client for Node.js + +Copyright (c) GitHub, Inc. + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@octokit/auth-token +MIT +The MIT License + +Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@octokit/core +MIT +The MIT License + +Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@octokit/endpoint +MIT +The MIT License + +Copyright (c) 2018 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@octokit/graphql +MIT +The MIT License + +Copyright (c) 2018 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@octokit/plugin-paginate-rest +MIT +MIT License Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@octokit/plugin-rest-endpoint-methods +MIT +MIT License Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@octokit/request +MIT +The MIT License + +Copyright (c) 2018 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@octokit/request-error +MIT +The MIT License + +Copyright (c) 2019 Octokit contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@vercel/ncc +MIT +Copyright 2018 ZEIT, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +before-after-hook +Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018 Gregor Martynus and other contributors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +deprecation +ISC +The ISC License + +Copyright (c) Gregor Martynus and contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +is-plain-object +MIT +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +node-fetch +MIT +The MIT License (MIT) + +Copyright (c) 2016 David Frank + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +once +ISC +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +tr46 +MIT + +tunnel +MIT +The MIT License (MIT) + +Copyright (c) 2012 Koichi Kobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +universal-user-agent +ISC +# [ISC License](https://spdx.org/licenses/ISC) + +Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m) + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +uuid +MIT +The MIT License (MIT) + +Copyright (c) 2010-2020 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +webidl-conversions +BSD-2-Clause +# The BSD 2-Clause License + +Copyright (c) 2014, Domenic Denicola +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +whatwg-url +MIT +The MIT License (MIT) + +Copyright (c) 2015–2016 Sebastian Mayr + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +wrappy +ISC +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.github/actions/issue-labeler/lib/package.json b/.github/actions/issue-labeler/lib/package.json new file mode 100644 index 0000000000000..3dbc1ca591c05 --- /dev/null +++ b/.github/actions/issue-labeler/lib/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/.github/actions/issue-labeler/package.json b/.github/actions/issue-labeler/package.json new file mode 100644 index 0000000000000..59efafe4bcff0 --- /dev/null +++ b/.github/actions/issue-labeler/package.json @@ -0,0 +1,18 @@ +{ + "private": true, + "name": "issue-labeler", + "type": "module", + "exports": "./lib/index.js", + "scripts": { + "build": "pnpm types && pnpm ncc -m -o ./lib build src/index.ts --license licenses.txt", + "types": "tsc" + }, + "dependencies": { + "@actions/core": "^1.10.0", + "@actions/github": "^5.1.1" + }, + "devDependencies": { + "@types/node": "^18.15.3", + "@vercel/ncc": "0.36.1" + } +} diff --git a/.github/actions/issue-labeler/src/index.ts b/.github/actions/issue-labeler/src/index.ts new file mode 100644 index 0000000000000..2093575c79ac0 --- /dev/null +++ b/.github/actions/issue-labeler/src/index.ts @@ -0,0 +1,102 @@ +import { setFailed, debug } from '@actions/core' +import { context, getOctokit } from '@actions/github' + +type GitHubClient = ReturnType['rest'] + +async function run() { + const token = process.env.GITHUB_TOKEN + if (!token) throw new Error('No GITHUB_TOKEN provided') + + const { issue } = context.payload + if (!issue) return console.log('Not an issue, exiting') + + const { body: issue_body, number: issue_number, title: issue_title } = issue + if (!issue_number) return console.log('Could not get issue number, exiting') + if (!issue_body) return console.log('Could not get issue body, exiting') + if (!issue_title) return console.log('Could not get issue title, exiting') + + // A client to load data from GitHub + const { rest: client } = getOctokit(token) + + // Load our regex rules from the repo labels + const labels = await loadAreaLabels(client) + + debug(`Loaded labels: ${Array.from(labels.keys()).join(', ')}`) + + /** List of labels to add */ + const toAdd: string[] = [] + + // https://github.com/vercel/next.js/blame/canary/.github/ISSUE_TEMPLATE/1.bug_report.yml + + const matchSection = issue_body + .split('Which area(s) of Next.js are affected? (leave empty if unsure)')[1] + ?.split('Link to the code that reproduces this issue')[0] + + if (!matchSection) { + console.log( + `Issue #${issue_number} does not contain a match section, likely not a bug template, exiting` + ) + return + } + + debug(`Match section: ${matchSection}`) + + for (const [label, description] of labels.entries()) { + if (matchSection.includes(description)) { + toAdd.push(label) + } + } + + debug(`Labels to add: ${toAdd.join(', ')}`) + + if (!toAdd.length) return console.log('No labels to add, exiting') + + await addLabels(client, issue_number, toAdd) + + debug(`Added labels to issue #${issue_number}: ${toAdd.join(', ')}`) +} + +/** Load label descriptions from the repo. */ +async function loadAreaLabels(client: GitHubClient) { + try { + const { data } = await client.issues.listLabelsForRepo({ + owner: context.repo.owner, + repo: context.repo.repo, + per_page: 100, + }) + + const labels = new Map() + // Only load labels that start with `area:` and have a description + for (const label of data) { + if (label.name.startsWith('area:') && label.description) { + labels.set(label.name, label.description) + } + } + return labels + } catch (error) { + console.error('Error loading labels: ' + error) + throw error + } +} + +async function addLabels( + client: GitHubClient, + issue_number: number, + labels: string[] +) { + try { + const formatted = labels.map((l) => `"${l}"`).join(', ') + debug(`Adding label(s) (${formatted}) to issue #${issue_number}`) + return await client.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number, + labels, + }) + } catch (error) { + console.error(`Could not add label(s) ${labels} to issue #${issue_number}`) + throw error + } +} + +run().catch(setFailed) diff --git a/.github/actions/issue-labeler/tsconfig.json b/.github/actions/issue-labeler/tsconfig.json new file mode 100644 index 0000000000000..4f78c139cbfa6 --- /dev/null +++ b/.github/actions/issue-labeler/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "noEmit": true, + "target": "esnext", + "moduleResolution": "node", + "rootDir": "./src", + "strict": true, + "noImplicitAny": true + } +} diff --git a/.github/actions/issue-validator/canary.md b/.github/actions/issue-validator/canary.md index 9f27fff657478..1f8d0fd59c7fa 100644 --- a/.github/actions/issue-validator/canary.md +++ b/.github/actions/issue-validator/canary.md @@ -10,7 +10,7 @@ If the issue does not reproduce with the `canary` version, then it has already b ### **How can I quickly verify if my issue has been fixed in `canary`?** -The safest way is to install `next@canary` in your project and test it, but you can also search through [closed Next.js issues](https://github.com/vercel/next.js/issues?q=is%3Aissue+is%3Aclosed) for duplicates or check the [Next.js releases](https://github.com/vercel/next.js/releases). You can also use the GitHub [template](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template) (preferred), or the [CodeSandbox](https://codesandbox.io/s/github/vercel/next.js/tree/canary/examples/reproduction-template) or [StackBlitz](https://stackblitz.com/fork/github/vercel/next.js/tree/canary/examples/reproduction-template) templates to create a reproduction with `canary` from scratch. +The safest way is to install `next@canary` in your project and test it, but you can also search through [closed Next.js issues](https://github.com/vercel/next.js/issues?q=is%3Aissue+is%3Aclosed) for duplicates or check the [Next.js releases](https://github.com/vercel/next.js/releases). You can also use the GitHub templates (preferred) for [pages](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template) and [App Router](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template-app-dir), or the [CodeSandbox: `pages`](https://codesandbox.io/s/github/vercel/next.js/tree/canary/examples/reproduction-template) or [CodeSandbox: App Router](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template-app-dir) templates to create a reproduction with `canary` from scratch. ### **My issue has been open for a long time, why do I need to verify `canary` now?** diff --git a/.github/actions/issue-validator/repro.md b/.github/actions/issue-validator/repro.md index 0dbfa09a35ad9..484297011d8ee 100644 --- a/.github/actions/issue-validator/repro.md +++ b/.github/actions/issue-validator/repro.md @@ -2,7 +2,7 @@ We cannot recreate the issue with the provided information. **Please add a repro ### **Why was this issue marked with the `please add a complete reproduction` label?** -To be able to investigate, we need access to a reproduction to identify what triggered the issue. We prefer a link to a public GitHub repository ([template](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template)), but you can also use a tool like [CodeSandbox](https://codesandbox.io/s/github/vercel/next.js/tree/canary/examples/reproduction-template) or [StackBlitz](https://stackblitz.com/fork/github/vercel/next.js/tree/canary/examples/reproduction-template). +To be able to investigate, we need access to a reproduction to identify what triggered the issue. We prefer a link to a public GitHub repository ([template for `pages`](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template), [template for App Router](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template-app-dir)), but you can also use these templates: [CodeSandbox: `pages`](https://codesandbox.io/s/github/vercel/next.js/tree/canary/examples/reproduction-template) or [CodeSandbox: App Router](https://github.com/vercel/next.js/tree/canary/examples/reproduction-template-app-dir). To make sure the issue is resolved as quickly as possible, please make sure that the reproduction is as **minimal** as possible. This means that you should **remove unnecessary code, files, and dependencies** that do not contribute to the issue. diff --git a/.github/actions/next-stats-action/package.json b/.github/actions/next-stats-action/package.json index c4f4c4c1d1023..1f8898ce3adad 100644 --- a/.github/actions/next-stats-action/package.json +++ b/.github/actions/next-stats-action/package.json @@ -10,7 +10,7 @@ "gzip-size": "^5.1.1", "minimatch": "^3.0.4", "node-fetch": "^2.6.0", - "prettier": "^1.18.2", + "prettier": "^2.8.4", "pretty-bytes": "^5.3.0", "pretty-ms": "^5.0.0", "semver": "7.3.4" diff --git a/.github/actions/next-stats-action/src/prepare/repo-setup.js b/.github/actions/next-stats-action/src/prepare/repo-setup.js index 21ad117508bdc..2f2895e76effa 100644 --- a/.github/actions/next-stats-action/src/prepare/repo-setup.js +++ b/.github/actions/next-stats-action/src/prepare/repo-setup.js @@ -55,146 +55,111 @@ module.exports = (actionInfo) => { } }, async linkPackages({ repoDir, nextSwcVersion }) { - let useTestPack = process.env.NEXT_TEST_PACK + const pkgPaths = new Map() + const pkgDatas = new Map() + let pkgs - if (useTestPack) { - execa.sync('pnpm', ['turbo', 'run', 'test-pack'], { - cwd: repoDir, - env: { NEXT_SWC_VERSION: nextSwcVersion }, - }) - - const pkgPaths = new Map() - const pkgs = (await fs.readdir(path.join(repoDir, 'packages'))).filter( - (item) => !item.startsWith('.') - ) - - pkgs.forEach((pkgDirname) => { - const { name } = require(path.join( - repoDir, - 'packages', - pkgDirname, - 'package.json' - )) - pkgPaths.set( - name, - path.join( - repoDir, - 'packages', - pkgDirname, - `packed-${pkgDirname}.tgz` - ) - ) - }) - return pkgPaths - } else { - // TODO: remove after next stable release (current v13.1.2) - const pkgPaths = new Map() - const pkgDatas = new Map() - let pkgs - - try { - pkgs = await fs.readdir(path.join(repoDir, 'packages')) - } catch (err) { - if (err.code === 'ENOENT') { - require('console').log('no packages to link') - return pkgPaths - } - throw err + try { + pkgs = await fs.readdir(path.join(repoDir, 'packages')) + } catch (err) { + if (err.code === 'ENOENT') { + require('console').log('no packages to link') + return pkgPaths } + throw err + } - for (const pkg of pkgs) { - const pkgPath = path.join(repoDir, 'packages', pkg) - const packedPkgPath = path.join(pkgPath, `${pkg}-packed.tgz`) + for (const pkg of pkgs) { + const pkgPath = path.join(repoDir, 'packages', pkg) + const packedPkgPath = path.join(pkgPath, `${pkg}-packed.tgz`) - const pkgDataPath = path.join(pkgPath, 'package.json') - if (!fs.existsSync(pkgDataPath)) { - require('console').log(`Skipping ${pkgDataPath}`) - continue - } - const pkgData = require(pkgDataPath) - const { name } = pkgData - pkgDatas.set(name, { - pkgDataPath, - pkg, - pkgPath, - pkgData, - packedPkgPath, - }) - pkgPaths.set(name, packedPkgPath) + const pkgDataPath = path.join(pkgPath, 'package.json') + if (!fs.existsSync(pkgDataPath)) { + require('console').log(`Skipping ${pkgDataPath}`) + continue } + const pkgData = require(pkgDataPath) + const { name } = pkgData + pkgDatas.set(name, { + pkgDataPath, + pkg, + pkgPath, + pkgData, + packedPkgPath, + }) + pkgPaths.set(name, packedPkgPath) + } - for (const pkg of pkgDatas.keys()) { - const { pkgDataPath, pkgData } = pkgDatas.get(pkg) + for (const pkg of pkgDatas.keys()) { + const { pkgDataPath, pkgData } = pkgDatas.get(pkg) - for (const pkg of pkgDatas.keys()) { - const { packedPkgPath } = pkgDatas.get(pkg) - if (!pkgData.dependencies || !pkgData.dependencies[pkg]) continue - pkgData.dependencies[pkg] = packedPkgPath - } + for (const pkg of pkgDatas.keys()) { + const { packedPkgPath } = pkgDatas.get(pkg) + if (!pkgData.dependencies || !pkgData.dependencies[pkg]) continue + pkgData.dependencies[pkg] = packedPkgPath + } - // make sure native binaries are included in local linking - if (pkg === '@next/swc') { - if (!pkgData.files) { - pkgData.files = [] - } - pkgData.files.push('native/*') - require('console').log( - 'using swc binaries: ', - await exec(`ls ${path.join(path.dirname(pkgDataPath), 'native')}`) - ) + // make sure native binaries are included in local linking + if (pkg === '@next/swc') { + if (!pkgData.files) { + pkgData.files = [] } + pkgData.files.push('native/*') + require('console').log( + 'using swc binaries: ', + await exec(`ls ${path.join(path.dirname(pkgDataPath), 'native')}`) + ) + } - if (pkg === 'next') { - if (nextSwcVersion) { - Object.assign(pkgData.dependencies, { - '@next/swc-linux-x64-gnu': nextSwcVersion, - }) + if (pkg === 'next') { + if (nextSwcVersion) { + Object.assign(pkgData.dependencies, { + '@next/swc-linux-x64-gnu': nextSwcVersion, + }) + } else { + if (pkgDatas.get('@next/swc')) { + pkgData.dependencies['@next/swc'] = + pkgDatas.get('@next/swc').packedPkgPath } else { - if (pkgDatas.get('@next/swc')) { - pkgData.dependencies['@next/swc'] = - pkgDatas.get('@next/swc').packedPkgPath - } else { - pkgData.files.push('native/*') - } + pkgData.files.push('native/*') } } + } - if (pkgData?.scripts?.prepublishOnly) { - // There's a bug in `pnpm pack` where it will run - // the prepublishOnly script and that will fail. - // See https://github.com/pnpm/pnpm/issues/2941 - delete pkgData.scripts.prepublishOnly - } - - await fs.writeFile( - pkgDataPath, - JSON.stringify(pkgData, null, 2), - 'utf8' - ) + if (pkgData?.scripts?.prepublishOnly) { + // There's a bug in `pnpm pack` where it will run + // the prepublishOnly script and that will fail. + // See https://github.com/pnpm/pnpm/issues/2941 + delete pkgData.scripts.prepublishOnly } - // wait to pack packages until after dependency paths have been updated - // to the correct versions - await Promise.all( - Array.from(pkgDatas.keys()).map(async (pkgName) => { - const { pkg, pkgPath, pkgData, packedPkgPath } = - pkgDatas.get(pkgName) - // Copied from pnpm source: https://github.com/pnpm/pnpm/blob/5a5512f14c47f4778b8d2b6d957fb12c7ef40127/releasing/plugin-commands-publishing/src/pack.ts#L96 - const tmpTarball = path.join( - pkgPath, - `${pkgData.name.replace('@', '').replace('/', '-')}-${ - pkgData.version - }.tgz` - ) - await execa('pnpm', ['pack'], { - cwd: pkgPath, - }) - await fs.copyFile(tmpTarball, packedPkgPath) - }) + await fs.writeFile( + pkgDataPath, + JSON.stringify(pkgData, null, 2), + 'utf8' ) - - return pkgPaths } + + // wait to pack packages until after dependency paths have been updated + // to the correct versions + await Promise.all( + Array.from(pkgDatas.keys()).map(async (pkgName) => { + const { pkg, pkgPath, pkgData, packedPkgPath } = pkgDatas.get(pkgName) + // Copied from pnpm source: https://github.com/pnpm/pnpm/blob/5a5512f14c47f4778b8d2b6d957fb12c7ef40127/releasing/plugin-commands-publishing/src/pack.ts#L96 + const tmpTarball = path.join( + pkgPath, + `${pkgData.name.replace('@', '').replace('/', '-')}-${ + pkgData.version + }.tgz` + ) + await execa('pnpm', ['pack'], { + cwd: pkgPath, + }) + await fs.copyFile(tmpTarball, packedPkgPath) + }) + ) + + return pkgPaths }, } } diff --git a/.github/issue-labeler.yml b/.github/issue-labeler.yml deleted file mode 100644 index cedfa239fae04..0000000000000 --- a/.github/issue-labeler.yml +++ /dev/null @@ -1,45 +0,0 @@ -# https://github.com/github/issue-labeler#basic-examples - -# Should match the list "Which area(s) of Next.js are affected?" in: -# https://github.com/vercel/next.js/blob/canary/.github/ISSUE_TEMPLATE/1.bug_report.yml -'area: app': 'App directory (appDir: true)' -'area: create-next-app': 'CLI (create-next-app)' -'area: data fetching': 'Data fetching (gS(S)P, getInitialProps)' -'area: Edge': 'Middleware / Edge (API routes, runtime)' -'area: ESLint': 'ESLint (eslint-config-next)' -'area: export': 'Static HTML Export (next export)' -'area: Font Optimization': 'Font optimization (@next/font)' -'area: I18n': 'Internationalzation (i18n)' -'area: Jest': 'Jest (next/jest)' -'area: MDX': 'MDX (@next/mdx)' -'area: Metadata': 'Metadata (metadata, generateMetadata, next/head, head.js)' -'area: next/dynamic': 'Dynamic imports (next/dynamic)' -'area: next/image': 'Image optmization (next/image, next/legacy/image)' -'area: next/script': 'Script optimizatzion (next/script)' -'area: package manager': 'Package manager (npm, pnpm, Yarn)' -'area: Routing': 'Routing (next/router, next/navigation, next/link)' -'area: standalone mode': 'Standalone mode (output: "standalone")' -'area: SWC Minify': 'SWC minifier (swcMinify: true)' -'area: SWC transforms': 'SWC transpilation' -'area: Turbopack': 'Turbopack (--turbo)' -'area: TypeScript': 'TypeScript' -# Less used/old/redundant labels -# area: AMP -# area: API routes -# area: Application Code -# area: Codemods -# area: Compiler Performance -# area: Compiler -# area: Concurrent Features -# area: Debugger -# area: Developer Experience -# area: Ecosystem -# area: experimental -# area: Middleware -# area: Reliability -# area: Repository Maintenance -# area: Server Components -# area: Static Generation -# area: styled-jsx -# area: Tracing -# area: URL Imports diff --git a/.github/labeler.json b/.github/labeler.json index 905f61f2c2832..4696c7aa8f41c 100644 --- a/.github/labeler.json +++ b/.github/labeler.json @@ -1,53 +1,64 @@ { "labels": { - "area: examples": ["examples/**"], - "area: documentation": ["docs/**", "errors/**"], "area: create-next-app": ["packages/create-next-app/**"], - "type: next": [ - "packages/next/**", - "packages/react-dev-overlay/**", - "packages/react-refresh-utils/**", - "packages/next-codemod/**", - "packages/eslint-plugin-next/**", - "packages/eslint-config-next/**", - "packages/next-env/**", - "packages/next-swc/**" - ], + "area: documentation": ["docs/**", "errors/**"], + "area: examples": ["examples/**"], + "area: Font Optimization": ["**/*font*"], + "area: tests": ["test/**", "bench/**"], + "area: Turbopack": ["packages/next-swc/crates/next-*/**"], "created-by: Chrome Aurora": [ - { "type": "user", "pattern": "spanicker" }, - { "type": "user", "pattern": "housseindjirdeh" }, + { "type": "user", "pattern": "atcastle" }, { "type": "user", "pattern": "devknoll" }, + { "type": "user", "pattern": "housseindjirdeh" }, { "type": "user", "pattern": "janicklas-ralph" }, - { "type": "user", "pattern": "atcastle" }, + { "type": "user", "pattern": "kara" }, { "type": "user", "pattern": "kyliau" }, - { "type": "user", "pattern": "kara" } + { "type": "user", "pattern": "spanicker" } ], "created-by: Next.js team": [ - { "type": "user", "pattern": "ijjk" }, - { "type": "user", "pattern": "padmaia" }, + { "type": "user", "pattern": "acdlite" }, + { "type": "user", "pattern": "balazsorban44" }, + { "type": "user", "pattern": "feedthejim" }, + { "type": "user", "pattern": "gnoff" }, + { "type": "user", "pattern": "hanneslund" }, { "type": "user", "pattern": "huozhi" }, + { "type": "user", "pattern": "ijjk" }, + { "type": "user", "pattern": "JanKaifer" }, + { "type": "user", "pattern": "leerob" }, + { "type": "user", "pattern": "sebmarkbage" }, { "type": "user", "pattern": "shuding" }, - { "type": "user", "pattern": "sokra" }, { "type": "user", "pattern": "styfle" }, - { "type": "user", "pattern": "leerob" }, - { "type": "user", "pattern": "kdy1" }, { "type": "user", "pattern": "timneutkens" }, - { "type": "user", "pattern": "sebmarkbage" }, - { "type": "user", "pattern": "wyattjoh" }, - { "type": "user", "pattern": "kwonoj" }, - { "type": "user", "pattern": "gnoff" }, - { "type": "user", "pattern": "padmaia" }, - { "type": "user", "pattern": "Brooooooklyn" }, - { "type": "user", "pattern": "ForsakenHarmony" }, - { "type": "user", "pattern": "feedthejim" }, - { "type": "user", "pattern": "JanKaifer" }, - { "type": "user", "pattern": "balazsorban44" }, - { "type": "user", "pattern": "hanneslund" } + { "type": "user", "pattern": "wyattjoh" } ], "created-by: Next.js docs team": [ + { "type": "user", "pattern": "ismaelrumzan" }, { "type": "user", "pattern": "MaedahBatool" }, - { "type": "user", "pattern": "molebox" }, - { "type": "user", "pattern": "ismaelrumzan" } + { "type": "user", "pattern": "molebox" } + ], + "created-by: web-tooling team": [ + { "type": "user", "pattern": "alexkirsz" }, + { "type": "user", "pattern": "Brooooooklyn" }, + { "type": "user", "pattern": "ForsakenHarmony" }, + { "type": "user", "pattern": "jridgewell" }, + { "type": "user", "pattern": "kdy1" }, + { "type": "user", "pattern": "kwonoj" }, + { "type": "user", "pattern": "padmaia" }, + { "type": "user", "pattern": "sokra" }, + { "type": "user", "pattern": "wbinnssmith" } + ], + "type: next": [ + "packages/eslint-config-next/**", + "packages/eslint-plugin-next/**", + "packages/font/**", + "packages/next-bundle-analyzer/**", + "packages/next-codemod/**", + "packages/next-env/**", + "packages/next-mdx/**", + "packages/next-swc/**", + "packages/next/**", + "packages/react-dev-overlay/**", + "packages/react-refresh-utils/**" ] } } diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 7820ed25bc373..b898a902797e1 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,25 +1,45 @@ - -## Bug +## For Contributors + +### Improving Documentation or adding/fixing Examples + +- The "examples guidelines" are followed from our contributing doc https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md +- Make sure the linting passes by running `pnpm build && pnpm lint`. See https://github.com/vercel/next.js/blob/canary/contributing/repository/linting.md + +### Fixing a bug + +- Related issues linked using `fixes #number` +- Tests added. See: https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs +- Errors have a helpful link attached, see https://github.com/vercel/next.js/blob/canary/contributing.md + +### Adding a feature -- [ ] Related issues linked using `fixes #number` -- [ ] Integration tests added -- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md) +- Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. (A discussion must be opened, see https://github.com/vercel/next.js/discussions/new?category=ideas) +- Related issues/discussions are linked using `fixes #number` +- e2e tests added (https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs +- Documentation added +- Telemetry added. In case of a feature if it's used or not. +- Errors have a helpful link attached, see https://github.com/vercel/next.js/blob/canary/contributing.md -## Feature -- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. -- [ ] Related issues linked using `fixes #number` -- [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) tests added -- [ ] Documentation added -- [ ] Telemetry added. In case of a feature if it's used or not. -- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md) -## Documentation / Examples +## For Maintainers -- [ ] Make sure the linting passes by running `pnpm build && pnpm lint` -- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md) +- Minimal description (aim for explaining to someone not on the team to understand the PR) +- When linking to a Slack thread, you might want to share details of the conclusion +- Link both the Linear (Fixes NEXT-xxx) and the GitHub issues +- Add review comments if necessary to explain to the reviewer the logic behind a change + +### What? + +### Why? + +### How? + +Closes NEXT- +Fixes # + +--> diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index f9e2affca13fa..c0c4fefae91b4 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -1,15 +1,16 @@ on: push: - branches: [canary] + branches: ['canary', 'trunk-merge/*'] pull_request: types: [opened, synchronize] + merge_group: name: Build, test, and deploy env: NAPI_CLI_VERSION: 2.14.7 TURBO_VERSION: 1.6.3 - RUST_TOOLCHAIN: nightly-2022-11-04 + RUST_TOOLCHAIN: nightly-2023-03-09 PNPM_VERSION: 7.24.3 NODE_MAINTENANCE_VERSION: 16 NODE_LTS_VERSION: 18 @@ -35,6 +36,7 @@ jobs: TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} outputs: docsChange: ${{ steps.docs-change.outputs.DOCS_CHANGE }} + codemodChange: ${{ steps.codemod-change.outputs.CODEMOD_CHANGE }} isRelease: ${{ steps.check-release.outputs.IS_RELEASE }} swcChange: ${{ steps.swc-change.outputs.SWC_CHANGE }} turboToken: ${{ steps.turbo-token.outputs.TURBO_TOKEN }} @@ -44,7 +46,7 @@ jobs: uses: actions/setup-node@v3 if: ${{ steps.docs-change.outputs.docsChange == 'nope' }} with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - uses: actions/checkout@v3 @@ -61,6 +63,12 @@ jobs: - run: echo "${{steps.docs-change.outputs.DOCS_CHANGE}}" + - name: Check codemod change + run: echo "CODEMOD_CHANGE<> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type next-codemod --exec echo 'yup')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT + id: codemod-change + + - run: echo "${{steps.codemod-change.outputs.CODEMOD_CHANGE}}" + - run: echo "SWC_CHANGE<> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type next-swc --exec echo 'yup')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT id: swc-change @@ -117,7 +125,7 @@ jobs: - name: Setup node uses: actions/setup-node@v3 with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - run: npm i -g pnpm@${PNPM_VERSION} @@ -181,8 +189,8 @@ jobs: if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }} run: | cargo fmt -- --check - cargo clippy --all -- -D warnings - working-directory: packages/next-swc + cargo clippy --all -- -D warnings -A deprecated + cargo check -p next-dev --no-default-features --features cli,custom_allocator,rustls-tls,__internal_nextjs_integration_test checkPrecompiled: name: Check Pre-compiled @@ -195,7 +203,7 @@ jobs: uses: actions/setup-node@v3 if: ${{needs.build.outputs.docsChange == 'nope'}} with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true # https://github.com/actions/virtual-environments/issues/1187 @@ -243,7 +251,7 @@ jobs: uses: actions/setup-node@v3 if: ${{needs.build.outputs.docsChange == 'nope'}} with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - uses: actions/cache@v3 @@ -301,7 +309,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" name: Run test/development if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -352,7 +360,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" name: Run test/development if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -400,7 +408,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" name: Run test/e2e (dev) if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -449,7 +457,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" name: Run test/e2e (dev) if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -497,7 +505,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type production --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type production --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" name: Run test/production if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -536,7 +544,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type production --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type production --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1" name: Run test/production if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -574,7 +582,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" name: Run test/e2e (production) if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -614,7 +622,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1" name: Run test/e2e (production) if: ${{needs.build.outputs.docsChange == 'nope'}} @@ -647,11 +655,8 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: echo "CNA_CHANGE<> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type cna --always-canary --exec echo 'yup')" >> $GITHUB_OUTPUT; echo "EOF" >> $GITHUB_OUTPUT - id: cna-change - - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ env.NODE_LTS_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_CNA=1 xvfb-run node run-tests.js test/integration/create-next-app/index.test.ts test/integration/create-next-app/templates.test.ts >> /proc/1/fd/1" - if: ${{ needs.build.outputs.docsChange == 'nope' && steps.cna-change.outputs.CNA_CHANGE == 'yup' }} + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_CNA=1 xvfb-run node run-tests.js test/integration/create-next-app/index.test.ts test/integration/create-next-app/templates.test.ts >> /proc/1/fd/1" + if: ${{ needs.build.outputs.docsChange == 'nope' }} - name: Upload test trace if: always() @@ -673,25 +678,24 @@ jobs: TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }} steps: - - run: echo "${{needs.build.outputs.docsChange}}" + - run: echo "${{needs.build.outputs.codemodChange}}" # https://github.com/actions/virtual-environments/issues/1187 - name: tune linux network + if: ${{ needs.build.outputs.codemodChange == 'yup' }} run: sudo ethtool -K eth0 tx off rx off - uses: actions/cache@v3 + if: ${{ needs.build.outputs.codemodChange == 'yup' }} timeout-minutes: 5 - if: ${{ needs.build.outputs.docsChange == 'nope' }} id: restore-build with: path: ./* key: ${{ github.sha }}-${{ github.run_number }} - - run: echo "CODEMOD_CHANGE<> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type next-codemod --always-canary --exec echo 'yup')" >> $GITHUB_OUTPUT; echo "EOF" >> $GITHUB_OUTPUT - id: codemodChange - - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ env.NODE_LTS_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && cd ./packages/next-codemod && pnpm build && pnpm test >> /proc/1/fd/1" - if: ${{ needs.build.outputs.docsChange == 'nope' && steps.codemodChange.outputs.CODEMOD_CHANGE == 'yup' }} + - name: Run tests + if: ${{ needs.build.outputs.codemodChange == 'yup' }} + run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && cd ./packages/next-codemod && pnpm build && pnpm test >> /proc/1/fd/1" testIntegration: name: Test Integration @@ -756,7 +760,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ env.NODE_LTS_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --timings -g ${{ matrix.group }}/28 >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --timings -g ${{ matrix.group }}/28 >> /proc/1/fd/1" if: ${{needs.build.outputs.docsChange == 'nope'}} - name: Upload test trace @@ -782,7 +786,7 @@ jobs: uses: actions/setup-node@v3 if: ${{needs.build.outputs.docsChange == 'nope'}} with: - node-version: 16 + node-version: ${{ env.NODE_MAINTENANCE_VERSION }} check-latest: true - uses: actions/cache@v3 @@ -808,6 +812,51 @@ jobs: - run: xvfb-run node run-tests.js test/integration/with-electron/test/index.test.js if: ${{needs.build.outputs.docsChange == 'nope'}} + # A job to run sets of tests with turbopack enabled. These tests are considered as `stable`, + # that running with turbopack should always pass. + testTurbopack: + name: Test Development (Turbopack) + runs-on: ubuntu-latest + needs: [build, build-native-test] + timeout-minutes: 35 + env: + NEXT_TELEMETRY_DISABLED: 1 + TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }} + # Enabling backtrace will makes snapshot tests fail + RUST_BACKTRACE: 0 + # Path to the custom next-swc bindings. + NEXT_BINDINGS_BIN: /work/packages/next-swc/native/next-swc.linux-x64-gnu.node + # Glob pattern to run specific tests with --turbo. + NEXT_DEV_TEST_GLOB: '*' + NEXT_EXTERNAL_TESTS_FILTERS: /work/packages/next-swc/crates/next-dev-tests/tests-manifest.json + + strategy: + fail-fast: false + steps: + - run: echo "${{needs.build.outputs.docsChange}}" + + # https://github.com/actions/virtual-environments/issues/1187 + - name: tune linux network + run: sudo ethtool -K eth0 tx off rx off + + - uses: actions/cache@v3 + timeout-minutes: 5 + if: ${{needs.build.outputs.docsChange == 'nope'}} + id: restore-build + with: + path: ./* + key: ${{ github.sha }}-${{ github.run_number }} + + - uses: actions/download-artifact@v3 + if: ${{needs.build.outputs.docsChange == 'nope'}} + with: + name: next-swc-test-binary + path: packages/next-swc/native + + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_EXTERNAL_TESTS_FILTERS=${NEXT_EXTERNAL_TESTS_FILTERS} __INTERNAL_NEXT_DEV_TEST_TURBO_DEV=TRUE __INTERNAL_CUSTOM_TURBOPACK_BINDINGS=${NEXT_BINDINGS_BIN} __INTERNAL_NEXT_DEV_TEST_TURBO_GLOB_MATCH=${NEXT_DEV_TEST_GLOB} NEXT_E2E_TEST_TIMEOUT=240000 NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -c 1 >> /proc/1/fd/1" + name: Run test/development + if: ${{needs.build.outputs.docsChange == 'nope'}} + testsPass: name: thank you, next runs-on: ubuntu-latest @@ -816,13 +865,14 @@ jobs: lint, check-examples, test-native, + test-native-integration, checkPrecompiled, testIntegration, testUnit, testDevLTS, testProdLTS, testDevE2ELTS, - testprode2elts, + testProdE2ELTS, ] steps: - run: exit 0 @@ -849,7 +899,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ env.NODE_MAINTENANCE_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && BROWSERNAME=firefox NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js test/integration/production/test/index.test.js >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_MAINTENANCE_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && BROWSERNAME=firefox NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js test/integration/production/test/index.test.js >> /proc/1/fd/1" if: ${{needs.build.outputs.docsChange == 'nope'}} testSafari: @@ -878,7 +928,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v{{ env.NODE_LTS_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start BROWSER_NAME=safari node run-tests.js -c 1 test/integration/production/test/index.test.js test/e2e/basepath.test.ts && DEVICE_NAME='iPhone XR' node run-tests.js -c 1 test/production/prerender-prefetch/index.test.ts >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v{{ env.NODE_LTS_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start BROWSER_NAME=safari node run-tests.js -c 1 test/integration/production/test/index.test.js test/e2e/basepath.test.ts && DEVICE_NAME='iPhone XR' node run-tests.js -c 1 test/production/prerender-prefetch/index.test.ts >> /proc/1/fd/1" if: ${{needs.build.outputs.docsChange == 'nope'}} testFirefoxNodeLTS: @@ -903,7 +953,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ env.NODE_LTS_VERSION }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && BROWSER_NAME=firefox NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js test/integration/production/test/index.test.js >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && BROWSER_NAME=firefox NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js test/integration/production/test/index.test.js >> /proc/1/fd/1" if: ${{needs.build.outputs.docsChange == 'nope'}} publishRelease: @@ -914,7 +964,9 @@ jobs: - build - build-wasm - build-native - - build-native-freebsd + permissions: + contents: write + id-token: write env: NPM_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }} steps: @@ -922,7 +974,7 @@ jobs: uses: actions/setup-node@v3 if: ${{needs.build.outputs.docsChange == 'nope'}} with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true # https://github.com/actions/virtual-environments/issues/1187 @@ -946,11 +998,35 @@ jobs: name: wasm-binaries path: packages/next-swc/crates/wasm + - run: npm i -g npm@9 # need latest version for provenance - run: npm i -g pnpm@${PNPM_VERSION} - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - run: ./scripts/publish-native.js - run: ./scripts/publish-release.js + deployExamples: + name: Deploy examples + runs-on: ubuntu-latest + needs: [build] + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 25 + - name: Install Vercel CLI + run: npm i -g vercel@28.16.15 + - name: Deploy preview examples + if: ${{ needs.build.outputs.isRelease != 'true' }} + run: ./scripts/deploy-examples.sh + env: + VERCEL_API_TOKEN: ${{ secrets.VERCEL_API_TOKEN }} + DEPLOY_ENVIRONMENT: preview + - name: Deploy production examples + if: ${{ needs.build.outputs.isRelease == 'true' }} + run: ./scripts/deploy-examples.sh + env: + VERCEL_API_TOKEN: ${{ secrets.VERCEL_API_TOKEN }} + DEPLOY_ENVIRONMENT: production + testDeployE2E: name: E2E (deploy) runs-on: ubuntu-latest @@ -973,10 +1049,12 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native + - run: npm i -g vercel@latest + - run: RESET_VC_PROJECT=true node scripts/reset-vercel-project.mjs name: Reset test project - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ env.NODE_LTS_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && VERCEL_TEST_TOKEN=${{ secrets.VERCEL_TEST_TOKEN }} VERCEL_TEST_TEAM=vtest314-next-e2e-tests NEXT_TEST_JOB=1 NEXT_TEST_MODE=deploy TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && VERCEL_TEST_TOKEN=${{ secrets.VERCEL_TEST_TOKEN }} VERCEL_TEST_TEAM=vtest314-next-e2e-tests NEXT_TEST_JOB=1 NEXT_TEST_MODE=deploy TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e >> /proc/1/fd/1" name: Run test/e2e (deploy) - name: Upload test trace @@ -997,7 +1075,7 @@ jobs: - name: Setup node uses: actions/setup-node@v3 with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - uses: actions/cache@v3 @@ -1021,7 +1099,11 @@ jobs: build-native-test: name: Build native binary for tests and metrics - runs-on: ubuntu-latest + runs-on: ubuntu-latest-16-core-oss + env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: 'vercel' + steps: # https://github.com/actions/virtual-environments/issues/1187 - name: tune linux network @@ -1071,16 +1153,22 @@ jobs: if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }} run: node scripts/normalize-version-bump.js + - name: Make more disk space + continue-on-error: true + run: sudo rm -rf /usr/local/lib/android + - name: Build in docker uses: addnab/docker-run-action@v3 if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }} with: image: ghcr.io/napi-rs/napi-rs/nodejs-rust:stable-2022-10-24-x64 - options: -e RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} -e NAPI_CLI_VERSION=${{ env.NAPI_CLI_VERSION }} -e TURBO_VERSION=${{ env.TURBO_VERSION }} -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build + options: -e TURBO_TOKEN=${{ env.TURBO_TOKEN }} -e TURBO_TEAM=${{ env.TURBO_TEAM }} -e RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} -e NAPI_CLI_VERSION=${{ env.NAPI_CLI_VERSION }} -e TURBO_VERSION=${{ env.TURBO_VERSION }} -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build # turn on some optimization while building Rust codes to prevent tests timeout run: | set -e && export CARGO_PROFILE_DEV_OPT_LEVEL=1 && + export CARGO_PROFILE_DEV_INCREMENTAL=false && + export CARGO_PROFILE_DEV_STRIP=true && rustup toolchain install "${RUST_TOOLCHAIN}" && rustup default "${RUST_TOOLCHAIN}" && rustup target add x86_64-unknown-linux-gnu && @@ -1104,7 +1192,7 @@ jobs: test-native: name: Unit Test Native Code - runs-on: ubuntu-latest + runs-on: ubuntu-latest-8-core-oss steps: - uses: actions/checkout@v3 @@ -1123,9 +1211,88 @@ jobs: toolchain: ${{ env.RUST_TOOLCHAIN }} profile: minimal - - run: cd packages/next-swc && cargo test + - run: cd packages/next-swc && cargo test --workspace --exclude next-dev-tests if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }} + test-native-integration: + name: Integration Test Native Code + runs-on: ubuntu-latest-16-core-oss + needs: build + + env: + CARGO_PROFILE_RELEASE_LTO: false + + steps: + - uses: actions/cache@v3 + timeout-minutes: 5 + id: restore-build + with: + path: ./* + key: ${{ github.sha }}-${{ github.run_number }} + + - run: echo "${{needs.build.outputs.docsChange == 'nope'}}" + + - name: Install + if: ${{needs.build.outputs.docsChange == 'nope'}} + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + profile: minimal + + - name: Install nextest + uses: taiki-e/install-action@nextest + + - name: Build tests + timeout-minutes: 60 + run: cd packages/next-swc && cargo nextest run -p next-dev-tests --release --no-run + if: ${{needs.build.outputs.docsChange == 'nope'}} + + - name: Run tests + timeout-minutes: 20 + run: cd packages/next-swc && cargo nextest run -p next-dev-tests --release --no-fail-fast + if: ${{needs.build.outputs.docsChange == 'nope'}} + + test-bench-native-integration: + name: Bench Integration Test Native Code + runs-on: ubuntu-latest-16-core-oss + needs: build + + env: + CARGO_PROFILE_RELEASE_LTO: false + TURBOPACK_BENCH_COUNTS: 10 + TURBOPACK_BENCH_CACHED: 1 + TURBOPACK_BENCH_PROGRESS: 1 + + steps: + - uses: actions/cache@v3 + timeout-minutes: 5 + id: restore-build + with: + path: ./* + key: ${{ github.sha }}-${{ github.run_number }} + + - run: echo "${{needs.build.outputs.docsChange == 'nope'}}" + + - name: Install Rust toolchain + if: ${{needs.build.outputs.docsChange == 'nope'}} + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + profile: minimal + + - name: Install nextest + uses: taiki-e/install-action@nextest + + - name: Build tests + timeout-minutes: 60 + run: cd packages/next-swc && cargo test --benches -p next-dev --release --no-run + if: ${{needs.build.outputs.docsChange == 'nope'}} + + - name: Run tests + timeout-minutes: 60 + run: cd packages/next-swc && cargo test --benches -p next-dev --release --no-fail-fast + if: ${{needs.build.outputs.docsChange == 'nope'}} + test-wasm: name: Test the wasm build runs-on: ubuntu-latest @@ -1156,7 +1323,7 @@ jobs: name: next-swc-test-binary path: packages/next-swc/native - - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ env.NODE_LTS_VERSION }} | FORCE=1 bash && node -v && node ./scripts/setup-wasm.mjs && npm i -g pnpm@${PNPM_VERSION} > /dev/null && TEST_WASM=true xvfb-run node run-tests.js test/integration/production/test/index.test.js test/e2e/streaming-ssr/index.test.ts >> /proc/1/fd/1" + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && node -v && node ./scripts/setup-wasm.mjs && npm i -g pnpm@${PNPM_VERSION} > /dev/null && TEST_WASM=true xvfb-run node run-tests.js test/integration/production/test/index.test.js test/e2e/streaming-ssr/index.test.ts >> /proc/1/fd/1" if: ${{needs.build.outputs.docsChange == 'nope'}} # Build binaries for publishing @@ -1171,12 +1338,12 @@ jobs: target: 'x86_64-apple-darwin' build: | npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi - turbo run build-native -- --release --target x86_64-apple-darwin + turbo run build-native-release -- --target x86_64-apple-darwin --release strip -x packages/next-swc/native/next-swc.*.node - host: windows-latest build: | npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" "pnpm@${PNPM_VERSION}" - turbo run build-native -- --release --target x86_64-pc-windows-msvc + turbo run build-native-release -- --target x86_64-pc-windows-msvc target: 'x86_64-pc-windows-msvc' - host: windows-latest build: | @@ -1193,7 +1360,7 @@ jobs: rustup target add x86_64-unknown-linux-gnu && npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi && unset CC_x86_64_unknown_linux_gnu && unset CC && - turbo run build-native -- --release --target x86_64-unknown-linux-gnu && + turbo run build-native-release -- --target x86_64-unknown-linux-gnu && strip packages/next-swc/native/next-swc.*.node - host: ubuntu-latest target: 'x86_64-unknown-linux-musl' @@ -1205,7 +1372,7 @@ jobs: rustup default "${RUST_TOOLCHAIN}" && rustup target add x86_64-unknown-linux-musl && npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi && - turbo run build-native -- --release --target x86_64-unknown-linux-musl && + turbo run build-native-release -- --target x86_64-unknown-linux-musl && strip packages/next-swc/native/next-swc.*.node - host: macos-latest target: 'aarch64-apple-darwin' @@ -1216,7 +1383,7 @@ jobs: SYSROOT=$(xcrun --sdk macosx --show-sdk-path); export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT"; npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi - turbo run build-native -- --release --target aarch64-apple-darwin + turbo run build-native-release -- --target aarch64-apple-darwin strip -x packages/next-swc/native/next-swc.*.node - host: ubuntu-latest target: 'aarch64-unknown-linux-gnu' @@ -1229,47 +1396,8 @@ jobs: rustup target add aarch64-unknown-linux-gnu && npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi && export CC_aarch64_unknown_linux_gnu=/usr/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc && - turbo run build-native -- --release --target aarch64-unknown-linux-gnu && + turbo run build-native-release -- --target aarch64-unknown-linux-gnu && llvm-strip -x packages/next-swc/native/next-swc.*.node - - host: ubuntu-latest - target: 'armv7-unknown-linux-gnueabihf' - setup: | - sudo apt-get update - sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y - build: | - npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi - turbo run build-native-no-plugin -- --release --target armv7-unknown-linux-gnueabihf - arm-linux-gnueabihf-strip packages/next-swc/native/next-swc.*.node - - host: ubuntu-latest - target: aarch64-linux-android - build: | - export CLANG_VERSION=`ls ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang | sed 's/ *$//g'` - export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" - export CC="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" - export CXX="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" - export AR="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" - export PATH="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" - touch "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" - chmod 777 "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" - echo "INPUT(-lunwind)" > "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" - npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi - turbo run build-native -- --release --target aarch64-linux-android - ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip packages/next-swc/native/next-swc.*.node - - host: ubuntu-latest - target: armv7-linux-androideabi - build: | - export CLANG_VERSION=`ls ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang | sed 's/ *$//g'` - export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" - export CC="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" - export CXX="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++" - export AR="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" - export PATH="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" - touch "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/arm/libgcc.a" - chmod 777 "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/arm/libgcc.a" - echo "INPUT(-lunwind)" > "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/arm/libgcc.a" - npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" "pnpm@${PNPM_VERSION}" - turbo run build-native-no-plugin -- --release --target armv7-linux-androideabi - ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip packages/next-swc/native/next-swc.*.node - host: ubuntu-latest target: 'aarch64-unknown-linux-musl' docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:stable-2022-10-24-alpine @@ -1281,13 +1409,13 @@ jobs: rustup toolchain install "${RUST_TOOLCHAIN}" && rustup default "${RUST_TOOLCHAIN}" && rustup target add aarch64-unknown-linux-musl && - turbo run build-native -- --release --target aarch64-unknown-linux-musl && + turbo run build-native-release -- --target aarch64-unknown-linux-musl && llvm-strip -x packages/next-swc/native/next-swc.*.node - host: windows-latest target: 'aarch64-pc-windows-msvc' build: | npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" "pnpm@${PNPM_VERSION}" - turbo run build-native-no-plugin-woa -- --release --target aarch64-pc-windows-msvc --cargo-flags=--no-default-features + turbo run build-native-no-plugin-woa-release -- --target aarch64-pc-windows-msvc if: ${{ needs.build.outputs.isRelease == 'true' || (needs.build.outputs.turboToken != 'empty') }} needs: build name: stable - ${{ matrix.settings.target }} - node@16 @@ -1318,7 +1446,7 @@ jobs: uses: actions/setup-node@v3 if: ${{ !matrix.settings.docker }} with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - name: Install @@ -1372,98 +1500,6 @@ jobs: name: next-swc-binaries path: packages/next-swc/native/next-swc.*.node - build-native-freebsd: - if: ${{ needs.build.outputs.isRelease == 'true' || (needs.build.outputs.turboToken != 'empty') }} - needs: build - name: stable - x86_64-unknown-freebsd - node@16 - runs-on: macos-12 - env: - TURBO_TEAM: 'vercel' - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - TURBO_REMOTE_ONLY: 'true' - steps: - - name: tune mac network - run: sudo sysctl -w net.link.generic.system.hwcksum_tx=0 && sudo sysctl -w net.link.generic.system.hwcksum_rx=0 - - uses: actions/checkout@v3 - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: 16 - check-latest: true - - - run: npm i -g turbo@${{ env.TURBO_VERSION }} pnpm@${PNPM_VERSION} - - - name: Delete useless files - run: | - rm -rf bench - rm -rf docs - rm -rf errors - rm -rf examples - rm -rf test - - - run: node scripts/normalize-version-bump.js - - # attempt pulling existing turbo cache, this must be done - # outside of the freeBSD vm as there isn't a turbo build - # for freeBSD currently - - run: node ./scripts/pull-freebsd-cache.js - - - name: check build exists - run: if [ -f packages/next-swc/native/next-swc.freebsd-x64.node ]; then echo "BUILD_EXISTS=yes" >> $GITHUB_OUTPUT; else echo "BUILD_EXISTS=no" >> $GITHUB_OUTPUT; fi - id: build-exists - - - run: echo "${{steps.build-exists.outputs.BUILD_EXISTS}}" - - - name: Build - id: build - uses: vmactions/freebsd-vm@v0 - if: ${{ steps.build-exists.outputs.BUILD_EXISTS == 'no' }} - env: - DEBUG: napi:* - RUSTUP_HOME: /usr/local/rustup - CARGO_HOME: /usr/local/cargo - RUSTUP_IO_THREADS: 1 - # Disable LTO, or the lld may crash with OOM - CARGO_PROFILE_RELEASE_LTO: false - with: - envs: DEBUG RUSTUP_HOME CARGO_HOME RUSTUP_IO_THREADS CARGO_PROFILE_RELEASE_LTO NAPI_CLI_VERSION RUST_TOOLCHAIN PNPM_VERSION VM_RELEASE - usesh: true - mem: 6000 - prepare: | - pkg install -y -f curl node libnghttp2 - curl -qL https://www.npmjs.com/install.sh | sh - npm i -g pnpm@${PNPM_VERSION} "@napi-rs/cli@${NAPI_CLI_VERSION}" - curl https://sh.rustup.rs -sSf --output rustup.sh - sh rustup.sh -y --profile minimal --default-toolchain stable - export PATH="/usr/local/cargo/bin:$PATH" - echo "~~~~ rustc --version ~~~~" - rustc --version - echo "~~~~ node -v ~~~~" - node -v - run: | - export PATH="/usr/local/cargo/bin:$PATH" - pwd - ls -lah - whoami - env - freebsd-version - GITHUB_EVENT_PATH='' pnpm --filter=@next/swc run build-native-no-plugin --platform --release --target x86_64-unknown-freebsd - rm -rf node_modules - rm -rf packages/next-swc/target - - - name: cache build - if: ${{ steps.build-exists.outputs.BUILD_EXISTS == 'no' }} - run: pnpm turbo run --force cache-build-native -- --platform --release --target x86_64-unknown-freebsd - - - name: Upload artifact - if: ${{ needs.build.outputs.isRelease == 'true' }} - uses: actions/upload-artifact@v3 - with: - name: next-swc-binaries - path: packages/next-swc/native/next-swc.*.node - if-no-files-found: error - build-wasm: needs: build if: ${{ needs.build.outputs.isRelease == 'true' || (needs.build.outputs.turboToken != 'empty') }} @@ -1481,7 +1517,7 @@ jobs: - name: Setup node uses: actions/setup-node@v3 with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - name: Install Rust @@ -1529,7 +1565,7 @@ jobs: if: ${{needs.build.outputs.docsChange == 'nope'}} uses: actions/setup-node@v3 with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - run: npm i -g turbo@${{ env.TURBO_VERSION }} pnpm@${PNPM_VERSION} @@ -1602,7 +1638,7 @@ jobs: uses: actions/setup-node@v3 if: ${{needs.build.outputs.docsChange == 'nope'}} with: - node-version: 16 + node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true - uses: actions/cache@v3 diff --git a/.github/workflows/issue_labeler.yml b/.github/workflows/issue_labeler.yml index b6a1fff60064b..4c0c31427c717 100644 --- a/.github/workflows/issue_labeler.yml +++ b/.github/workflows/issue_labeler.yml @@ -13,9 +13,11 @@ jobs: name: Triage runs-on: ubuntu-latest steps: - - uses: github/issue-labeler@v3.0 + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 with: - repo-token: '${{ secrets.GITHUB_TOKEN }}' - configuration-path: '.github/issue-labeler.yml' - enable-versioned-regex: 0 - sync-labels: 0 + node-version: 18 + - name: 'Run issue labeler' + run: node ./.github/actions/issue-labeler/lib + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pull_request_stats.yml b/.github/workflows/pull_request_stats.yml index 9efbddd1bdd13..e31cb5fd4b73e 100644 --- a/.github/workflows/pull_request_stats.yml +++ b/.github/workflows/pull_request_stats.yml @@ -7,7 +7,7 @@ name: Generate Pull Request Stats env: NAPI_CLI_VERSION: 2.14.7 TURBO_VERSION: 1.6.3 - RUST_TOOLCHAIN: nightly-2022-11-04 + RUST_TOOLCHAIN: nightly-2023-03-09 PNPM_VERSION: 7.24.3 jobs: diff --git a/.github/workflows/test_examples.yml b/.github/workflows/test_examples.yml new file mode 100644 index 0000000000000..b128f5a46db33 --- /dev/null +++ b/.github/workflows/test_examples.yml @@ -0,0 +1,52 @@ +# This file duplicates bunch of things from build_test_deploy + +on: + workflow_dispatch: + inputs: + is_dispatched: + description: 'Leave this option enabled' + required: true + default: true + type: boolean + schedule: + - cron: '0 */4 * * *' + +name: Test examples + +env: + PNPM_VERSION: 7.24.3 + +jobs: + testExamples: + # Don't execute using cron on forks + if: (github.repository == 'vercel/next.js') || (inputs.is_dispatched == true) + name: Test Examples + runs-on: ubuntu-latest + timeout-minutes: 120 + env: + NEXT_TELEMETRY_DISABLED: 1 + strategy: + fail-fast: false + matrix: + node: [16, 18] + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 25 + # https://github.com/actions/virtual-environments/issues/1187 + - name: tune linux network + run: sudo ethtool -K eth0 tx off rx off + + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 16 + check-latest: true + + - run: npm i -g pnpm@${PNPM_VERSION} + + - run: pnpm install + - run: pnpm build + + - run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-focal /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start xvfb-run node run-tests.js --type examples >> /proc/1/fd/1" + name: Run test/examples diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml new file mode 100644 index 0000000000000..db2d63a9ac242 --- /dev/null +++ b/.github/workflows/trigger_release.yml @@ -0,0 +1,81 @@ +on: + workflow_dispatch: + inputs: + releaseType: + description: stable or canary? + required: true + type: choice + options: + - canary + - stable + + semverType: + description: semver type? + type: choice + options: + - patch + - minor + - major + + secrets: + RELEASE_BOT_TOKEN: + required: true + +name: Trigger Release + +env: + NAPI_CLI_VERSION: 2.14.7 + TURBO_VERSION: 1.6.3 + RUST_TOOLCHAIN: nightly-2023-03-09 + PNPM_VERSION: 7.24.3 + NODE_MAINTENANCE_VERSION: 16 + NODE_LTS_VERSION: 18 + +jobs: + start: + runs-on: ubuntu-latest + env: + NEXT_TELEMETRY_DISABLED: 1 + # we build a dev binary for use in CI so skip downloading + # canary next-swc binaries in the monorepo + NEXT_SKIP_NATIVE_POSTINSTALL: 1 + + environment: release-${{ github.event.inputs.releaseType }} + steps: + - name: Setup node + uses: actions/setup-node@v3 + if: ${{ steps.docs-change.outputs.docsChange == 'nope' }} + with: + node-version: 18 + check-latest: true + + - run: git clone https://ijjk:${{ secrets.START_RELEASE_TOKEN }}@github.com/vercel/next.js.git --depth=25 . + + - run: git describe || 'echo failed to get tag' + + # https://github.com/actions/virtual-environments/issues/1187 + - name: tune linux network + run: sudo ethtool -K eth0 tx off rx off + + - run: npm i -g pnpm@${PNPM_VERSION} + + - id: get-store-path + run: echo STORE_PATH=$(pnpm store path) >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + timeout-minutes: 5 + id: cache-pnpm-store + with: + path: ${{ steps.get-store-path.outputs.STORE_PATH }} + key: pnpm-store-${{ hashFiles('pnpm-lock.yaml') }} + restore-keys: | + pnpm-store- + pnpm-store-${{ hashFiles('pnpm-lock.yaml') }} + + - run: pnpm install + + - run: pnpm run build + + - run: node ./scripts/start-release.js --release-type ${{ github.event.inputs.releaseType }} --semver-type ${{ github.event.inputs.semverType }} + env: + RELEASE_BOT_TOKEN: ${{ secrets.RELEASE_BOT_TOKEN }} diff --git a/.gitignore b/.gitignore index 68e8a13768228..59c5d02415266 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ dist .next target packages/next/wasm/@next -packages/*/packed-*.tgz # dependencies node_modules diff --git a/.npmrc b/.npmrc index 7e6ce68381fb2..5626f81fde083 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,4 @@ +provenance = true save-exact = true tag-version-prefix="" strict-peer-dependencies = false diff --git a/.prettierignore b/.prettierignore index ca921842afb8b..edcab939ce4c2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,29 +1,40 @@ -node_modules -**/.next/** -**/_next/** -**/dist/** +# Build artifacts +.next/ +.turbo/ +_next/ +__tmp__/ +dist/ +node_modules/ +target/ +compiled/ + +lerna.json +test-timings.json +pnpm-lock.yaml + packages/next/src/bundles/webpack/packages/*.runtime.js packages/next/src/bundles/webpack/packages/lazy-compilation-*.js -packages/next/src/compiled/** -packages/react-refresh-utils/**/*.js -packages/react-refresh-utils/**/*.d.ts -packages/react-dev-overlay/lib/** -**/__tmp__/** -lerna.json + .github/actions/next-stats-action/.work .github/actions/issue-validator/index.mjs -packages/next-swc/crates/**/* -packages/next-swc/target/**/* +.github/actions/issue-labeler/lib/index.js + +packages/next-swc/crates/**/tests/**/output* +packages/next-swc/crates/core/tests/loader/issue-32553/input.js +packages/next-swc/crates/next-dev-tests/tests/integration/turbopack/basic/error/input/broken.js packages/next-swc/native/**/* -packages/next-codemod/transforms/__testfixtures__/**/* -packages/next-codemod/transforms/__tests__/**/* + +packages/next-codemod/transforms/__testfixtures__/** +packages/next-codemod/transforms/__tests__/** packages/next-codemod/**/*.js packages/next-codemod/**/*.d.ts + packages/next-env/**/*.d.ts -test-timings.json + test/**/out/** test/development/basic/hmr/components/parse-error.js + bench/nested-deps/pages/**/* bench/nested-deps/components/**/* -pnpm-lock.yaml + **/convex/_generated/** diff --git a/.rustfmt.toml b/.rustfmt.toml new file mode 100644 index 0000000000000..28ba342128afe --- /dev/null +++ b/.rustfmt.toml @@ -0,0 +1,11 @@ +max_width = 100 + +tab_spaces = 4 +hard_tabs = false + +format_strings = true +use_field_init_shorthand = true +wrap_comments = true + +imports_granularity = "Crate" +group_imports = "StdExternalCrate" diff --git a/.vscode/settings.json b/.vscode/settings.json index c98c9387e7de9..2de2ef61939c7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -57,5 +57,30 @@ "explorer.fileNesting.patterns": { "*.ts": "$(capture).test.ts, $(capture).test.tsx", "*.tsx": "$(capture).test.ts, $(capture).test.tsx" - } + }, + // Compile rust-analyzer in a separate directory to avoid conflicts with the main project. + "rust-analyzer.checkOnSave.extraEnv": { + "CARGO_TARGET_DIR": "target/rust-analyzer" + }, + "rust-analyzer.server.extraEnv": { + "CARGO_TARGET_DIR": "target/rust-analyzer", + "RUST_BACKTRACE": "0" + }, + "rust-analyzer.cargo.extraEnv": { + "CARGO_TARGET_DIR": "target/rust_analyzer" + }, + "cSpell.words": [ + "Entrypoints", + "napi", + "nextjs", + "opentelemetry", + "Threadsafe", + "zipkin" + ], + "grammarly.selectors": [ + { + "language": "markdown", + "scheme": "file" + } + ] } diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000000000..0ef14065172e7 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,8728 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli 0.27.2", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "serde", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allsorts" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e926a9819dcf2211da0c19f5ca06a8f5c883e3bdb5ccc51afead3a7d995f023" +dependencies = [ + "bitflags 1.3.2", + "bitreader", + "brotli-decompressor", + "byteorder", + "encoding_rs", + "flate2", + "glyph-names", + "itertools", + "lazy_static", + "libc", + "log", + "num-traits", + "ouroboros", + "pathfinder_geometry", + "rustc-hash", + "tinyvec", + "ucd-trie", + "unicode-canonical-combining-class", + "unicode-general-category", + "unicode-joining-type", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "any_ascii" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70033777eb8b5124a81a1889416543dddef2de240019b674c81285a2635a7e1e" + +[[package]] +name = "anyhow" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +dependencies = [ + "backtrace", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "assert-json-diff" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "ast_node" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f7fd7740c5752c16281a1c1f9442b1e69ba41738acde85dc604aaf3ce41890" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "async-channel" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-compression" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +dependencies = [ + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-executor" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock", + "autocfg", + "cfg-if 1.0.0", + "concurrent-queue", + "futures-lite", + "log", + "parking", + "polling", + "rustix 0.37.13", + "slab", + "socket2", + "waker-fn", +] + +[[package]] +name = "async-lock" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-object-pool" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeb901c30ebc2fc4ab46395bbfbdba9542c16559d853645d75190c3056caf3bc" +dependencies = [ + "async-std", +] + +[[package]] +name = "async-process" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4" +dependencies = [ + "async-io", + "async-lock", + "autocfg", + "blocking", + "cfg-if 1.0.0", + "event-listener", + "futures-lite", + "libc", + "signal-hook", + "windows-sys 0.42.0", +] + +[[package]] +name = "async-recursion" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-channel", + "async-global-executor", + "async-io", + "async-lock", + "async-process", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-stream" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad445822218ce64be7a341abfb0b1ea43b5c23aa83902542a4542e78309d8e5e" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4655ae1a7b0cdf149156f780c5bf3f1352bc53cbd9e0a361a7ef7b22947e965" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "async-trait" +version = "0.1.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "async-tungstenite" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b71b31561643aa8e7df3effe284fa83ab1a840e52294c5f4bd7bfd8b2becbb" +dependencies = [ + "futures-io", + "futures-util", + "log", + "pin-project-lite", + "tokio", + "tungstenite 0.17.3", +] + +[[package]] +name = "atomic-polyfill" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" +dependencies = [ + "critical-section", +] + +[[package]] +name = "atomic-waker" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "auto-hash-map" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "serde", +] + +[[package]] +name = "auto_impl" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f8ccfd9221ee7d1f3d4b33e1f8319b3a81ed8f61f2ea40b37b859794b4491" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2f958c80c248b34b9a877a643811be8dbca03ca5ba827f2b63baf3a81e5fc4e" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide 0.6.2", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base16" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + +[[package]] +name = "better_scoped_tls" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73e8ecdec39e98aa3b19e8cd0b8ed8f77ccb86a6b0b2dc7cd86d105438a2123" +dependencies = [ + "scoped-tls", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "binding_macros" +version = "0.49.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7148cb5385a7aba0e7b54d188b91d452a5a2c9f51abb982df2c7194b737005c" +dependencies = [ + "anyhow", + "console_error_panic_hook", + "js-sys", + "once_cell", + "serde", + "serde-wasm-bindgen", + "swc", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms", + "swc_ecma_visit", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813" + +[[package]] +name = "bitreader" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d84ea71c85d1fe98fe67a9b9988b1695bc24c0b0d3bfb18d4c510f44b4b09941" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "blake3" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if 1.0.0", + "constant_time_eq", + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", +] + +[[package]] +name = "brotli-decompressor" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "browserslist-rs" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef956561c9a03c35af46714efd0c135e21768a2a012f900ca8a59b28e75d0cd1" +dependencies = [ + "ahash", + "anyhow", + "chrono", + "either", + "itertools", + "js-sys", + "nom", + "once_cell", + "quote", + "serde", + "serde-wasm-bindgen", + "serde_json", + "string_cache", + "string_cache_codegen", + "thiserror", + "wasm-bindgen", +] + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "bytecheck" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13fe11640a23eb24562225322cd3e452b93a3d4091d62fab69c70542fcd17d1f" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-lock" +version = "8.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031718ddb8f78aa5def78a09e90defe30151d1f6c672f937af4dd916429ed996" +dependencies = [ + "semver 1.0.17", + "serde", + "toml", + "url", +] + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "castaway" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chromiumoxide" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5506e432f602b1747e8a0d60ac6607c6977af4ee9720237764170305323e62" +dependencies = [ + "async-tungstenite", + "base64 0.13.1", + "cfg-if 1.0.0", + "chromiumoxide_cdp", + "chromiumoxide_types", + "fnv", + "futures", + "futures-timer", + "pin-project-lite", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "url", + "which", + "winreg", +] + +[[package]] +name = "chromiumoxide_cdp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b6988af5c6bbf097999e7db879729dd7b27a62010c482d4922fddeb4f220d4" +dependencies = [ + "chromiumoxide_pdl", + "chromiumoxide_types", + "serde", + "serde_json", +] + +[[package]] +name = "chromiumoxide_pdl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cdf6513e24d260548345a5ef13a04110f5915b7764c274933e10f9363a43e3b" +dependencies = [ + "chromiumoxide_types", + "either", + "heck 0.4.1", + "once_cell", + "proc-macro2", + "quote", + "regex", + "serde", + "serde_json", +] + +[[package]] +name = "chromiumoxide_types" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1af9c183b5aac7f09639cc7b4ddde8a8551850d2c9bf36530830cb10e28e676f" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "chrono" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "serde", + "time 0.1.45", + "wasm-bindgen", + "winapi 0.3.9", +] + +[[package]] +name = "ciborium" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" + +[[package]] +name = "ciborium-ll" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "3.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +dependencies = [ + "bitflags 1.3.2", + "clap_lex 0.2.4", + "indexmap", + "textwrap 0.16.0", +] + +[[package]] +name = "clap" +version = "4.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42dfd32784433290c51d92c438bb72ea5063797fc3cc9a21a8c4346bebbb2098" +dependencies = [ + "bitflags 2.2.1", + "clap_derive", + "clap_lex 0.3.3", + "is-terminal", + "once_cell", + "strsim", + "termcolor", +] + +[[package]] +name = "clap_derive" +version = "4.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fddf67631444a3a3e3e5ac51c36a5e01335302de677bd78759eaa90ab1f46644" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "cloudabi" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console-api" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57ff02e8ad8e06ab9731d5dc72dc23bef9200778eae1a89d555d8c42e5d4a86" +dependencies = [ + "prost", + "prost-types", + "tonic", + "tracing-core", +] + +[[package]] +name = "console-subscriber" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22a3a81dfaf6b66bce5d159eddae701e3a002f194d378cbf7be5f053c281d9be" +dependencies = [ + "console-api", + "crossbeam-channel", + "crossbeam-utils", + "futures", + "hdrhistogram", + "humantime", + "prost-types", + "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen", +] + +[[package]] +name = "const_fn" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" + +[[package]] +name = "const_format" +version = "0.2.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7309d9b4d3d2c0641e018d449232f2e28f1b22933c137f157d3dbc14228b8c0e" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f47bf7270cf70d370f8f98c1abb6d2d4cf60a6845d30e05bfb90c6568650" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" + +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cooked-waker" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147be55d677052dabc6b22252d5dd0fd4c29c8c27aa4f2fbef0f94aa003b406f" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "corosensei" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9847f90f32a50b0dcbd68bc23ff242798b13080b97b0569f6ed96a45ce4cf2cd" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "libc", + "scopeguard", + "windows-sys 0.33.0", +] + +[[package]] +name = "cpufeatures" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +dependencies = [ + "libc", +] + +[[package]] +name = "cranelift-bforest" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2ab4512dfd3a6f4be184403a195f76e81a8a9f9e6c898e19d2dc3ce20e0115" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98b022ed2a5913a38839dfbafe6cf135342661293b08049843362df4301261dc" +dependencies = [ + "arrayvec", + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-egraph", + "cranelift-entity", + "cranelift-isle", + "gimli 0.26.2", + "log", + "regalloc2", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "639307b45434ad112a98f8300c0f0ab085cbefcd767efcdef9ef19d4c0756e74" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "278e52e29c53fcf32431ef08406c295699a70306d05a0715c5b1bf50e33a9ab7" + +[[package]] +name = "cranelift-egraph" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624b54323b06e675293939311943ba82d323bb340468ce1889be5da7932c8d73" +dependencies = [ + "cranelift-entity", + "fxhash", + "hashbrown", + "indexmap", + "log", + "smallvec", +] + +[[package]] +name = "cranelift-entity" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a59bcbca89c3f1b70b93ab3cbba5e5e0cbf3e63dadb23c7525cb142e21a9d4c" + +[[package]] +name = "cranelift-frontend" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d70abacb8cfef3dc8ff7e8836e9c1d70f7967dfdac824a4cd5e30223415aca6" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "393bc73c451830ff8dbb3a07f61843d6cb41a084f9996319917c0b291ed785bb" + +[[package]] +name = "crc" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "criterion" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +dependencies = [ + "anes", + "atty", + "cast", + "ciborium", + "clap 3.2.23", + "criterion-plot", + "futures", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "tokio", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "critical-section" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset 0.8.0", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossterm" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio 0.8.6", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi 0.3.9", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctor" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ctor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4056f63fce3b82d852c3da92b08ea59959890813a7f4ce9c0ff85b10cf301b" +dependencies = [ + "quote", + "syn 2.0.15", +] + +[[package]] +name = "curl" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2", + "winapi 0.3.9", +] + +[[package]] +name = "curl-sys" +version = "0.4.60+curl-7.88.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "717abe2cb465a5da6ce06617388a3980c9a2844196734bec8ccb8e575250f13f" +dependencies = [ + "cc", + "libc", + "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi 0.3.9", +] + +[[package]] +name = "cxx" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.15", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dashmap" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +dependencies = [ + "cfg-if 1.0.0", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core 0.9.7", +] + +[[package]] +name = "data-encoding" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dhat" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2aaf837aaf456f6706cb46386ba8dffd4013a757e36f4ea05c20dd46b209a3" +dependencies = [ + "backtrace", + "lazy_static", + "mintex", + "parking_lot", + "rustc-hash", + "serde", + "serde_json", + "thousands", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "difference" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi 0.3.9", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "dunce" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" + +[[package]] +name = "easy-error" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cc9717c61d2908f50d16ebb5677c7e82ea2bdf7cb52f66b30fe079f3212e16" + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum-iterator" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6" +dependencies = [ + "enum-iterator-derive 0.7.0", +] + +[[package]] +name = "enum-iterator" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706d9e7cf1c7664859d79cd524e4e53ea2b67ea03c98cc2870c5e539695d597e" +dependencies = [ + "enum-iterator-derive 1.2.0", +] + +[[package]] +name = "enum-iterator-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355f93763ef7b0ae1c43c4d8eccc9d5848d84ad1a1d8ce61c421d1ac85a19d05" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enumset" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19be8061a06ab6f3a6cf21106c873578bf01bd42ad15e0311a9c76161cb1c753" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03e7b551eba279bf0fa88b83a46330168c1560a52a94f5126f892f0b364ab3e0" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "erased-serde" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2b0c2380453a92ea8b6c8e5f64ecaafccddde8ceab55ff7a8ac1029f894569" +dependencies = [ + "serde", +] + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fdeflate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "filetime" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.16", + "windows-sys 0.48.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +dependencies = [ + "crc32fast", + "miniz_oxide 0.6.2", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "from_variant" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d449976075322384507443937df2f1d5577afbf4282f12a5a66ef29fa3e6307" +dependencies = [ + "pmutil", + "proc-macro2", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "fsevent" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" +dependencies = [ + "bitflags 1.3.2", + "fsevent-sys", +] + +[[package]] +name = "fsevent-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" +dependencies = [ + "libc", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags 1.3.2", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "futures-retry" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde5a672a61f96552aa5ed9fd9c81c3fbdae4be9b1e205d6eaf17c83705adc0f" +dependencies = [ + "futures", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getset" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "glyph-names" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3531d702d6c1a3ba92a5fb55a404c7b8c476c8e7ca249951077afcbe4bc807f" + +[[package]] +name = "h2" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "handlebars" +version = "4.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "035ef95d03713f2c347a72547b7cd38cbc9af7cd51e6099fb62d586d4a6dee3a" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hdrhistogram" +version = "7.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" +dependencies = [ + "base64 0.13.1", + "byteorder", + "flate2", + "nom", + "num-traits", +] + +[[package]] +name = "heapless" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version 0.4.0", + "spin 0.9.8", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi 0.3.9", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "httpmock" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6b56b6265f15908780cbee987912c1e98dbca675361f748291605a8a3a1df09" +dependencies = [ + "assert-json-diff", + "async-object-pool", + "async-trait", + "base64 0.13.1", + "clap 4.1.11", + "crossbeam-utils", + "env_logger", + "form_urlencoded", + "futures-util", + "hyper", + "isahc", + "lazy_static", + "levenshtein", + "log", + "regex", + "serde", + "serde_json", + "serde_regex", + "serde_yaml 0.9.19", + "similar", + "tokio", + "url", +] + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +dependencies = [ + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-tungstenite" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "880b8b1c98a5ec2a505c7c90db6d3f6f1f480af5655d9c5b55facc9382a5a5b5" +dependencies = [ + "hyper", + "pin-project", + "tokio", + "tokio-tungstenite", + "tungstenite 0.18.0", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] +name = "id-arena" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + +[[package]] +name = "image" +version = "0.24.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "jpeg-decoder", + "num-rational", + "num-traits", + "png", +] + +[[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", + "rayon", + "serde", +] + +[[package]] +name = "indoc" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f2cb48b81b1dc9f39676bf99f5499babfec7cd8fe14307f7b3d747208fb5690" + +[[package]] +name = "inotify" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4816c66d2c8ae673df83366c18341538f234a26d65a9ecea5c348b453ac1d02f" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" + +[[package]] +name = "is-macro" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7d079e129b77477a49c5c4f1cfe9ce6c2c909ef52520693e8e811a714c7b20" +dependencies = [ + "Inflector", + "pmutil", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "is-terminal" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" +dependencies = [ + "hermit-abi 0.3.1", + "io-lifetimes", + "rustix 0.36.11", + "windows-sys 0.45.0", +] + +[[package]] +name = "is_ci" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" + +[[package]] +name = "isahc" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9" +dependencies = [ + "async-channel", + "castaway", + "crossbeam-utils", + "curl", + "curl-sys", + "encoding_rs", + "event-listener", + "futures-lite", + "http", + "log", + "mime", + "once_cell", + "polling", + "slab", + "sluice", + "tracing", + "tracing-futures", + "url", + "waker-fn", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if 1.0.0", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd" + +[[package]] +name = "jsonc-parser" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1853e40333206f9a685358046d13ab200169e3ee573019bddf0ede0dc29307" +dependencies = [ + "serde_json", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "leb128" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + +[[package]] +name = "levenshtein" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" + +[[package]] +name = "lexical" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" +dependencies = [ + "lexical-core", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-sort" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c09e4591611e231daf4d4c685a66cb0410cc1e502027a20ae55f2bb9e997207a" +dependencies = [ + "any_ascii", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "libmimalloc-sys" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8c7cbf8b89019683667e347572e6d55a7df7ea36b0c4ce69961b0cde67b174" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "libnghttp2-sys" +version = "0.1.7+1.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linked_hash_set" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + +[[package]] +name = "linux-raw-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b085a4f2cde5781fc4b1717f2e86c62f5cda49de7ba99a7c2eae02b61c9064c" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", + "value-bag", +] + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markdown" +version = "1.0.0-alpha.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de49c677e95e00eaa74c42a0b07ea55e1e0b1ebca5b2cbc7657f288cd714eb" +dependencies = [ + "unicode-id", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchit" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" + +[[package]] +name = "md4" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da5ac363534dce5fabf69949225e174fbf111a498bf0ff794c8ea1fba9f3dda" +dependencies = [ + "digest", +] + +[[package]] +name = "mdxjs" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9bef082151ac4aba3884306e47fd2c1afcc2e208a9cb9a67c4ecfb96bb5d0c" +dependencies = [ + "markdown", + "serde", + "swc_core", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miette" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c90329e44f9208b55f45711f9558cec15d7ef8295cc65ecd6d4188ae8edc58c" +dependencies = [ + "atty", + "backtrace", + "miette-derive", + "once_cell", + "owo-colors", + "supports-color", + "supports-hyperlinks", + "supports-unicode", + "terminal_size", + "textwrap 0.15.2", + "thiserror", + "unicode-width", +] + +[[package]] +name = "miette-derive" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b5bc45b761bcf1b5e6e6c4128cd93b84c218721a8d9b894aa0aff4ed180174c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "mimalloc" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dcb174b18635f7561a0c6c9fc2ce57218ac7523cf72c50af80e2d79ab8f3ba1" +dependencies = [ + "libmimalloc-sys", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "mintex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7c5ba1c3b5a23418d7bbf98c71c3d4946a0125002129231da8d6b723d559cb" +dependencies = [ + "once_cell", + "sys-info", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.45.0", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log", + "mio 0.6.23", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "modularize_imports" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8907a5e244f284ed9435687cfdfe0446a6ddeabc3948c26323ecd3389958d26" +dependencies = [ + "convert_case 0.5.0", + "handlebars", + "once_cell", + "regex", + "serde", + "swc_core", +] + +[[package]] +name = "mopa" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a785740271256c230f57462d3b83e52f998433a7062fc18f96d5999474a9f915" + +[[package]] +name = "more-asserts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + +[[package]] +name = "napi" +version = "2.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b29acdc6cc5c918c3eabd51d241b1c6dfa8914f3552fcfd76e1d7536934581" +dependencies = [ + "anyhow", + "bitflags 2.2.1", + "ctor 0.2.0", + "napi-derive", + "napi-sys", + "once_cell", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "napi-build" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a73d9ef23e8dc2ebbffb6a6ae2ef467c0f18ac10711e4cc59c5485d41df0e" + +[[package]] +name = "napi-derive" +version = "2.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2ac63101a19228b0881694cac07468d642fd10e4f943a9c9feebeebf1a4787" +dependencies = [ + "convert_case 0.6.0", + "napi-derive-backend", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "napi-derive-backend" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e32b5bc4d803e40b783b0aa3fe488eac8711cfaa4c5c9915293dfd3d0b99925" +dependencies = [ + "convert_case 0.6.0", + "once_cell", + "proc-macro2", + "quote", + "regex", + "semver 1.0.17", + "syn 1.0.109", +] + +[[package]] +name = "napi-sys" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "166b5ef52a3ab5575047a9fe8d4a030cdd0f63c96f071cd6907674453b07bae3" +dependencies = [ + "libloading", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "net2" +version = "0.2.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d0df99cfcd2530b2e694f6e17e7f37b8e26bb23983ac530c0c97408837c631" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "next-build" +version = "0.1.0" +dependencies = [ + "anyhow", + "next-core", + "turbopack-binding", + "vergen", +] + +[[package]] +name = "next-core" +version = "0.1.0" +dependencies = [ + "allsorts", + "anyhow", + "async-recursion", + "async-trait", + "futures", + "indexmap", + "indoc", + "lazy_static", + "mime", + "next-transform-dynamic", + "next-transform-font", + "next-transform-strip-page-exports", + "once_cell", + "qstring", + "regex", + "serde", + "serde_json", + "swc_core", + "turbo-tasks", + "turbo-tasks-fs", + "turbopack-binding", +] + +[[package]] +name = "next-dev" +version = "0.1.0" +dependencies = [ + "anyhow", + "chromiumoxide", + "clap 4.1.11", + "console-subscriber", + "criterion", + "dunce", + "futures", + "indexmap", + "mime", + "next-core", + "nix", + "once_cell", + "owo-colors", + "parking_lot", + "portpicker", + "rand", + "regex", + "serde", + "serde_json", + "tempfile", + "tokio", + "tungstenite 0.17.3", + "turbo-tasks", + "turbopack-binding", + "url", + "vergen", + "webbrowser", +] + +[[package]] +name = "next-dev-tests" +version = "0.1.0" +dependencies = [ + "anyhow", + "chromiumoxide", + "console-subscriber", + "dunce", + "futures", + "httpmock", + "lazy_static", + "mime", + "next-core", + "next-dev", + "owo-colors", + "parking_lot", + "rand", + "regex", + "serde", + "serde_json", + "testing", + "tokio", + "tungstenite 0.17.3", + "turbo-tasks", + "turbopack-binding", + "url", + "webbrowser", +] + +[[package]] +name = "next-swc" +version = "0.0.0" +dependencies = [ + "chrono", + "easy-error", + "either", + "fxhash", + "hex", + "next-transform-font", + "once_cell", + "pathdiff", + "regex", + "serde", + "serde_json", + "sha1 0.10.5", + "tracing", + "turbopack-binding", + "walkdir", +] + +[[package]] +name = "next-swc-napi" +version = "0.0.0" +dependencies = [ + "anyhow", + "backtrace", + "dhat", + "fxhash", + "napi", + "napi-build", + "napi-derive", + "next-build", + "next-core", + "next-dev", + "next-swc", + "once_cell", + "sentry", + "serde", + "serde_json", + "tracing", + "tracing-chrome", + "tracing-futures", + "tracing-subscriber", + "turbo-tasks", + "turbopack-binding", +] + +[[package]] +name = "next-transform-dynamic" +version = "0.1.0" +dependencies = [ + "pathdiff", + "swc_core", + "testing", +] + +[[package]] +name = "next-transform-font" +version = "0.1.0" +dependencies = [ + "rustc-hash", + "serde", + "serde_json", + "swc_core", +] + +[[package]] +name = "next-transform-strip-page-exports" +version = "0.1.0" +dependencies = [ + "rustc-hash", + "swc_core", + "testing", + "tracing", +] + +[[package]] +name = "nix" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +dependencies = [ + "bitflags 1.3.2", + "cfg-if 1.0.0", + "libc", + "memoffset 0.7.1", + "pin-utils", + "static_assertions", +] + +[[package]] +name = "node-file-trace" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "serde", + "serde_json", + "tokio", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbo-tasks-memory", + "turbopack", + "turbopack-cli-utils", + "turbopack-core", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normpath" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a9da8c9922c35a1033d76f7272dfc2e7ee20392083d75aeea6ced23c6266578" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "notify" +version = "4.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae03c8c853dba7bfd23e571ff0cff7bc9dceb40a4cd684cd1681824183f45257" +dependencies = [ + "bitflags 1.3.2", + "filetime", + "fsevent", + "fsevent-sys", + "inotify", + "libc", + "mio 0.6.23", + "mio-extras", + "walkdir", + "winapi 0.3.9", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi 0.3.9", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "object" +version = "0.30.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "openssl" +version = "0.10.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b277f87dacc05a6b709965d1cbafac4649d6ce9f3ce9ceb88508b5666dfec9" +dependencies = [ + "bitflags 1.3.2", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a95792af3c4e0153c3914df2261bedd30a98476f94dc892b67dfe1d89d433a04" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_str_bytes" +version = "6.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "output_vt100" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.7", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" +dependencies = [ + "cfg-if 0.1.10", + "cloudabi", + "instant", + "libc", + "redox_syscall 0.1.57", + "smallvec", + "winapi 0.3.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "windows-sys 0.45.0", +] + +[[package]] +name = "path-clean" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "pathfinder_geometry" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3" +dependencies = [ + "log", + "pathfinder_simd", +] + +[[package]] +name = "pathfinder_simd" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39fe46acc5503595e5949c17b818714d26fdf9b4920eacf3b2947f0199f4a6ff" +dependencies = [ + "rustc_version 0.3.3", +] + +[[package]] +name = "patricia_tree" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "062a6297f2cd3969a780156ccb288eafb34bb5ed0f3c9a2b4500dbde869d4b86" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pest" +version = "2.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbd939b234e95d72bc393d51788aec68aeeb5d51e748ca08ff3aad58cb722f7" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a81186863f3d0a27340815be8f2078dd8050b14cd71913db9fbda795e5f707d7" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a1ef20bf3193c15ac345acb32e26b3dc3223aff4d77ae4fc5359567683796b" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pest_meta" +version = "2.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3b284b1f13a20dc5ebc90aff59a51b8d7137c221131b52a7260c08cbc1cc80" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros", + "phf_shared", + "proc-macro-hack", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "plotters" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "pmutil" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3894e5d549cccbe44afecf72922f277f603cd4bb0219c8342631ef18fffbe004" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "png" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.7.1", +] + +[[package]] +name = "polling" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if 1.0.0", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.45.0", +] + +[[package]] +name = "portpicker" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +dependencies = [ + "rand", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "preset_env_base" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09a48d8ea8b031bde7755cdf6f87f7123a0cbefc36b0cd09cbb2de726594393" +dependencies = [ + "ahash", + "anyhow", + "browserslist-rs", + "dashmap", + "from_variant", + "once_cell", + "semver 1.0.17", + "serde", + "st-map", + "tracing", +] + +[[package]] +name = "pretty_assertions" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" +dependencies = [ + "ctor 0.1.26", + "diff", + "output_vt100", + "yansi", +] + +[[package]] +name = "priority-queue" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca9c6be70d989d21a136eb86c2d83e4b328447fac4a88dace2143c179c86267" +dependencies = [ + "autocfg", + "indexmap", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48e50df39172a3e7eb17e14642445da64996989bc212b583015435d39a58537" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea9b0f8cbe5e15a8a042d030bd96668db28ecb567ec37d691971ff5731d2b1b" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "379119666929a1afd7a043aa6cf96fa67a6dce9af60c88095a4686dbce4c9c88" +dependencies = [ + "prost", +] + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pulldown-cmark" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +dependencies = [ + "bitflags 1.3.2", + "memchr", + "unicase", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radix_fmt" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce082a9940a7ace2ad4a8b7d0b1eac6aa378895f18be598230c5f2284ac05426" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f851a03551ceefd30132e447f07f96cb7011d6b658374f3aed847333adb5559" + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regalloc2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300d4fbfb40c1c66a78ba3ddd41c1110247cf52f97b87d0f2fc9209bd49b030c" +dependencies = [ + "fxhash", + "log", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac6cf59af1067a3fb53fbe5c88c053764e930f932be1d71d3ffe032cbe147f59" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.0", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6868896879ba532248f33598de5181522d8b3d9d724dfd230911e1a7d4822f5" + +[[package]] +name = "region" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76e189c2369884dce920945e2ddf79b3dff49e071a167dd1817fa9c4c00d512e" +dependencies = [ + "bitflags 1.3.2", + "libc", + "mach", + "winapi 0.3.9", +] + +[[package]] +name = "relative-path" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf2521270932c3c7bed1a59151222bd7643c79310f2916f01925e1e16255698" + +[[package]] +name = "rend" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba30cc2c0cd02af1222ed216ba659cdb2f879dfe3181852fe7c50b1d0005949" +dependencies = [ + "base64 0.21.0", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "rkyv" +version = "0.7.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21499ed91807f07ae081880aabb2ccc0235e9d88011867d984525e9a4c3cfa3e" +dependencies = [ + "bytecheck", + "hashbrown", + "indexmap", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1c672430eb41556291981f45ca900a0239ad007242d1cb4b4167af842db666" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.17", +] + +[[package]] +name = "rustix" +version = "0.36.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +dependencies = [ + "bitflags 1.3.2", + "errno 0.2.8", + "io-lifetimes", + "libc", + "linux-raw-sys 0.1.4", + "windows-sys 0.45.0", +] + +[[package]] +name = "rustix" +version = "0.37.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79bef90eb6d984c72722595b5b1348ab39275a5e5123faca6863bf07d75a4e0" +dependencies = [ + "bitflags 1.3.2", + "errno 0.3.1", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.3", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +dependencies = [ + "base64 0.21.0", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "ryu-js" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6518fc26bced4d53678a22d6e423e9d8716377def84545fe328236e3af070e7f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +dependencies = [ + "windows-sys 0.42.0", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "scratch" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "security-framework" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser 0.10.2", +] + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "sentry" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73642819e7fa63eb264abc818a2f65ac8764afbe4870b5ee25bcecc491be0d4c" +dependencies = [ + "httpdate", + "reqwest", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-panic", + "tokio", +] + +[[package]] +name = "sentry-backtrace" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49bafa55eefc6dbc04c7dac91e8c8ab9e89e9414f3193c105cabd991bbc75134" +dependencies = [ + "backtrace", + "once_cell", + "regex", + "sentry-core", +] + +[[package]] +name = "sentry-contexts" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c63317c4051889e73f0b00ce4024cae3e6a225f2e18a27d2c1522eb9ce2743da" +dependencies = [ + "hostname", + "libc", + "rustc_version 0.4.0", + "sentry-core", + "uname", +] + +[[package]] +name = "sentry-core" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a4591a2d128af73b1b819ab95f143bc6a2fbe48cd23a4c45e1ee32177e66ae6" +dependencies = [ + "once_cell", + "rand", + "sentry-types", + "serde", + "serde_json", +] + +[[package]] +name = "sentry-panic" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "696c74c5882d5a0d5b4a31d0ff3989b04da49be7983b7f52a52c667da5b480bf" +dependencies = [ + "sentry-backtrace", + "sentry-core", +] + +[[package]] +name = "sentry-types" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "823923ae5f54a729159d720aa12181673044ee5c79cbda3be09e56f885e5468f" +dependencies = [ + "debugid", + "getrandom", + "hex", + "serde", + "serde_json", + "thiserror", + "time 0.3.20", + "url", + "uuid", +] + +[[package]] +name = "serde" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_bytes" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "serde_json" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7f05c1d5476066defcdfacce1f52fc3cae3af1d3089727100c02ae92e5abbe0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_qs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c679fa27b429f2bb57fd4710257e643e86c966e716037259f8baa33de594a1b6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331bb8c3bf9b92457ab7abecf07078c13f7d270ba490103e84e8b014490cd0b0" +dependencies = [ + "base64 0.13.1", + "chrono", + "hex", + "indexmap", + "serde", + "serde_json", + "serde_with_macros", + "time 0.3.20", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859011bddcc11f289f07f467cc1fe01c7a941daa4d8f6c40d4d1c92eb6d9319c" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "serde_yaml" +version = "0.9.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82e6c8c047aa50a7328632d067bcae6ef38772a79e28daf32f735e0e4f3dd10" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha-1" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shellexpand" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" +dependencies = [ + "dirs", +] + +[[package]] +name = "signal-hook" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio 0.8.6", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "similar" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slice-group-by" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" + +[[package]] +name = "sluice" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5" +dependencies = [ + "async-channel", + "futures-core", + "futures-io", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "static_assertions", + "version_check", +] + +[[package]] +name = "smawk" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "sourcemap" +version = "6.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed16231c92d0a6f0388f56e0ab2be24ecff1173f8e22f0ea5e074d0525631cb" +dependencies = [ + "data-encoding", + "if_chain", + "rustc_version 0.2.3", + "serde", + "serde_json", + "unicode-id", + "url", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "st-map" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f09d891835f076b0d4a58dd4478fb54d47aa3da1f7a4c6e89ad6c791357ab5ed" +dependencies = [ + "arrayvec", + "static-map-macro", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stacker" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "libc", + "psm", + "winapi 0.3.9", +] + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "static-map-macro" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b862d598fbc9f7085b017890e2e61433f501e7467f2c585323e1aa3c07ef8599" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version 0.2.3", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1 0.6.1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "string_enum" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0090512bdfee4b56d82480d66c0fd8a6f53f0fe0f97e075e949b252acdd482e0" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "styled_components" +version = "0.54.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac87c3150a2b7d834d1469d4b06d05fbe111b6378ccfab98f58f357be062417" +dependencies = [ + "Inflector", + "once_cell", + "regex", + "serde", + "swc_core", + "tracing", +] + +[[package]] +name = "styled_jsx" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88365f6c83fa4bfb4b29a75ca1d353d940f4ac44a535907467ad624bfd90f24d" +dependencies = [ + "easy-error", + "swc_core", + "tracing", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "supports-color" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba6faf2ca7ee42fdd458f4347ae0a9bd6bcc445ad7cb57ad82b383f18870d6f" +dependencies = [ + "atty", + "is_ci", +] + +[[package]] +name = "supports-hyperlinks" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "590b34f7c5f01ecc9d78dba4b3f445f31df750a67621cf31626f3b7441ce6406" +dependencies = [ + "atty", +] + +[[package]] +name = "supports-unicode" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8b945e45b417b125a8ec51f1b7df2f8df7920367700d1f98aedd21e5735f8b2" +dependencies = [ + "atty", +] + +[[package]] +name = "swc" +version = "0.260.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5244c29808af3900e02287da1b5a781d9feca5a332c205932abae074e7d2d40a" +dependencies = [ + "ahash", + "anyhow", + "base64 0.13.1", + "dashmap", + "either", + "indexmap", + "jsonc-parser", + "lru", + "napi", + "napi-derive", + "once_cell", + "parking_lot", + "pathdiff", + "regex", + "rustc-hash", + "serde", + "serde_json", + "sourcemap", + "swc_atoms", + "swc_cached", + "swc_common", + "swc_config", + "swc_ecma_ast", + "swc_ecma_codegen", + "swc_ecma_ext_transforms", + "swc_ecma_lints", + "swc_ecma_loader", + "swc_ecma_minifier", + "swc_ecma_parser", + "swc_ecma_preset_env", + "swc_ecma_transforms", + "swc_ecma_transforms_base", + "swc_ecma_transforms_compat", + "swc_ecma_transforms_optimization", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_error_reporters", + "swc_node_comments", + "swc_plugin_proxy", + "swc_plugin_runner", + "swc_timer", + "swc_visit", + "tracing", + "url", +] + +[[package]] +name = "swc_atoms" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "593c2f3e4cea60ddc4179ed731cabebe7eacec209d9e76a3bbcff4b2b020e3f5" +dependencies = [ + "once_cell", + "rkyv", + "rustc-hash", + "serde", + "string_cache", + "string_cache_codegen", + "triomphe", +] + +[[package]] +name = "swc_bundler" +version = "0.213.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715835a6f035f1bccf40fb1f8afa95c6d76107f5f1d27735b50490b90685699c" +dependencies = [ + "ahash", + "anyhow", + "crc", + "dashmap", + "indexmap", + "is-macro", + "once_cell", + "parking_lot", + "petgraph", + "radix_fmt", + "rayon", + "relative-path", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_codegen", + "swc_ecma_loader", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_optimization", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_fast_graph", + "swc_graph_analyzer", + "tracing", +] + +[[package]] +name = "swc_cached" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9745d42d167cb60aeb1e85d2ee813ca455c3185bf7417f11fd102d745ae2b9e1" +dependencies = [ + "ahash", + "anyhow", + "dashmap", + "once_cell", + "regex", + "serde", +] + +[[package]] +name = "swc_common" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f876f826866e402da364d77aa97448fdf67cb4aeb6a5f1c0de39cacf35aa89a" +dependencies = [ + "ahash", + "anyhow", + "ast_node", + "atty", + "better_scoped_tls", + "cfg-if 1.0.0", + "either", + "from_variant", + "new_debug_unreachable", + "num-bigint", + "once_cell", + "parking_lot", + "rkyv", + "rustc-hash", + "serde", + "siphasher", + "sourcemap", + "string_cache", + "swc_atoms", + "swc_eq_ignore_macros", + "swc_visit", + "termcolor", + "tracing", + "unicode-width", + "url", +] + +[[package]] +name = "swc_config" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89c8fc2c12bb1634c7c32fc3c9b6b963ad8f034cc62c4ecddcf215dc4f6f959d" +dependencies = [ + "indexmap", + "serde", + "serde_json", + "swc_config_macro", +] + +[[package]] +name = "swc_config_macro" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dadb9998d4f5fc36ef558ed5a092579441579ee8c6fcce84a5228cca9df4004" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "swc_core" +version = "0.75.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c604661086151ef0cfe2dff7740cd5fbdd06685d2eb03367024c3990d214b168" +dependencies = [ + "binding_macros", + "swc", + "swc_atoms", + "swc_bundler", + "swc_cached", + "swc_common", + "swc_css_ast", + "swc_css_codegen", + "swc_css_compat", + "swc_css_modules", + "swc_css_parser", + "swc_css_prefixer", + "swc_css_utils", + "swc_css_visit", + "swc_ecma_ast", + "swc_ecma_codegen", + "swc_ecma_loader", + "swc_ecma_minifier", + "swc_ecma_parser", + "swc_ecma_preset_env", + "swc_ecma_quote_macros", + "swc_ecma_transforms_base", + "swc_ecma_transforms_module", + "swc_ecma_transforms_optimization", + "swc_ecma_transforms_proposal", + "swc_ecma_transforms_react", + "swc_ecma_transforms_testing", + "swc_ecma_transforms_typescript", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_nodejs_common", + "swc_plugin_proxy", + "swc_plugin_runner", + "swc_trace_macro", + "testing", + "vergen", +] + +[[package]] +name = "swc_css_ast" +version = "0.137.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fadc4b9192ee616e7cba2c1612ae79a616546e23856ab23edb5db9c43e9612a" +dependencies = [ + "is-macro", + "serde", + "string_enum", + "swc_atoms", + "swc_common", +] + +[[package]] +name = "swc_css_codegen" +version = "0.147.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d27c1d2b7ebf21cc5cfe5e7b3d7e08a038a5aa7fc93ea263aa4bd7dc0641bca" +dependencies = [ + "auto_impl", + "bitflags 2.2.1", + "rustc-hash", + "serde", + "swc_atoms", + "swc_common", + "swc_css_ast", + "swc_css_codegen_macros", + "swc_css_utils", +] + +[[package]] +name = "swc_css_codegen_macros" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c132d9ba562343f7c49d776c4a09b362a4a4104b7cb0a0f7b785986a492e1b" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "swc_css_compat" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8dbb86390644c9c6d230f294d5cf528964d84206a65bd48b08b1875b2ef0d4" +dependencies = [ + "bitflags 2.2.1", + "once_cell", + "serde", + "serde_json", + "swc_atoms", + "swc_common", + "swc_css_ast", + "swc_css_utils", + "swc_css_visit", +] + +[[package]] +name = "swc_css_modules" +version = "0.25.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650f2adbf58150567564846accb31a22278735192e9f40a6dc9e319cfc1ede99" +dependencies = [ + "rustc-hash", + "serde", + "swc_atoms", + "swc_common", + "swc_css_ast", + "swc_css_codegen", + "swc_css_parser", + "swc_css_visit", +] + +[[package]] +name = "swc_css_parser" +version = "0.146.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a14a42f39156a50d34f1e3d351c534b4929b27b7b47135055fa2a9a06649ea7" +dependencies = [ + "bitflags 2.2.1", + "lexical", + "serde", + "swc_atoms", + "swc_common", + "swc_css_ast", +] + +[[package]] +name = "swc_css_prefixer" +version = "0.149.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c12cf20c0e40ea4793ac3d23a04969e9badfc3f9cc478c562f60f1e302fd80f" +dependencies = [ + "once_cell", + "preset_env_base", + "serde", + "serde_json", + "swc_atoms", + "swc_common", + "swc_css_ast", + "swc_css_utils", + "swc_css_visit", +] + +[[package]] +name = "swc_css_utils" +version = "0.134.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6360cbced8a80618320b5d143299bb8c9684c71a46facc01fe648b198bf0200d" +dependencies = [ + "once_cell", + "serde", + "serde_json", + "swc_atoms", + "swc_common", + "swc_css_ast", + "swc_css_visit", +] + +[[package]] +name = "swc_css_visit" +version = "0.136.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e6749283744944ee224fd0199ae218fdc4c3b3d1b51e176ee43caf47ae0d67a" +dependencies = [ + "serde", + "swc_atoms", + "swc_common", + "swc_css_ast", + "swc_visit", +] + +[[package]] +name = "swc_ecma_ast" +version = "0.103.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1087786027e9e938588c0a66d45d1044a5e2285922b0928e023303f03a60900f" +dependencies = [ + "bitflags 2.2.1", + "is-macro", + "num-bigint", + "rkyv", + "scoped-tls", + "serde", + "string_enum", + "swc_atoms", + "swc_common", + "unicode-id", +] + +[[package]] +name = "swc_ecma_codegen" +version = "0.138.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "807e07eda1b7f45971ec9a65c9ac032bf53acd0b02dae4456bbcfef3d47da95c" +dependencies = [ + "memchr", + "num-bigint", + "once_cell", + "rustc-hash", + "serde", + "sourcemap", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_codegen_macros", + "tracing", +] + +[[package]] +name = "swc_ecma_codegen_macros" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ee0caee1018808d94ecd09490cb7affd3d504b19aa11c49238f5fc4b54901" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "swc_ecma_ext_transforms" +version = "0.102.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a2bdc37df46e96aedfbb422fc44f48ca3ee69109e8fe0f130d8454e67dce59" +dependencies = [ + "phf", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_lints" +version = "0.81.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb9588ec5320276cda7f4770dcedf00224014702b7b314c1c27590f74247ad3d" +dependencies = [ + "ahash", + "auto_impl", + "dashmap", + "parking_lot", + "rayon", + "regex", + "serde", + "swc_atoms", + "swc_common", + "swc_config", + "swc_ecma_ast", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_loader" +version = "0.43.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b853be4b7380384dc3bac5564697c1ba30b47eff94b81449567032fa44d3d0c" +dependencies = [ + "ahash", + "anyhow", + "dashmap", + "lru", + "normpath", + "once_cell", + "parking_lot", + "path-clean", + "pathdiff", + "serde", + "serde_json", + "swc_cached", + "swc_common", + "tracing", +] + +[[package]] +name = "swc_ecma_minifier" +version = "0.180.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31075982125fca1d7e023d05aa779f4cb566494fbaba1a0cf5db4ef1a573b4a" +dependencies = [ + "ahash", + "arrayvec", + "indexmap", + "num-bigint", + "num_cpus", + "once_cell", + "parking_lot", + "radix_fmt", + "rayon", + "regex", + "rustc-hash", + "ryu-js", + "serde", + "serde_json", + "swc_atoms", + "swc_cached", + "swc_common", + "swc_config", + "swc_ecma_ast", + "swc_ecma_codegen", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_optimization", + "swc_ecma_usage_analyzer", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_timer", + "tracing", +] + +[[package]] +name = "swc_ecma_parser" +version = "0.133.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fa9f6dab04b0e4d148fab7069ecb896ae6e9a3e3ec94a493d52d1d16a780cda" +dependencies = [ + "either", + "lexical", + "num-bigint", + "serde", + "smallvec", + "smartstring", + "stacker", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "tracing", + "typed-arena", +] + +[[package]] +name = "swc_ecma_preset_env" +version = "0.194.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a377e83fbf99e2fa78126d5d5db2c93e75c0c348e5b06e55460137f32b3640" +dependencies = [ + "ahash", + "anyhow", + "dashmap", + "indexmap", + "once_cell", + "preset_env_base", + "semver 1.0.17", + "serde", + "serde_json", + "st-map", + "string_enum", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_quote_macros" +version = "0.44.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d225ec68bc21334b840d9a0c9f20d26a8fa2854708d549ef8572be54c9b033" +dependencies = [ + "anyhow", + "pmutil", + "proc-macro2", + "quote", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "swc_ecma_testing" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25198f96ef93c4bb4cc8fa13c9b22a018cf2c0c7609ee91f7abc7968ebc2e2df" +dependencies = [ + "anyhow", + "hex", + "sha-1", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms" +version = "0.217.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea5aef62b3ecbc1ea2557c27c500ed9b452abaf13d6142ce8bc553493341086" +dependencies = [ + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_transforms_compat", + "swc_ecma_transforms_module", + "swc_ecma_transforms_optimization", + "swc_ecma_transforms_proposal", + "swc_ecma_transforms_react", + "swc_ecma_transforms_typescript", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_base" +version = "0.126.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b6521512d072b082071a569d1aaad638bab56b9a18c9d88edc436055fe13ca" +dependencies = [ + "better_scoped_tls", + "bitflags 2.2.1", + "indexmap", + "once_cell", + "phf", + "rayon", + "rustc-hash", + "serde", + "smallvec", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_ecma_utils", + "swc_ecma_visit", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms_classes" +version = "0.115.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "959c65d67ba1bbb0f7b70042e0d75e92e7c68df9d98d3e3992ccbdd4e5c4fa2e" +dependencies = [ + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_compat" +version = "0.152.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0a611e9693f61e7e55413665a39b93e2af784acb1a77d4badeaadca64d35ce" +dependencies = [ + "ahash", + "arrayvec", + "indexmap", + "is-macro", + "num-bigint", + "rayon", + "serde", + "smallvec", + "swc_atoms", + "swc_common", + "swc_config", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_transforms_classes", + "swc_ecma_transforms_macros", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_trace_macro", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "984d5ac69b681fc5438f9abf82b0fda34fe04e119bc75f8213b7e01128c7c9a2" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "swc_ecma_transforms_module" +version = "0.169.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5a0fc4624b1b07ca4928e3897888367c65deb1777a163b26c7a2e169160277" +dependencies = [ + "Inflector", + "ahash", + "anyhow", + "bitflags 2.2.1", + "indexmap", + "is-macro", + "path-clean", + "pathdiff", + "regex", + "serde", + "swc_atoms", + "swc_cached", + "swc_common", + "swc_ecma_ast", + "swc_ecma_loader", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_utils", + "swc_ecma_visit", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms_optimization" +version = "0.186.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fe6203e8397ab483fe8f1bd676dce5a6e493b10ad287243cf740a08e3ec315" +dependencies = [ + "ahash", + "dashmap", + "indexmap", + "once_cell", + "petgraph", + "rayon", + "rustc-hash", + "serde_json", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_macros", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_fast_graph", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms_proposal" +version = "0.160.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ed9af008da8b354ed0c27a910532163a3734dfbb5dab0a460ff2ebd6ebd7004" +dependencies = [ + "either", + "rustc-hash", + "serde", + "smallvec", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_transforms_classes", + "swc_ecma_transforms_macros", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_react" +version = "0.172.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d393985bafe0680c03d3d016b4172fcb293499f97e82418d63673a11310029c3" +dependencies = [ + "ahash", + "base64 0.13.1", + "dashmap", + "indexmap", + "once_cell", + "rayon", + "serde", + "sha-1", + "string_enum", + "swc_atoms", + "swc_common", + "swc_config", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_macros", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_testing" +version = "0.129.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3109919ceca5dc1a89721a2d3ed43917f7fc53eeb87433a020a810286b85ba0" +dependencies = [ + "ansi_term", + "anyhow", + "base64 0.13.1", + "hex", + "serde", + "serde_json", + "sha-1", + "sourcemap", + "swc_common", + "swc_ecma_ast", + "swc_ecma_codegen", + "swc_ecma_parser", + "swc_ecma_testing", + "swc_ecma_transforms_base", + "swc_ecma_utils", + "swc_ecma_visit", + "tempfile", + "testing", +] + +[[package]] +name = "swc_ecma_transforms_typescript" +version = "0.176.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70968fd6bafd8511037ecadb3f89bfe97c3e8c4560dd04a5a291679a77eee84a" +dependencies = [ + "serde", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_transforms_react", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_usage_analyzer" +version = "0.12.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5cc3026867838b0ed45d7b341973beac5b1154c66d47963a328f7f373343d03" +dependencies = [ + "ahash", + "indexmap", + "rustc-hash", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_timer", + "tracing", +] + +[[package]] +name = "swc_ecma_utils" +version = "0.116.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "547cce84256af2ce8b9ee44669872dc514c9e1fe737ab1bd517c4bd21038b7d8" +dependencies = [ + "indexmap", + "num_cpus", + "once_cell", + "rayon", + "rustc-hash", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_visit", + "tracing", + "unicode-id", +] + +[[package]] +name = "swc_ecma_visit" +version = "0.89.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4490a5ed042234d72986e1a0c8afb54291fcf82b42af78ea72507b52bcbe13dd" +dependencies = [ + "num-bigint", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_visit", + "tracing", +] + +[[package]] +name = "swc_emotion" +version = "0.30.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06838d609bf7d97d834b06ed2f6c32a593160e9c44977ace88038e249f2e9b43" +dependencies = [ + "base64 0.13.1", + "byteorder", + "fxhash", + "once_cell", + "radix_fmt", + "regex", + "serde", + "sourcemap", + "swc_core", + "tracing", +] + +[[package]] +name = "swc_eq_ignore_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c20468634668c2bbab581947bb8c75c97158d5a6959f4ba33df20983b20b4f6" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "swc_error_reporters" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3afbf2e52ddce38da1ee204252f7b9019a12176ca73aaa0fd0c36ded1ecbec7d" +dependencies = [ + "anyhow", + "miette", + "once_cell", + "parking_lot", + "swc_common", +] + +[[package]] +name = "swc_fast_graph" +version = "0.19.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95683baee47d2cbf10e0bf8ad14d4e8f6160674d9eb96b3ab560aa39fa37ccdc" +dependencies = [ + "indexmap", + "petgraph", + "rustc-hash", + "swc_common", +] + +[[package]] +name = "swc_graph_analyzer" +version = "0.20.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4812745a05bf856948b7ada6f1f1f8d2c4be0afa060844532798165b4c76416e" +dependencies = [ + "ahash", + "auto_impl", + "petgraph", + "swc_fast_graph", + "tracing", +] + +[[package]] +name = "swc_macros_common" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e582c3e3c2269238524923781df5be49e011dbe29cf7683a2215d600a562ea6" +dependencies = [ + "pmutil", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "swc_node_comments" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d3be08cc983291059f7a16a62ff297bdb83c1282cfe876416fd52b3466e791" +dependencies = [ + "ahash", + "dashmap", + "swc_atoms", + "swc_common", +] + +[[package]] +name = "swc_nodejs_common" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c00871ef9d32aad437acced2eeffc96a97c5f2776bb90ad6497968a8d626b04" +dependencies = [ + "anyhow", + "napi", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "swc_plugin_proxy" +version = "0.32.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd5b2880508aedc964f4f52a4debc07c4b48212b45b44522d651c701b1a4d84" +dependencies = [ + "better_scoped_tls", + "rkyv", + "swc_common", + "swc_ecma_ast", + "swc_trace_macro", + "tracing", +] + +[[package]] +name = "swc_plugin_runner" +version = "0.94.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9290518378028a7d0cf1a8ca52f5b0934c44bc0862155b6a52ec1c97a378601b" +dependencies = [ + "anyhow", + "enumset", + "once_cell", + "parking_lot", + "serde", + "serde_json", + "swc_common", + "swc_ecma_ast", + "swc_plugin_proxy", + "tracing", + "wasmer", + "wasmer-cache", + "wasmer-compiler-cranelift", + "wasmer-wasix", +] + +[[package]] +name = "swc_relay" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaa02b6c66a7de1fe196d1787a5378a5fb91c67ec7acccd76052d6ec389b6d16" +dependencies = [ + "once_cell", + "regex", + "serde", + "serde_json", + "swc_common", + "swc_core", + "tracing", +] + +[[package]] +name = "swc_timer" +version = "0.19.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d525672140610b0797da5ee7a3f5bcb0dbf13940c84d63c9f966c0239f26cb7" +dependencies = [ + "tracing", +] + +[[package]] +name = "swc_trace_macro" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4795c8d23e0de62eef9cac0a20ae52429ee2ffc719768e838490f195b7d7267" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "swc_visit" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d5999f23421c8e21a0f2bc53a0b9e8244f3b421de89471561af2fbe40b9cca" +dependencies = [ + "either", + "swc_visit_macros", +] + +[[package]] +name = "swc_visit_macros" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebeed7eb0f545f48ad30f5aab314e5208b735bcea1d1464f26e20f06db904989" +dependencies = [ + "Inflector", + "pmutil", + "proc-macro2", + "quote", + "swc_macros_common", + "syn 1.0.109", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sys-info" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "target-lexicon" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5" + +[[package]] +name = "tempfile" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "redox_syscall 0.3.5", + "rustix 0.37.13", + "windows-sys 0.45.0", +] + +[[package]] +name = "term_size" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "termios" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b" +dependencies = [ + "libc", +] + +[[package]] +name = "testing" +version = "0.33.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e5fcdfc6805d181431333b850f9fde170f654148e29ba97fd8033c7814e665" +dependencies = [ + "ansi_term", + "difference", + "once_cell", + "pretty_assertions", + "regex", + "serde_json", + "swc_common", + "swc_error_reporters", + "testing_macros", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "testing_macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5315a85a7262fe1a8898890b616de62c152dd43cb5974752c0927aaabe48891" +dependencies = [ + "anyhow", + "glob", + "once_cell", + "pmutil", + "proc-macro2", + "quote", + "regex", + "relative-path", + "syn 1.0.109", +] + +[[package]] +name = "textwrap" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "thousands" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros 0.1.1", + "version_check", + "winapi 0.3.9", +] + +[[package]] +name = "time" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros 0.2.8", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +dependencies = [ + "time-core", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn 1.0.109", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +dependencies = [ + "autocfg", + "bytes", + "libc", + "mio 0.8.6", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "tracing", + "windows-sys 0.45.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-stream" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.18.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" + +[[package]] +name = "toml_edit" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.13.1", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tracing-chrome" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb13184244c7cd22758b79e7c993c515ad67a8e730edcb7e05fe7bcabb283c7" +dependencies = [ + "json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "triomphe" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1ee9bd9239c339d714d657fac840c6d2a4f9c45f4f9ec7b0975113458be78db" +dependencies = [ + "serde", + "stable_deref_trait", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "tungstenite" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "http", + "httparse", + "log", + "rand", + "sha-1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "http", + "httparse", + "log", + "rand", + "sha1 0.10.5", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "turbo-tasks" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "auto-hash-map", + "concurrent-queue", + "dashmap", + "erased-serde", + "event-listener", + "futures", + "indexmap", + "mopa", + "nohash-hasher", + "once_cell", + "parking_lot", + "pin-project-lite", + "regex", + "serde", + "serde_json", + "serde_regex", + "stable_deref_trait", + "thiserror", + "tokio", + "turbo-tasks-build", + "turbo-tasks-hash", + "turbo-tasks-macros", +] + +[[package]] +name = "turbo-tasks-build" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "cargo-lock", + "glob", + "syn 1.0.109", + "turbo-tasks-macros-shared", +] + +[[package]] +name = "turbo-tasks-bytes" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "bytes", + "futures", + "serde", + "serde_bytes", + "tokio", + "turbo-tasks", + "turbo-tasks-build", +] + +[[package]] +name = "turbo-tasks-env" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "dotenvy", + "indexmap", + "serde", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", +] + +[[package]] +name = "turbo-tasks-fetch" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "indexmap", + "lazy_static", + "reqwest", + "serde", + "tokio", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack-core", +] + +[[package]] +name = "turbo-tasks-fs" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "auto-hash-map", + "bitflags 1.3.2", + "bytes", + "concurrent-queue", + "dashmap", + "dunce", + "futures", + "futures-retry", + "include_dir", + "indexmap", + "jsonc-parser", + "mime", + "notify", + "parking_lot", + "serde", + "serde_json", + "serde_path_to_error", + "tokio", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-hash", +] + +[[package]] +name = "turbo-tasks-hash" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "base16", + "hex", + "md4", + "turbo-tasks-macros", + "twox-hash", +] + +[[package]] +name = "turbo-tasks-macros" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "convert_case 0.6.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", + "turbo-tasks-macros-shared", +] + +[[package]] +name = "turbo-tasks-macros-shared" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "turbo-tasks-malloc" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "mimalloc", +] + +[[package]] +name = "turbo-tasks-memory" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "auto-hash-map", + "concurrent-queue", + "dashmap", + "nohash-hasher", + "num_cpus", + "once_cell", + "parking_lot", + "priority-queue", + "rustc-hash", + "tokio", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-hash", + "turbo-tasks-malloc", +] + +[[package]] +name = "turbo-tasks-testing" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "auto-hash-map", + "lazy_static", + "tokio", + "turbo-tasks", +] + +[[package]] +name = "turbopack" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "async-recursion", + "futures", + "indexmap", + "lazy_static", + "regex", + "serde", + "serde_json", + "tokio", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack-core", + "turbopack-css", + "turbopack-ecmascript", + "turbopack-ecmascript-plugins", + "turbopack-env", + "turbopack-image", + "turbopack-json", + "turbopack-mdx", + "turbopack-node", + "turbopack-static", +] + +[[package]] +name = "turbopack-bench" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "chromiumoxide", + "criterion", + "dunce", + "futures", + "mime", + "nix", + "once_cell", + "owo-colors", + "parking_lot", + "portpicker", + "rand", + "regex", + "serde", + "serde_json", + "tempfile", + "tokio", + "tungstenite 0.17.3", + "turbo-tasks", + "turbo-tasks-testing", + "turbopack-create-test-app", + "url", + "webbrowser", +] + +[[package]] +name = "turbopack-binding" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "auto-hash-map", + "mdxjs", + "modularize_imports", + "node-file-trace", + "styled_components", + "styled_jsx", + "swc_core", + "swc_emotion", + "swc_relay", + "testing", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-bytes", + "turbo-tasks-env", + "turbo-tasks-fetch", + "turbo-tasks-fs", + "turbo-tasks-hash", + "turbo-tasks-malloc", + "turbo-tasks-memory", + "turbo-tasks-testing", + "turbopack", + "turbopack-bench", + "turbopack-cli-utils", + "turbopack-core", + "turbopack-dev", + "turbopack-dev-server", + "turbopack-ecmascript", + "turbopack-ecmascript-plugins", + "turbopack-env", + "turbopack-image", + "turbopack-node", + "turbopack-static", + "turbopack-test-utils", +] + +[[package]] +name = "turbopack-cli-utils" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "clap 4.1.11", + "crossterm", + "owo-colors", + "serde", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack-core", + "turbopack-ecmascript", +] + +[[package]] +name = "turbopack-core" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "async-trait", + "auto-hash-map", + "browserslist-rs", + "futures", + "indexmap", + "lazy_static", + "patricia_tree", + "qstring", + "regex", + "serde", + "serde_json", + "serde_qs", + "sourcemap", + "swc_core", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-env", + "turbo-tasks-fs", + "turbo-tasks-hash", +] + +[[package]] +name = "turbopack-create-test-app" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "clap 4.1.11", + "indoc", + "pathdiff", + "serde_json", + "tempfile", +] + +[[package]] +name = "turbopack-css" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "async-trait", + "indexmap", + "indoc", + "once_cell", + "regex", + "serde", + "swc_core", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbo-tasks-hash", + "turbopack-core", + "turbopack-ecmascript", + "turbopack-swc-utils", +] + +[[package]] +name = "turbopack-dev" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "indexmap", + "indoc", + "serde", + "serde_json", + "serde_qs", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbo-tasks-hash", + "turbopack", + "turbopack-core", + "turbopack-css", + "turbopack-ecmascript", +] + +[[package]] +name = "turbopack-dev-server" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "async-compression", + "futures", + "hyper", + "hyper-tungstenite", + "indexmap", + "mime", + "mime_guess", + "once_cell", + "parking_lot", + "pin-project-lite", + "serde", + "serde_json", + "serde_qs", + "socket2", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-bytes", + "turbo-tasks-fs", + "turbo-tasks-hash", + "turbopack-cli-utils", + "turbopack-core", + "turbopack-ecmascript", + "urlencoding", +] + +[[package]] +name = "turbopack-ecmascript" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "async-trait", + "indexmap", + "indoc", + "lazy_static", + "num-bigint", + "num-traits", + "once_cell", + "parking_lot", + "petgraph", + "pin-project-lite", + "regex", + "rustc-hash", + "serde", + "serde_json", + "serde_qs", + "styled_components", + "styled_jsx", + "swc_core", + "swc_emotion", + "tokio", + "tracing", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbo-tasks-hash", + "turbopack-core", + "turbopack-swc-utils", + "url", +] + +[[package]] +name = "turbopack-ecmascript-plugins" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "async-trait", + "indexmap", + "modularize_imports", + "serde", + "styled_components", + "styled_jsx", + "swc_core", + "swc_emotion", + "swc_relay", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack-ecmascript", +] + +[[package]] +name = "turbopack-env" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "indexmap", + "serde", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-env", + "turbo-tasks-fs", + "turbopack-core", + "turbopack-ecmascript", +] + +[[package]] +name = "turbopack-image" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "base64 0.21.0", + "image", + "indexmap", + "mime", + "once_cell", + "regex", + "serde", + "serde_with", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack-core", +] + +[[package]] +name = "turbopack-json" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "serde", + "serde_json", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack-core", + "turbopack-ecmascript", +] + +[[package]] +name = "turbopack-mdx" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "mdxjs", + "serde", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack-core", + "turbopack-ecmascript", +] + +[[package]] +name = "turbopack-node" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "async-stream", + "bytes", + "const_format", + "futures", + "futures-retry", + "indexmap", + "mime", + "once_cell", + "owo-colors", + "parking_lot", + "regex", + "serde", + "serde_json", + "serde_qs", + "tokio", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-bytes", + "turbo-tasks-env", + "turbo-tasks-fs", + "turbopack-cli-utils", + "turbopack-core", + "turbopack-dev-server", + "turbopack-ecmascript", + "url", + "urlencoding", +] + +[[package]] +name = "turbopack-static" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "serde", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbo-tasks-hash", + "turbopack-core", + "turbopack-css", + "turbopack-ecmascript", +] + +[[package]] +name = "turbopack-swc-utils" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "swc_core", + "turbo-tasks", + "turbo-tasks-build", + "turbopack-core", +] + +[[package]] +name = "turbopack-test-utils" +version = "0.1.0" +source = "git+https://github.com/vercel/turbo.git?tag=turbopack-230511.2#731d27d8495c63b856a15e0d714b8ae008cecd40" +dependencies = [ + "anyhow", + "once_cell", + "similar", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbo-tasks-hash", + "turbopack-core", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if 1.0.0", + "rand", + "static_assertions", +] + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" + +[[package]] +name = "uname" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" +dependencies = [ + "libc", +] + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-canonical-combining-class" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6925586af9268182c711e47c0853ed84131049efaca41776d0ca97f983865c32" + +[[package]] +name = "unicode-general-category" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2281c8c1d221438e373249e065ca4989c4c36952c211ff21a0ee91c44a3869e7" + +[[package]] +name = "unicode-id" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d70b6494226b36008c8366c288d77190b3fad2eb4c10533139c1c1f461127f1a" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-joining-type" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22f8cb47ccb8bc750808755af3071da4a10dcd147b68fc874b7ae4b12543f6f5" + +[[package]] +name = "unicode-linebreak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5faade31a542b8b35855fff6e8def199853b2da8da256da52f52f1316ee3137" +dependencies = [ + "hashbrown", + "regex", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2024452afd3874bf539695e04af6732ba06517424dbf958fdb16a01f3bef6c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-bag" +version = "1.0.0-alpha.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" +dependencies = [ + "ctor 0.1.26", + "version_check", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vergen" +version = "7.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21b881cd6636ece9735721cf03c1fe1e774fe258683d084bb2812ab67435749" +dependencies = [ + "anyhow", + "cfg-if 1.0.0", + "enum-iterator 1.4.0", + "getset", + "rustversion", + "thiserror", + "time 0.3.20", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "virtual-fs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba2b45886b577c5a11b5d3165b0410620ff508b0acfa91e5b024935de792e8e" +dependencies = [ + "anyhow", + "async-trait", + "bytes", + "derivative", + "filetime", + "fs_extra", + "getrandom", + "indexmap", + "lazy_static", + "libc", + "pin-project-lite", + "slab", + "thiserror", + "tokio", + "tracing", + "webc", +] + +[[package]] +name = "virtual-net" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e043eb813b35633445d602acf13df921a8a1ac8833818fb8f891e2f6223fedd7" +dependencies = [ + "async-trait", + "bytes", + "thiserror", + "tracing", +] + +[[package]] +name = "wai-bindgen-gen-core" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa3dc41b510811122b3088197234c27e08fcad63ef936306dd8e11e2803876c" +dependencies = [ + "anyhow", + "wai-parser", +] + +[[package]] +name = "wai-bindgen-gen-rust" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19bc05e8380515c4337c40ef03b2ff233e391315b178a320de8640703d522efe" +dependencies = [ + "heck 0.3.3", + "wai-bindgen-gen-core", +] + +[[package]] +name = "wai-bindgen-gen-rust-wasm" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f35ce5e74086fac87f3a7bd50f643f00fe3559adb75c88521ecaa01c8a6199" +dependencies = [ + "heck 0.3.3", + "wai-bindgen-gen-core", + "wai-bindgen-gen-rust", +] + +[[package]] +name = "wai-bindgen-gen-wasmer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f61484185d8c520a86d5a7f7f8265f446617c2f9774b2e20a52de19b6e53432" +dependencies = [ + "heck 0.3.3", + "wai-bindgen-gen-core", + "wai-bindgen-gen-rust", +] + +[[package]] +name = "wai-bindgen-rust" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e5601c6f448c063e83a5e931b8fefcdf7e01ada424ad42372c948d2e3d67741" +dependencies = [ + "bitflags 1.3.2", + "wai-bindgen-rust-impl", +] + +[[package]] +name = "wai-bindgen-rust-impl" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdeeb5c1170246de8425a3e123e7ef260dc05ba2b522a1d369fe2315376efea4" +dependencies = [ + "proc-macro2", + "syn 1.0.109", + "wai-bindgen-gen-core", + "wai-bindgen-gen-rust-wasm", +] + +[[package]] +name = "wai-bindgen-wasmer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367b98b4849e8910720d2b4e9ce3d35bbfa3b6120154d455b57416bd0bf6f0f" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "once_cell", + "thiserror", + "tracing", + "wai-bindgen-wasmer-impl", + "wasmer", +] + +[[package]] +name = "wai-bindgen-wasmer-impl" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b3488ed88d4dd0e3bf85bad4e27dac6cb31aae5d122a5dda2424803c8dc863a" +dependencies = [ + "proc-macro2", + "syn 1.0.109", + "wai-bindgen-gen-core", + "wai-bindgen-gen-wasmer", +] + +[[package]] +name = "wai-parser" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd0acb6d70885ea0c343749019ba74f015f64a9d30542e66db69b49b7e28186" +dependencies = [ + "anyhow", + "id-arena", + "pulldown-cmark", + "unicode-normalization", + "unicode-xid", +] + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm" +version = "0.0.0" +dependencies = [ + "anyhow", + "console_error_panic_hook", + "getrandom", + "js-sys", + "next-swc", + "once_cell", + "parking_lot_core 0.8.0", + "path-clean", + "serde", + "serde-wasm-bindgen", + "serde_json", + "swc_core", + "tracing", + "turbopack-binding", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-downcast" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dac026d43bcca6e7ce1c0956ba68f59edf6403e8e930a5d891be72c31a44340" +dependencies = [ + "js-sys", + "once_cell", + "wasm-bindgen", + "wasm-bindgen-downcast-macros", +] + +[[package]] +name = "wasm-bindgen-downcast-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5020cfa87c7cecefef118055d44e3c1fc122c7ec25701d528ee458a0b45f38f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "wasm-encoder" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eff853c4f09eec94d76af527eddad4e9de13b11d6286a1ef7134bc30135a2b7" +dependencies = [ + "leb128", +] + +[[package]] +name = "wasmer" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8472807bd8d5062aef0a35681e1b6fbaed8fea88d97910870741100c03b8fef3" +dependencies = [ + "bytes", + "cfg-if 1.0.0", + "derivative", + "indexmap", + "js-sys", + "more-asserts", + "serde", + "serde-wasm-bindgen", + "target-lexicon", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-downcast", + "wasmer-compiler", + "wasmer-compiler-cranelift", + "wasmer-derive", + "wasmer-types", + "wasmer-vm", + "wasmparser", + "wat", + "winapi 0.3.9", +] + +[[package]] +name = "wasmer-cache" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8dcf5d253d30a2736b1bd876e09eb64bd1d7ed2b464a9288772cc797aa36c0" +dependencies = [ + "blake3", + "hex", + "thiserror", + "wasmer", +] + +[[package]] +name = "wasmer-compiler" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e322cdfb8ed189d92cbb5c34acb319c0f04fb9799ed68e127717f255f8b246a" +dependencies = [ + "backtrace", + "cfg-if 1.0.0", + "enum-iterator 0.7.0", + "enumset", + "lazy_static", + "leb128", + "memmap2", + "more-asserts", + "region", + "rustc-demangle", + "smallvec", + "thiserror", + "wasmer-types", + "wasmer-vm", + "wasmparser", + "winapi 0.3.9", +] + +[[package]] +name = "wasmer-compiler-cranelift" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5240177aca0d8322c890d17d4b1b87f23ccb45340f616f384655aaba18f51bd" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "gimli 0.26.2", + "more-asserts", + "rayon", + "smallvec", + "target-lexicon", + "tracing", + "wasmer-compiler", + "wasmer-types", +] + +[[package]] +name = "wasmer-derive" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6858f330764b1041e68d3c824970064d2fbd8e27704180289fd248ff892c48" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "wasmer-types" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83345e3335fb9b21be6c394bc3d712522447bc8750db8a40ac9170627e3de35" +dependencies = [ + "bytecheck", + "enum-iterator 0.7.0", + "enumset", + "indexmap", + "more-asserts", + "rkyv", + "target-lexicon", + "thiserror", +] + +[[package]] +name = "wasmer-vm" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ca3cf9a2bb5919ae048231972440767efad7a693afaeb41332ab0796be1c884" +dependencies = [ + "backtrace", + "cc", + "cfg-if 1.0.0", + "corosensei", + "dashmap", + "derivative", + "enum-iterator 0.7.0", + "fnv", + "indexmap", + "lazy_static", + "libc", + "mach", + "memoffset 0.8.0", + "more-asserts", + "region", + "scopeguard", + "thiserror", + "wasmer-types", + "winapi 0.3.9", +] + +[[package]] +name = "wasmer-wasix" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "511532f5e07542a767eb56cb6812a381b86aad5f0a2848baae80a6db44e3b1e1" +dependencies = [ + "anyhow", + "async-trait", + "bincode", + "bytes", + "cfg-if 1.0.0", + "chrono", + "cooked-waker", + "derivative", + "futures", + "getrandom", + "heapless", + "hex", + "http", + "lazy_static", + "libc", + "linked_hash_set", + "once_cell", + "pin-project", + "rand", + "serde", + "serde_derive", + "serde_json", + "serde_yaml 0.8.26", + "sha2", + "shellexpand", + "term_size", + "termios", + "thiserror", + "tokio", + "tracing", + "urlencoding", + "virtual-fs", + "virtual-net", + "wai-bindgen-wasmer", + "waker-fn", + "wasm-bindgen", + "wasmer", + "wasmer-types", + "wasmer-wasix-types", + "webc", + "weezl", + "winapi 0.3.9", +] + +[[package]] +name = "wasmer-wasix-types" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eec8e2f60e476535824438dd23ce1ed52e86c3a9fc5d67a60c899f24dfa6dde" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "byteorder", + "cfg-if 1.0.0", + "num_enum", + "time 0.2.27", + "wai-bindgen-gen-core", + "wai-bindgen-gen-rust", + "wai-bindgen-gen-rust-wasm", + "wai-bindgen-rust", + "wai-parser", + "wasmer", + "wasmer-derive", + "wasmer-types", +] + +[[package]] +name = "wasmparser" +version = "0.95.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ea896273ea99b15132414be1da01ab0d8836415083298ecaffbe308eaac87a" +dependencies = [ + "indexmap", + "url", +] + +[[package]] +name = "wast" +version = "56.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b54185c051d7bbe23757d50fe575880a2426a2f06d2e9f6a10fd9a4a42920c0" +dependencies = [ + "leb128", + "memchr", + "unicode-width", + "wasm-encoder", +] + +[[package]] +name = "wat" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56681922808216ab86d96bb750f70d500b5a7800e41564290fd46bb773581299" +dependencies = [ + "wast", +] + +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579cc485bd5ce5bfa0d738e4921dd0b956eca9800be1fd2e5257ebe95bc4617e" +dependencies = [ + "core-foundation", + "dirs", + "jni", + "log", + "ndk-context", + "objc", + "raw-window-handle", + "url", + "web-sys", +] + +[[package]] +name = "webc" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06bee486f9207604f99bfa3c95afcd03272d95db5872c6c1b11470be4390d514" +dependencies = [ + "anyhow", + "base64 0.21.0", + "byteorder", + "bytes", + "indexmap", + "leb128", + "lexical-sort", + "memmap2", + "once_cell", + "path-clean", + "rand", + "serde", + "serde_cbor", + "serde_json", + "sha2", + "thiserror", + "url", + "walkdir", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "which" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-sys" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43dbb096663629518eb1dfa72d80243ca5a6aca764cae62a2df70af760a9be75" +dependencies = [ + "windows_aarch64_msvc 0.33.0", + "windows_i686_gnu 0.33.0", + "windows_i686_msvc 0.33.0", + "windows_x86_64_gnu 0.33.0", + "windows_x86_64_msvc 0.33.0", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000000..cff76a01b11d4 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,128 @@ +[workspace] + +members = [ + "packages/next-swc/crates/core", + "packages/next-swc/crates/napi", + "packages/next-swc/crates/wasm", + "packages/next-swc/crates/next-build", + "packages/next-swc/crates/next-core", + "packages/next-swc/crates/next-dev", + "packages/next-swc/crates/next-dev-tests", + "packages/next-swc/crates/next-transform-font", + "packages/next-swc/crates/next-transform-dynamic", + "packages/next-swc/crates/next-transform-strip-page-exports", +] + +[profile.dev.package.swc_css_prefixer] +opt-level = 2 + +# This is a workaround for wasm timeout issue +[profile.dev.package."*"] +debug-assertions = false + +[profile.release] +lto = true + +[workspace.dependencies] +# Workspace crates +next-build = { path = "packages/next-swc/crates/next-build" } +next-core = { path = "packages/next-swc/crates/next-core", default-features = false } +next-dev = { path = "packages/next-swc/crates/next-dev", default-features = false, features = [ + "serializable", +] } +next-dev-tests = { path = "packages/next-swc/crates/next-dev-tests" } +next-transform-font = { path = "packages/next-swc/crates/next-transform-font" } +next-transform-dynamic = { path = "packages/next-swc/crates/next-transform-dynamic" } +next-transform-strip-page-exports = { path = "packages/next-swc/crates/next-transform-strip-page-exports" } + +# SWC crates +# Keep consistent with preset_env_base through swc_core +swc_core = { version = "0.75.41" } +testing = { version = "0.33.4" } + +# Turbo crates +turbo-binding = { package = "turbopack-binding", git = "https://github.com/vercel/turbo.git", tag = "turbopack-230511.2" } +# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros.. +turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230511.2" } +# [TODO]: need to refactor embed_directory! macro usage in next-core +turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230511.2" } + +# General Deps + +# Be careful when selecting tls backend, including change default tls backend. +# If you changed, must verify with ALL build targets with next-swc to ensure +# it works. next-swc have various platforms, some doesn't support native (using openssl-sys) +# and some aren't buildable with rustls. +reqwest = { version = "0.11.14", default-features = false } + +chromiumoxide = { version = "0.4.0", features = [ + "tokio-runtime", +], default-features = false } +# For matching on errors from chromiumoxide. Keep in +# sync with chromiumoxide's tungstenite requirement. +tungstenite = "0.17.3" + +# flate2_zlib requires zlib, use flate2_rust +allsorts = { version = "0.14.0", default_features = false, features = [ + "outline", + "flate2_rust", +] } +anyhow = "1.0.69" +assert_cmd = "2.0.8" +async-compression = { version = "0.3.13", default-features = false, features = [ + "gzip", + "tokio", +] } +async-trait = "0.1.64" +atty = "0.2.14" +chrono = "0.4.23" +clap = "4.1.6" +clap_complete = "4.1.2" +concurrent-queue = "2.1.0" +console = "0.15.5" +console-subscriber = "0.1.8" +criterion = "0.4.0" +dashmap = "5.4.0" +dialoguer = "0.10.3" +dunce = "1.0.3" +futures = "0.3.26" +futures-retry = "0.6.0" +httpmock = { version = "0.6.7", default-features = false } +indexmap = "1.9.2" +indicatif = "0.17.3" +indoc = "2.0.0" +itertools = "0.10.5" +lazy_static = "1.4.0" +log = "0.4.17" +mime = "0.3.16" +nohash-hasher = "0.2.0" +once_cell = "1.17.1" +owo-colors = "3.5.0" +parking_lot = "0.12.1" +pathdiff = "0.2.1" +pin-project-lite = "0.2.9" +predicates = "2.1.5" +pretty_assertions = "1.3.0" +proc-macro2 = "1.0.51" +qstring = "0.7.2" +quote = "1.0.23" +rand = "0.8.5" +regex = "1.7.0" +rstest = "0.16.0" +rustc-hash = "1.1.0" +semver = "1.0.16" +serde = { version = "1.0.152", features = ["derive"] } +serde_json = "1.0.93" +serde_qs = "0.11.0" +serde_yaml = "0.9.17" +syn = "1.0.107" +tempfile = "3.3.0" +thiserror = "1.0.38" +tiny-gradient = "0.1.0" +tokio = "1.25.0" +tokio-util = { version = "0.7.7", features = ["io"] } +tracing = "0.1.37" +url = "2.2.2" +urlencoding = "2.1.2" +webbrowser = "0.8.7" +dhat = { version = "0.3.2" } diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7f9f4d0412c39..70f62eba5723e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -35,7 +35,6 @@ variables: PNPM_CACHE_FOLDER: $(Pipeline.Workspace)/.pnpm-store PNPM_VERSION: 7.24.3 NEXT_TELEMETRY_DISABLED: '1' - node_14_version: ^14.19.0 node_16_version: ^16.8.0 stages: @@ -47,7 +46,7 @@ stages: steps: - task: NodeTool@0 inputs: - versionSpec: $(node_14_version) + versionSpec: $(node_16_version) displayName: 'Install Node.js' - bash: | @@ -85,7 +84,7 @@ stages: - task: NodeTool@0 inputs: - versionSpec: $(node_14_version) + versionSpec: $(node_16_version) displayName: 'Install Node.js' - bash: | diff --git a/bench/rendering/pages/stateless-big.js b/bench/rendering/pages/stateless-big.js index 87f340d66d7e9..fdf9f92eefb3d 100644 --- a/bench/rendering/pages/stateless-big.js +++ b/bench/rendering/pages/stateless-big.js @@ -5,7 +5,7 @@ export default () => { } const items = () => { - var out = new Array(10000) + const out = new Array(10000) for (let i = 0; i < out.length; i++) { out[i] =
  • This is row {i + 1}
  • } diff --git a/bench/rendering/readme.md b/bench/rendering/readme.md index 71c7070d8f691..d4748da296d76 100644 --- a/bench/rendering/readme.md +++ b/bench/rendering/readme.md @@ -2,7 +2,7 @@ ## Installation -Follow the steps in [contributing.md](../contributing.md) +Follow the steps in [contributing.md](../../contributing.md) Both benchmarks use `ab`. So make sure you have that installed. diff --git a/contributing.md b/contributing.md index 32733ca5e4002..9a0be6456dcbb 100644 --- a/contributing.md +++ b/contributing.md @@ -29,5 +29,6 @@ To contribute to [our examples](./examples), please see - [Building](./contributing/core/building.md) - [Testing](./contributing/core/testing.md) - [Adding Error Links](./contributing/core/adding-error-links.md) +- [Adding a new feature](./contributing/core/adding-features.md) - [Developing Using Local App](./contributing/core/developing-using-local-app.md) diff --git a/contributing/core/adding-features.md b/contributing/core/adding-features.md new file mode 100644 index 0000000000000..812845a91c80d --- /dev/null +++ b/contributing/core/adding-features.md @@ -0,0 +1,17 @@ +# Adding a new feature + +Anyone can propose a change to Next.js. However, adding new features often requires community discussions before proceeding with the implementation. + +Therefore, before opening a PR, you should use the [Feature Request discussion template](https://github.com/vercel/next.js/discussions/new?category=ideas) and collect feedback. + +## Why use a discussion? + +The discussion's goal is to achieve the following: + +1. **Verify the validity of the feature request**: The community can upvote discussions. Highly upvoted feature requests are more likely to be considered. +2. **Understanding the consequences**: Any feature added to Next.js is likely to be around for a while and _has to be maintained_. This means that a new feature has to cover many use cases, needs to consider how it affects the ecosystem, and so on. +3. **Looking at and understanding historical reasons for the current behavior or lack of the feature**: There might be a reason why a feature does not exist, or why the current implementation is in a certain way. There must be solid reasoning to change this, as the feature needs to be maintained even after it is added. (See 2.). Next.js has a strong policy on not breaking features, so any new feature has to be added in a way that makes it possible to incrementally adopt it. + +## Examples + +The Next.js team uses RFCs (Request For Comment), which you can find in [this discussion category](https://github.com/vercel/next.js/discussions/categories/rfc). Reading through these, you can get a better understanding of what is expected to be included in a good feature request. diff --git a/contributing/docs/adding-documentation.md b/contributing/docs/adding-documentation.md index 37ea3654600ad..3df38841d024e 100644 --- a/contributing/docs/adding-documentation.md +++ b/contributing/docs/adding-documentation.md @@ -37,4 +37,4 @@ After: ] ``` -Note: the manifest is checked automatically in the "lint" step in CI when opening a PR. +> **Note**: The manifest is checked automatically in the "lint" step in CI when opening a PR. diff --git a/contributing/examples/adding-examples.md b/contributing/examples/adding-examples.md index 978857e0ef8e8..9fbbaac8c6828 100644 --- a/contributing/examples/adding-examples.md +++ b/contributing/examples/adding-examples.md @@ -35,7 +35,7 @@ Description Deploy the example using [Vercel](https://vercel.com?utm_source=github&utm_medium=readme&utm_campaign=next-example): -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https://github.com/vercel/next.js/tree/canary/examples/DIRECTORY_NAME&project-name=DIRECTORY_NAME&repository-name=DIRECTORY_NAME) +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/vercel/next.js/tree/canary/examples/DIRECTORY_NAME&project-name=DIRECTORY_NAME&repository-name=DIRECTORY_NAME) ## How to use diff --git a/contributing/repository/triaging.md b/contributing/repository/triaging.md index 71eb1636c63fa..aa15f8059c447 100644 --- a/contributing/repository/triaging.md +++ b/contributing/repository/triaging.md @@ -2,9 +2,10 @@ Repository maintainers triage every issue and PR opened in the repository. +> Note: Feature requests should be opened as discussions, filling out [this template](https://github.com/vercel/next.js/discussions/new?category=ideas). + Issues are opened with one of these labels: -- `template: story` - a feature request, converted to an [💡 Ideas discussion](https://github.com/vercel/next.js/discussions/categories/ideas) - `template: bug` - unverified issue with Next.js itself, or one of the examples in the [`examples`](https://github.com/vercel/next.js/tree/canary/examples) folder - `template: documentation` - feedback for improvement or an unverified issue with the Next.js documentation diff --git a/docs/advanced-features/amp-support/amp-in-static-html-export.md b/docs/advanced-features/amp-support/amp-in-static-html-export.md index 67351a27d9bf5..2e6a029a9d6ff 100644 --- a/docs/advanced-features/amp-support/amp-in-static-html-export.md +++ b/docs/advanced-features/amp-support/amp-in-static-html-export.md @@ -1,10 +1,10 @@ --- -description: Learn how AMP pages are created when used together with `next export`. +description: Learn how AMP pages are created when used together with export. --- # AMP in Static HTML export -When using `next export` to do [Static HTML export](/docs/advanced-features/static-html-export.md) statically prerender pages, Next.js will detect if the page supports AMP and change the exporting behavior based on that. +When using [Static HTML export](/docs/advanced-features/static-html-export.md) statically prerender pages, Next.js will detect if the page supports AMP and change the exporting behavior based on that. For example, the hybrid AMP page `pages/about.js` would output: diff --git a/docs/advanced-features/automatic-static-optimization.md b/docs/advanced-features/automatic-static-optimization.md index cbbfbbf756b30..9e8131946cf5b 100644 --- a/docs/advanced-features/automatic-static-optimization.md +++ b/docs/advanced-features/automatic-static-optimization.md @@ -28,7 +28,7 @@ The cases where the query will be updated after hydration triggering another ren To be able to distinguish if the query is fully updated and ready for use, you can leverage the `isReady` field on [`next/router`](/docs/api-reference/next/router.md#router-object). -> **Note:** Parameters added with [dynamic routes](/docs/routing/dynamic-routes.md) to a page that's using [`getStaticProps`](/docs/basic-features/data-fetching/get-static-props.md) will always be available inside the `query` object. +> **Note**: Parameters added with [dynamic routes](/docs/routing/dynamic-routes.md) to a page that's using [`getStaticProps`](/docs/basic-features/data-fetching/get-static-props.md) will always be available inside the `query` object. `next build` will emit `.html` files for statically optimized pages. For example, the result for the page `pages/about.js` would be: diff --git a/docs/advanced-features/compiler.md b/docs/advanced-features/compiler.md index a94c9fd5679d4..3940c3b3c844b 100644 --- a/docs/advanced-features/compiler.md +++ b/docs/advanced-features/compiler.md @@ -118,6 +118,7 @@ module.exports = { src: './', artifactDirectory: './__generated__', language: 'typescript', + eagerEsModules: false, }, }, } diff --git a/docs/advanced-features/custom-document.md b/docs/advanced-features/custom-document.md index 07f148a7d2972..0f4556eb05b2c 100644 --- a/docs/advanced-features/custom-document.md +++ b/docs/advanced-features/custom-document.md @@ -50,7 +50,7 @@ Or add a `className` to the `body` tag: ## Customizing `renderPage` -> **Note:** This is advanced and only needed for libraries like CSS-in-JS to support server-side rendering. This is not needed for built-in `styled-jsx` support. +> **Note**: This is advanced and only needed for libraries like CSS-in-JS to support server-side rendering. This is not needed for built-in `styled-jsx` support. For [React 18](/docs/advanced-features/react-18.md) support, we recommend avoiding customizing `getInitialProps` and `renderPage`, if possible. diff --git a/docs/advanced-features/custom-server.md b/docs/advanced-features/custom-server.md index 89ce91bfb235e..ba694180861bb 100644 --- a/docs/advanced-features/custom-server.md +++ b/docs/advanced-features/custom-server.md @@ -14,7 +14,7 @@ description: Start a Next.js app programmatically using a custom server. By default, Next.js includes its own server with `next start`. If you have an existing backend, you can still use it with Next.js (this is not a custom server). A custom Next.js server allows you to start a server 100% programmatically in order to use custom server patterns. Most of the time, you will not need this – but it's available for complete customization. -> **Note:** A custom server **cannot** be deployed on [Vercel](https://vercel.com/solutions/nextjs). +> **Note**: A custom server **cannot** be deployed on [Vercel](https://vercel.com/solutions/nextjs). > Before deciding to use a custom server, please keep in mind that it should only be used when the integrated router of Next.js can't meet your app requirements. A custom server will remove important performance optimizations, like **serverless functions** and **[Automatic Static Optimization](/docs/advanced-features/automatic-static-optimization.md).** @@ -51,12 +51,16 @@ app.prepare().then(() => { } catch (err) { console.error('Error occurred handling', req.url, err) res.statusCode = 500 - res.end('internal server error') + res.end('Internal Server Error') } - }).listen(port, (err) => { - if (err) throw err - console.log(`> Ready on http://${hostname}:${port}`) }) + .once('error', (err) => { + console.error(err) + process.exit(1) + }) + .listen(port, () => { + console.log(`> Ready on http://${hostname}:${port}`) + }) }) ``` diff --git a/docs/advanced-features/debugging.md b/docs/advanced-features/debugging.md index 86ba80d0036ed..ee18d14b2d3e4 100644 --- a/docs/advanced-features/debugging.md +++ b/docs/advanced-features/debugging.md @@ -97,6 +97,8 @@ Windows users may run into an issue when using `NODE_OPTIONS='--inspect'` as tha `cross-env` will set the `NODE_OPTIONS` environment variable regardless of which platform you are on (including Mac, Linux, and Windows) and allow you to debug consistently across devices and operating systems. +> **Note**: Ensure Windows Defender is disabled on your machine. This external service will check _every file read_, which has been reported to greatly increase Fast Refresh time with `next dev`. This is a known issue, not related to Next.js, but it does affect Next.js development. + ## More information To learn more about how to use a JavaScript debugger, take a look at the following documentation: diff --git a/docs/advanced-features/dynamic-import.md b/docs/advanced-features/dynamic-import.md index a7b4f5eac1ee6..971622cb77f01 100644 --- a/docs/advanced-features/dynamic-import.md +++ b/docs/advanced-features/dynamic-import.md @@ -13,7 +13,7 @@ description: Dynamically import JavaScript modules and React Components and spli Next.js supports lazy loading external libraries with `import()` and React components with `next/dynamic`. Deferred loading helps improve the initial loading performance by decreasing the amount of JavaScript necessary to render the page. Components or libraries are only imported and included in the JavaScript bundle when they're used. -`next/dynamic` is a composite extension of [`React.lazy`](https://reactjs.org/docs/code-splitting.html#reactlazy) and [`Suspense`](https://reactjs.org/docs/react-api.html#reactsuspense), components can delay hydration until the Suspense boundary is resolved. +`next/dynamic` is a composite extension of [`React.lazy`](https://react.dev/reference/react/lazy) and [`Suspense`](https://react.dev/reference/react/Suspense), components can delay hydration until the Suspense boundary is resolved. ## Example @@ -23,7 +23,7 @@ By using `next/dynamic`, the header component will not be included in the page's import dynamic from 'next/dynamic' const DynamicHeader = dynamic(() => import('../components/header'), { - loading: () => 'Loading...', + loading: () =>

    Loading...

    , }) export default function Home() { diff --git a/docs/advanced-features/error-handling.md b/docs/advanced-features/error-handling.md index f4b8d258e5f07..c09324464f727 100644 --- a/docs/advanced-features/error-handling.md +++ b/docs/advanced-features/error-handling.md @@ -24,7 +24,7 @@ You can also use [404 page](/docs/advanced-features/custom-error-page#404-page) ## Handling Client Errors -React [Error Boundaries](https://reactjs.org/docs/error-boundaries.html) is a graceful way to handle a JavaScript error on the client so that the other parts of the application continue working. In addition to preventing the page from crashing, it allows you to provide a custom fallback component and even log error information. +React [Error Boundaries](https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary) is a graceful way to handle a JavaScript error on the client so that the other parts of the application continue working. In addition to preventing the page from crashing, it allows you to provide a custom fallback component and even log error information. To use Error Boundaries for your Next.js application, you must create a class component `ErrorBoundary` and wrap the `Component` prop in the `pages/_app.js` file. This component will be responsible to: @@ -97,7 +97,7 @@ function MyApp({ Component, pageProps }) { export default MyApp ``` -You can learn more about [Error Boundaries](https://reactjs.org/docs/error-boundaries.html) in React's documentation. +You can learn more about [Error Boundaries](https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary) in React's documentation. ### Reporting Errors diff --git a/docs/advanced-features/i18n-routing.md b/docs/advanced-features/i18n-routing.md index e79ab3054030a..2eed2aea9d026 100644 --- a/docs/advanced-features/i18n-routing.md +++ b/docs/advanced-features/i18n-routing.md @@ -13,7 +13,7 @@ description: Next.js has built-in support for internationalized routing and lang Next.js has built-in support for internationalized ([i18n](https://en.wikipedia.org/wiki/Internationalization_and_localization#Naming)) routing since `v10.0.0`. You can provide a list of locales, the default locale, and domain-specific locales and Next.js will automatically handle the routing. -The i18n routing support is currently meant to complement existing i18n library solutions like [`react-intl`](https://formatjs.io/docs/getting-started/installation), [`react-i18next`](https://react.i18next.com/), [`lingui`](https://lingui.dev/), [`rosetta`](https://github.com/lukeed/rosetta), [`next-intl`](https://github.com/amannn/next-intl), [`next-translate`](https://github.com/aralroca/next-translate), [`next-multilingual`](https://github.com/Avansai/next-multilingual), and others by streamlining the routes and locale parsing. +The i18n routing support is currently meant to complement existing i18n library solutions like [`react-intl`](https://formatjs.io/docs/react-intl/), [`react-i18next`](https://react.i18next.com/), [`lingui`](https://lingui.dev/), [`rosetta`](https://github.com/lukeed/rosetta), [`next-intl`](https://github.com/amannn/next-intl), [`next-translate`](https://github.com/aralroca/next-translate), [`next-multilingual`](https://github.com/Avansai/next-multilingual), [`typesafe-i18n`](https://github.com/ivanhofer/typesafe-i18n), and others by streamlining the routes and locale parsing. ## Getting started @@ -299,7 +299,7 @@ Next.js doesn't know about variants of a page so it's up to you to add the `href ## How does this work with Static Generation? -> Note that Internationalized Routing does not integrate with [`next export`](/docs/advanced-features/static-html-export.md) as `next export` does not leverage the Next.js routing layer. Hybrid Next.js applications that do not use `next export` are fully supported. +> Note that Internationalized Routing does not integrate with [`output: 'export'`](/docs/advanced-features/static-html-export.md) as it does not leverage the Next.js routing layer. Hybrid Next.js applications that do not use `output: 'export'` are fully supported. ### Dynamic Routes and `getStaticProps` Pages @@ -361,4 +361,4 @@ export async function getStaticProps({ locale }) { - `locales`: 100 total locales - `domains`: 100 total locale domain items -> **Note:** These limits have been added initially to prevent potential [performance issues at build time](#dynamic-routes-and-getStaticProps-pages). You can workaround these limits with custom routing using [Middleware](/docs/middleware.md) in Next.js 12. +> **Note**: These limits have been added initially to prevent potential [performance issues at build time](#dynamic-routes-and-getStaticProps-pages). You can workaround these limits with custom routing using [Middleware](/docs/middleware.md) in Next.js 12. diff --git a/docs/advanced-features/instrumentation.md b/docs/advanced-features/instrumentation.md new file mode 100644 index 0000000000000..e1f987628c5b9 --- /dev/null +++ b/docs/advanced-features/instrumentation.md @@ -0,0 +1,52 @@ +--- +description: Learn how to use instrumentation to run code at server startup in your Next.js app +--- + +> **Note**: This feature is experimental. To use it, you must explicitly opt in by defining `experimental.instrumentationHook = true;` in your `next.config.js`. + +# `instrumentation.ts` + +If you export a function named `register` from this file, we will call that function whenever a new Next.js server instance is bootstrapped. +When your `register` function is deployed, it will be called on each cold boot (but exactly once in each environment). + +Sometimes, it may be useful to import a file in your code because of the side effects it will cause. For example, you might import a file that defines a set of global variables, but never explicitly use the imported file in your code. You would still have access to the global variables the package has declared. + +You can import files with side effects in `instrumentation.ts`, which you might want to use in your `register` function as demonstrated in the following example: + +```ts +// /instrumentation.ts + +import { init } from 'package-init' + +export function register() { + init() +} +``` + +However, we recommend importing files with side effects using `import` from within your `register` function instead. The following example demonstrates a basic usage of `import` in a `register` function: + +```ts +// /instrumentation.ts + +export async function register() { + await import('package-with-side-effect') +} +``` + +By doing this, you can colocate all of your side effects in one place in your code, and avoid any unintended consequences from importing files. + +We call `register` in all environments, so it's necessary to conditionally import any code that doesn't support both `edge` and `nodejs`. You can use the environment variable `NEXT_RUNTIME` to get the current environment. Importing an environment-specific code would look like this: + +```ts +// /instrumentation.ts + +export async function register() { + if (process.env.NEXT_RUNTIME === 'nodejs') { + await import('./instrumentation-node') + } + + if (process.env.NEXT_RUNTIME === 'edge') { + await import('./instrumentation-edge') + } +} +``` diff --git a/docs/advanced-features/measuring-performance.md b/docs/advanced-features/measuring-performance.md index 3e7f6d0f56ae0..819659b9e81ac 100644 --- a/docs/advanced-features/measuring-performance.md +++ b/docs/advanced-features/measuring-performance.md @@ -1,15 +1,15 @@ --- -description: Measure and track page performance using Next.js Analytics +description: Measure and track page performance using Next.js Speed Insights --- # Measuring performance -[Next.js Analytics](https://nextjs.org/analytics) allows you to analyze and measure the performance of +[Next.js Speed Insights](https://nextjs.org/analytics) allows you to analyze and measure the performance of pages using different metrics. -You can start collecting your [Real Experience Score](https://vercel.com/docs/concepts/analytics/web-vitals?utm_source=next-site&utm_medium=docs&utm_campaign=next-website) with zero-configuration on [Vercel deployments](https://vercel.com/docs/analytics?utm_source=next-site&utm_medium=docs&utm_campaign=next-website). There's also support for Analytics if you're [self-hosting](https://vercel.com/docs/concepts/analytics#self-hosted?utm_source=next-site&utm_medium=docs&utm_campaign=next-website). +You can start collecting your [Real Experience Score](https://vercel.com/docs/concepts/speed-insights#core-web-vitals?utm_source=next-site&utm_medium=docs&utm_campaign=next-website) with zero-configuration on [Vercel deployments](https://vercel.com/docs/concepts/speed-insights?utm_source=next-site&utm_medium=docs&utm_campaign=next-website). -The rest of this documentation describes the built-in relayer Next.js Analytics uses. +The rest of this documentation describes the built-in relayer Next.js Speed Insights uses. ## Build Your Own @@ -142,9 +142,9 @@ export function reportWebVitals(metric) { These metrics work in all browsers that support the [User Timing API](https://caniuse.com/#feat=user-timing). -## Sending results to analytics +## Sending results to external systems -With the relay function, you can send any of results to an analytics endpoint to measure and track +With the relay function, you can send results to any endpoint to measure and track real user performance on your site. For example: ```js diff --git a/docs/advanced-features/middleware.md b/docs/advanced-features/middleware.md index 7ceced92003cc..54842f3e95ea7 100644 --- a/docs/advanced-features/middleware.md +++ b/docs/advanced-features/middleware.md @@ -21,7 +21,7 @@ Middleware allows you to run code before a request is completed, then based on t Middleware runs _before_ cached content, so you can personalize static files and pages. Common examples of Middleware would be authentication, A/B testing, localized pages, bot protection, and more. Regarding localized pages, you can start with [i18n routing](/docs/advanced-features/i18n-routing) and implement Middleware for more advanced use cases. -> **Note:** If you were using Middleware prior to `12.2`, please see the [upgrade guide](https://nextjs.org/docs/messages/middleware-upgrade-guide). +> **Note**: If you were using Middleware prior to `12.2`, please see the [upgrade guide](https://nextjs.org/docs/messages/middleware-upgrade-guide). ## Using Middleware @@ -105,7 +105,7 @@ export const config = { } ``` -> **Note:** The `matcher` values need to be constants so they can be statically analyzed at build-time. Dynamic values such as variables will be ignored. +> **Note**: The `matcher` values need to be constants so they can be statically analyzed at build-time. Dynamic values such as variables will be ignored. Configured matchers: @@ -116,7 +116,7 @@ Configured matchers: Read more details on [path-to-regexp](https://github.com/pillarjs/path-to-regexp#path-to-regexp-1) documentation. -> **Note:** For backward compatibility, Next.js always considers `/public` as `/public/index`. Therefore, a matcher of `/public/:path` will match. +> **Note**: For backward compatibility, Next.js always considers `/public` as `/public/index`. Therefore, a matcher of `/public/:path` will match. ### Conditional Statements @@ -221,13 +221,11 @@ export function middleware(request: NextRequest) { } ``` -> **Note:** Avoid setting large headers as it might cause [431 Request Header Fields Too Large](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431) error depending on your backend web server configuration. +> **Note**: Avoid setting large headers as it might cause [431 Request Header Fields Too Large](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431) error depending on your backend web server configuration. ## Producing a Response -You can respond to middleware directly by returning a `NextResponse` (responding from middleware is available since Next.js v13.1.0). - -Once enabled, you can provide a response from middleware using the `Response` or `NextResponse` API: +You can respond from Middleware directly by returning a `Response` or `NextResponse` instance. (This is available since [Next.js v13.1.0](https://nextjs.org/blog/next-13-1#nextjs-advanced-middleware)) ```ts // middleware.ts diff --git a/docs/advanced-features/module-path-aliases.md b/docs/advanced-features/module-path-aliases.md index ec19e194bbfd3..113a843b0bef0 100644 --- a/docs/advanced-features/module-path-aliases.md +++ b/docs/advanced-features/module-path-aliases.md @@ -13,9 +13,9 @@ description: Configure module path aliases that allow you to remap certain impor Next.js automatically supports the `tsconfig.json` and `jsconfig.json` `"paths"` and `"baseUrl"` options since [Next.js 9.4](https://nextjs.org/blog/next-9-4). -> Note: `jsconfig.json` can be used when you don't use TypeScript +> **Note**: `jsconfig.json` can be used when you don't use TypeScript -> Note: you need to restart dev server to reflect modifications done in `tsconfig.json` / `jsconfig.json` +> **Note**: you need to restart dev server to reflect modifications done in `tsconfig.json` / `jsconfig.json` These options allow you to configure module aliases, for example a common pattern is aliasing certain directories to use absolute paths. diff --git a/docs/advanced-features/open-telemetry.md b/docs/advanced-features/open-telemetry.md new file mode 100644 index 0000000000000..2adcb6c985994 --- /dev/null +++ b/docs/advanced-features/open-telemetry.md @@ -0,0 +1,279 @@ +--- +description: Learn how to instrument your Next.js app with OpenTelemetry. +--- + +> **Note**: This feature is experimental, you need to explicitly opt-in by providing `experimental.instrumentationHook = true;` in your `next.config.js`. + +# OpenTelemetry in Next.js + +Observability is crucial for understanding and optimizing the behavior and performance of your Next.js app. + +As applications become more complex, it becomes increasingly difficult to identify and diagnose issues that may arise. By leveraging observability tools, such as logging and metrics, developers can gain insights into their application's behavior and identify areas for optimization. With observability, developers can proactively address issues before they become major problems and provide a better user experience. Therefore, it is highly recommended to use observability in your Next.js applications to improve performance, optimize resources, and enhance user experience. + +We recommend using OpenTelemetry for instrumenting your apps. +It's a platform-agnostic way to instrument apps that allows you to change your observability provider without changing your code. +Read [Official OpenTelemetry docs](https://opentelemetry.io/docs/) for more information about OpenTelemetry and how it works. + +This documentation uses terms like _Span_, _Trace_ or _Exporter_ throughout this doc, all of which can be found in [the OpenTelemetry Observability Primer](https://opentelemetry.io/docs/concepts/observability-primer/). + +Next.js supports OpenTelemetry instrumentation out of the box, which means that we already instrumented Next.js itself. +When you enable OpenTelemetry we will automatically wrap all your code like `getStaticProps` in _spans_ with helpful attributes. + +> **Note**: We currently support OpenTelemetry bindings only in serverless functions. +> We don't provide any for `edge` or client side code. + +## Getting Started + +OpenTelemetry is extensible but setting it up properly can be quite verbose. +That's why we prepared a package `@vercel/otel` that helps you get started quickly. +It's not extensible and you should configure OpenTelemetry manually you need to customize your setup. + +### Using `@vercel/otel` + +To get started, you must install `@vercel/otel`: + +```bash +npm install @vercel/otel +``` + +Next, create a custom [`instrumentation.ts`](https://nextjs.org/docs/advanced-features/instrumentation) file in the root of the project: + +```ts +// instrumentation.ts +import { registerOTel } from '@vercel/otel' + +export function register() { + registerOTel('next-app') +} +``` + +> **Note**: We have created a basic [with-opentelemetry](https://github.com/vercel/next.js/tree/canary/examples/with-opentelemetry) example that you can use. + +### Manual OpenTelemetry configuration + +If our wrapper `@vercel/otel` doesn't suit your needs, you can configure OpenTelemetry manually. + +Firstly you need to install OpenTelemetry packages: + +```bash +npm install @opentelemetry/sdk-node @opentelemetry/resources @opentelemetry/semantic-conventions @opentelemetry/sdk-trace-base @opentelemetry/exporter-trace-otlp-grpc +``` + +Now you can initialize `NodeSDK` in your `instrumentation.ts`. +OpenTelemetry APIs are not compatible with edge runtime, so you need to make sure that you are importing them only when `process.env.NEXT_RUNTIME === 'nodejs'`. We recommend creating a new file `instrumentation.node.ts` which you conditionally import only when using node: + +```ts +// instrumentation.ts +export async function register() { + if (process.env.NEXT_RUNTIME === 'nodejs') { + await import('./instrumentation.node.ts') + } +} +``` + +```ts +// instrumentation.node.ts +import { NodeSDK } from '@opentelemetry/sdk-node' +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' +import { Resource } from '@opentelemetry/resources' +import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' +import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node' + +const sdk = new NodeSDK({ + resource: new Resource({ + [SemanticResourceAttributes.SERVICE_NAME]: 'next-app', + }), + spanProcessor: new SimpleSpanProcessor(new OTLPTraceExporter()), +}) +sdk.start() +``` + +Doing this is equivalent to using `@vercel/otel`, but it's possible to modify and extend. +For example, you could use `@opentelemetry/exporter-trace-otlp-http` instead of `@opentelemetry/exporter-trace-otlp-grpc` or you can specify more resource attributes. + +## Testing your instrumentation + +You need an OpenTelemetry collector with a compatible backend to test OpenTelemetry traces locally. +We recommend using our [OpenTelemetry dev environment](https://github.com/vercel/opentelemetry-collector-dev-setup). + +If everything works well you should be able to see the root server span labeled as `GET /requested/pathname`. +All other spans from that particular trace will be nested under it. + +Next.js traces more spans than are emitted by default. +To see more spans, you must set `NEXT_OTEL_VERBOSE=1`. + +## Deployment + +### Using OpenTelemetry Collector + +When you are deploying with OpenTelemetry Collector, you can use `@vercel/otel`. +It will work both on Vercel and when self-hosted. + +#### Deploying on Vercel + +We made sure that OpenTelemetry works out of the box on Vercel. + +Follow [Vercel documentation](https://vercel.com/docs/concepts/observability/otel-overview/quickstart) to connect your project to an observability provider. + +#### Self-hosting + +Deploying to other platforms is also straightforward. You will need to spin up your own OpenTelemetry Collector to receive and process the telemetry data from your Next.js app. + +To do this, follow the [OpenTelemetry Collector Getting Started guide](https://opentelemetry.io/docs/collector/getting-started/), which will walk you through setting up the collector and configuring it to receive data from your Next.js app. + +Once you have your collector up and running, you can deploy your Next.js app to your chosen platform following their respective deployment guides. + +### Custom Exporters + +We recommend using OpenTelemetry Collector. +If that is not possible on your platform, you can use a custom OpenTelemetry exporter with [manual OpenTelemetry configuration](https://nextjs.org/docs/advanced-features/open-telemetry#manual-opentelemetry-configuration) + +## Custom Spans + +You can add a custom span with [OpenTelemetry APIs](https://opentelemetry.io/docs/instrumentation/js/instrumentation). + +```bash +npm install @opentelemetry/api +``` + +The following example demonstrates a function that fetches GitHub stars and adds a custom `fetchGithubStars` span to track the fetch request's result: + +```ts +import { trace } from '@opentelemetry/api' + +export async function fetchGithubStars() { + return await trace + .getTracer('nextjs-example') + .startActiveSpan('fetchGithubStars', async (span) => { + try { + return await getValue() + } finally { + span.end() + } + }) +} +``` + +The `register` function will execute before your code runs in a new environment. +You can start creating new spans, and they should be correctly added to the exported trace. + +## Default Spans in Next.js + +Next.js automatically instruments several spans for you to provide useful insights into your application's performance. + +Attributes on spans follow [OpenTelemetry semantic conventions](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/). We also add some custom attributes under the `next` namespace: + +- `next.span_name` - duplicates span name +- `next.span_type` - each span type has a unique identifier +- `next.route` - The route pattern of the request (e.g., `/[param]/user`). +- `next.page` + - This is an internal value used by an app router. + - You can think about it as a route to a special file (like `page.ts`, `layout.ts`, `loading.ts` and others) + - It can be used as a unique identifier only when paired with `next.route` because `/layout` can be used to identify both `/(groupA)/layout.ts` and `/(groupB)/layout.ts` + +### `[http.method] [next.route]` + +- `next.span_type`: `BaseServer.handleRequest` + +This span represents the root span for each incoming request to your Next.js application. It tracks the HTTP method, route, target, and status code of the request. + +Attributes: + +- [Common HTTP attributes](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/http/#common-attributes) + - `http.method` + - `http.status_code` +- [Server HTTP attributes](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/http/#http-server-semantic-conventions) + - `http.route` + - `http.target` +- `next.span_name` +- `next.span_type` +- `next.route` + +### `render route (app) [next.route]` + +- `next.span_type`: `AppRender.getBodyResult`. + +This span represents the process of rendering a route in the app router. + +Attributes: + +- `next.span_name` +- `next.span_type` +- `next.route` + +### `fetch [http.method] [http.url]` + +- `next.span_type`: `AppRender.fetch` + +This span represents the fetch request executed in your code. + +Attributes: + +- [Common HTTP attributes](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/http/#common-attributes) + - `http.method` +- [Client HTTP attributes](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/http/#http-client) + - `http.url` + - `net.peer.name` + - `net.peer.port` (only if specified) +- `next.span_name` +- `next.span_type` + +### `executing api route (app) [next.route]` + +- `next.span_type`: `AppRouteRouteHandlers.runHandler`. + +This span represents the execution of an API route handler in the app router. + +Attributes: + +- `next.span_name` +- `next.span_type` +- `next.route` + +### `getServerSideProps [next.route]` + +- `next.span_type`: `Render.getServerSideProps`. + +This span represents the execution of `getServerSideProps` for a specific route. + +Attributes: + +- `next.span_name` +- `next.span_type` +- `next.route` + +### `getStaticProps [next.route]` + +- `next.span_type`: `Render.getStaticProps`. + +This span represents the execution of `getStaticProps` for a specific route. + +Attributes: + +- `next.span_name` +- `next.span_type` +- `next.route` + +### `render route (pages) [next.route]` + +- `next.span_type`: `Render.renderDocument`. + +This span represents the process of rendering the document for a specific route. + +Attributes: + +- `next.span_name` +- `next.span_type` +- `next.route` + +### `generateMetadata [next.page]` + +- `next.span_type`: `ResolveMetadata.generateMetadata`. + +This span represents the process of generating metadata for a specific page (a single route can have multiple of these spans). + +Attributes: + +- `next.span_name` +- `next.span_type` +- `next.page` diff --git a/docs/advanced-features/output-file-tracing.md b/docs/advanced-features/output-file-tracing.md index 138a74ac868b7..e31c88bde1e48 100644 --- a/docs/advanced-features/output-file-tracing.md +++ b/docs/advanced-features/output-file-tracing.md @@ -34,9 +34,11 @@ This will create a folder at `.next/standalone` which can then be deployed on it Additionally, a minimal `server.js` file is also output which can be used instead of `next start`. This minimal server does not copy the `public` or `.next/static` folders by default as these should ideally be handled by a CDN instead, although these folders can be copied to the `standalone/public` and `standalone/.next/static` folders manually, after which `server.js` file will serve these automatically. -Note: `next.config.js` is read during `next build` and serialized into the `server.js` output file. If the legacy [`serverRuntimeConfig` or `publicRuntimeConfig` options](/docs/api-reference/next.config.js/runtime-configuration.md) are being used, the values will be specific to values at build time. +> **Note**: If [`distDir`](/docs/api-reference/next.config.js/setting-a-custom-build-directory.md) is configured, the standalone build can be found at `/standalone`. Additionally, static files should be copied to `standalone//static` if they should be served by the integrated server. -If your project uses [Image Optimization](/docs/basic-features/image-optimization.md) with the default `loader`, you must install `sharp` as a dependency: +> **Note**: `next.config.js` is read during `next build` and serialized into the `server.js` output file. If the legacy [`serverRuntimeConfig` or `publicRuntimeConfig` options](/docs/api-reference/next.config.js/runtime-configuration.md) are being used, the values will be specific to values at build time. + +> **Note**: If your project uses [Image Optimization](/docs/basic-features/image-optimization.md) with the default `loader`, you must install `sharp` as a dependency: ```bash npm i sharp diff --git a/docs/advanced-features/preview-mode.md b/docs/advanced-features/preview-mode.md index 0428831219803..2b77d7f2c33df 100644 --- a/docs/advanced-features/preview-mode.md +++ b/docs/advanced-features/preview-mode.md @@ -243,7 +243,7 @@ export default function myApiRoute(req, res) { Both the bypass cookie value and the private key for encrypting the `previewData` change when `next build` is completed. This ensures that the bypass cookie can’t be guessed. -> **Note:** To test Preview Mode locally over HTTP your browser will need to allow third-party cookies and local storage access. +> **Note**: To test Preview Mode locally over HTTP your browser will need to allow third-party cookies and local storage access. ## Learn more diff --git a/docs/advanced-features/static-html-export.md b/docs/advanced-features/static-html-export.md index a454af88b26b4..323f0f2cafdbc 100644 --- a/docs/advanced-features/static-html-export.md +++ b/docs/advanced-features/static-html-export.md @@ -11,27 +11,66 @@ description: Export your Next.js app to static HTML, and run it standalone witho -`next export` allows you to export your Next.js application to static HTML, which can render without the need of a Node.js server. It is recommended to only use `next export` if you don't need any of the [unsupported features](#unsupported-features) requiring a server. +Next.js can be used to generate static applications, including using React in the browser without the need for a Node.js server. -If you're looking to build a hybrid site where only _some_ pages are prerendered to static HTML, Next.js already does that automatically. Learn more about [Automatic Static Optimization](/docs/advanced-features/automatic-static-optimization.md) and [Incremental Static Regeneration](/docs/basic-features/data-fetching/incremental-static-regeneration.md). +The core of Next.js has been designed to enable starting as a static site (or Single-Page Application), if desired, and later upgrade to use powerful, dynamic features that require a server. For example, [Incremental Static Regeneration](/docs/basic-features/data-fetching/incremental-static-regeneration.md), [Internationalized Routing](/docs/advanced-features/i18n-routing.md), [and more](#unsupported-features). -## `next export` +Since Next.js supports this static export, it can be deployed and hosted on any web server that can serve HTML/CSS/JS static assets. -Update your build script in `package.json` to use `next export`: +## Usage -```json -"scripts": { - "build": "next build && next export" +Update your [`next.config.js`](/docs/api-reference/next.config.js/introduction.md) file to include `output: 'export'` like the following: + +```js +/** + * @type {import('next').NextConfig} + */ +const nextConfig = { + output: 'export', } + +module.exports = nextConfig ``` -Running `npm run build` will generate an `out` directory. +Then run `next build` to generate an `out` directory containing the HTML/CSS/JS static assets. -`next export` builds an HTML version of your app. During `next build`, [`getStaticProps`](/docs/basic-features/data-fetching/get-static-props.md) and [`getStaticPaths`](/docs/basic-features/data-fetching/get-static-paths.md) will generate an HTML file for each page in your `pages` directory (or more for [dynamic routes](/docs/routing/dynamic-routes.md)). Then, `next export` will copy the already exported files into the correct directory. `getInitialProps` will generate the HTML files during `next export` instead of `next build`. +You can utilize [`getStaticProps`](/docs/basic-features/data-fetching/get-static-props.md) and [`getStaticPaths`](/docs/basic-features/data-fetching/get-static-paths.md) to generate an HTML file for each page in your `pages` directory (or more for [dynamic routes](/docs/routing/dynamic-routes.md)). + +If you want to change the output directory, you can configure `distDir` like the following: + +```js +/** + * @type {import('next').NextConfig} + */ +const nextConfig = { + output: 'export', + distDir: 'dist', +} + +module.exports = nextConfig +``` + +In this example, `next build` will generate a `dist` directory containing the HTML/CSS/JS static assets. + +Learn more about [Setting a custom build directory](/docs/api-reference/next.config.js/setting-a-custom-build-directory.md). + +If you want to change the output directory structure to always include a trailing slash, you can configure `trailingSlash` like the following: + +```js +/** + * @type {import('next').NextConfig} + */ +const nextConfig = { + output: 'export', + trailingSlash: true, +} -For more advanced scenarios, you can define a parameter called [`exportPathMap`](/docs/api-reference/next.config.js/exportPathMap.md) in your [`next.config.js`](/docs/api-reference/next.config.js/introduction.md) file to configure exactly which pages will be generated. +module.exports = nextConfig +``` + +This will change links so that `href="/about"` will instead be `href="/about/"`. It will also change the output so that `out/about.html` will instead emit `out/about/index.html`. -> **Warning**: Using `exportPathMap` for defining routes with any `getStaticPaths` powered page is now ignored and gets overridden. We recommend not to use them together. +Learn more about [Trailing Slash](/docs/api-reference/next.config.js/trailing-slash.md). ## Supported Features @@ -59,7 +98,8 @@ Features that require a Node.js server, or dynamic logic that cannot be computed - [Headers](/docs/api-reference/next.config.js/headers.md) - [Middleware](/docs/middleware.md) - [Incremental Static Regeneration](/docs/basic-features/data-fetching/incremental-static-regeneration.md) -- [`fallback: true`](/docs/api-reference/data-fetching/get-static-paths.md#fallback-true) +- [`getStaticPaths` with `fallback: true`](/docs/api-reference/data-fetching/get-static-paths.md#fallback-true) +- [`getStaticPaths` with `fallback: 'blocking'`](/docs/api-reference/data-fetching/get-static-paths.md#fallback-blocking) - [`getServerSideProps`](/docs/basic-features/data-fetching/get-server-side-props.md) ### `getInitialProps` @@ -72,3 +112,23 @@ It's possible to use the [`getInitialProps`](/docs/api-reference/data-fetching/g - `getInitialProps` should fetch from an API and cannot use Node.js-specific libraries or the file system like `getStaticProps` can. We recommend migrating towards `getStaticProps` over `getInitialProps` whenever possible. + +## next export + +> **Warning**: "next export" is deprecated since Next.js 13.3 in favor of "output: 'export'" configuration. + +In versions of Next.js prior to 13.3, there was no configuration option in next.config.js and instead there was a separate command for `next export`. + +This could be used by updating your `package.json` file to include `next export` like the following: + +```json +"scripts": { + "build": "next build && next export" +} +``` + +Running `npm run build` will generate an `out` directory. + +`next export` builds an HTML version of your app. During `next build`, [`getStaticProps`](/docs/basic-features/data-fetching/get-static-props.md) and [`getStaticPaths`](/docs/basic-features/data-fetching/get-static-paths.md) will generate an HTML file for each page in your `pages` directory (or more for [dynamic routes](/docs/routing/dynamic-routes.md)). Then, `next export` will copy the already exported files into the correct directory. `getInitialProps` will generate the HTML files during `next export` instead of `next build`. + +> **Warning**: Using [`exportPathMap`](/docs/api-reference/next.config.js/exportPathMap.md) is deprecated and is overridden by `getStaticPaths` inside `pages`. We recommend not to use them together. diff --git a/docs/advanced-features/turbopack.md b/docs/advanced-features/turbopack.md index faea6ce6c656a..b3bc591718506 100644 --- a/docs/advanced-features/turbopack.md +++ b/docs/advanced-features/turbopack.md @@ -2,7 +2,7 @@ description: Turbopack, an incremental bundler built with Rust, can be used with Next.js 13 using the --turbo flag for faster local development. --- -# Turbopack (alpha) +# Turbopack (beta) [Turbopack](https://turbo.build/pack) is an incremental bundler optimized for JavaScript and TypeScript, written in Rust, and built into Next.js 13. diff --git a/docs/advanced-features/using-mdx.md b/docs/advanced-features/using-mdx.md index 669f57788cb54..51bf516bd9fd7 100644 --- a/docs/advanced-features/using-mdx.md +++ b/docs/advanced-features/using-mdx.md @@ -191,7 +191,7 @@ import Image from 'next/image' import { Heading, InlineCode, Pre, Table, Text } from 'my-components' const ResponsiveImage = (props) => ( - {props.alt} + {props.alt} ) const components = { diff --git a/docs/api-reference/cli.md b/docs/api-reference/cli.md index 208d7c9383b0a..5b4b3ab7d6f6d 100644 --- a/docs/api-reference/cli.md +++ b/docs/api-reference/cli.md @@ -39,7 +39,7 @@ NODE_OPTIONS='-r esm' next NODE_OPTIONS='--inspect' next ``` -> Note: Running `next` without a command is the same as running `next dev` +> **Note**: Running `next` without a command is the same as running `next dev` ## Build @@ -82,7 +82,7 @@ Or using the `PORT` environment variable: PORT=4000 npx next dev ``` -> Note: `PORT` can not be set in `.env` as booting up the HTTP server happens before any other code is initialized. +> **Note**: `PORT` cannot be set in `.env` as booting up the HTTP server happens before any other code is initialized. You can also set the hostname to be different from the default of `0.0.0.0`, this can be useful for making the application available for other devices on the network. The default hostname can be changed with `-H`, like so: @@ -106,7 +106,9 @@ Or using the `PORT` environment variable: PORT=4000 npx next start ``` -> Note: `PORT` can not be set in `.env` as booting up the HTTP server happens before any other code is initialized. +> **Note**: `PORT` cannot be set in `.env` as booting up the HTTP server happens before any other code is initialized. + +> **Note**: `next start` cannot be used with `output: 'standalone'` or `output: 'export'`. ### Keep Alive Timeout diff --git a/docs/api-reference/create-next-app.md b/docs/api-reference/create-next-app.md index 4d50be1b767a1..e938197a52de2 100644 --- a/docs/api-reference/create-next-app.md +++ b/docs/api-reference/create-next-app.md @@ -45,13 +45,21 @@ Options: Initialize as a JavaScript project. + --tailwind + + Initialize with Tailwind CSS config. (default) + + --no-tailwind + + Initialize without Tailwind CSS config. + --eslint - Initialize with eslint config. + Initialize with ESLint config. - --experimental-app + --app - Initialize as a `app/` directory project. + Initialize as an App Router project. --src-dir @@ -69,6 +77,10 @@ Options: Explicitly tell the CLI to bootstrap the app using pnpm + --use-yarn + + Explicitly tell the CLI to bootstrap the app using Yarn + -e, --example [name]|[github-url] An example to bootstrap the app with. You can use an example name diff --git a/docs/api-reference/data-fetching/get-initial-props.md b/docs/api-reference/data-fetching/get-initial-props.md index 5bf23570dd175..8c12807e07db5 100644 --- a/docs/api-reference/data-fetching/get-initial-props.md +++ b/docs/api-reference/data-fetching/get-initial-props.md @@ -70,7 +70,7 @@ For the initial page load, `getInitialProps` will run on the server only. `getIn - `getInitialProps` can **not** be used in children components, only in the default export of every page - If you are using server-side only modules inside `getInitialProps`, make sure to [import them properly](https://arunoda.me/blog/ssr-and-server-only-modules), otherwise it'll slow down your app -> Note that irrespective of rendering type, any `props` will be passed to the page component and can be viewed on the client-side in the initial HTML. This is to allow the page to be [hydrated](https://reactjs.org/docs/react-dom.html#hydrate) correctly. Make sure that you don't pass any sensitive information that shouldn't be available on the client in `props`. +> Note that irrespective of rendering type, any `props` will be passed to the page component and can be viewed on the client-side in the initial HTML. This is to allow the page to be [hydrated](https://react.dev/reference/react-dom/hydrate) correctly. Make sure that you don't pass any sensitive information that shouldn't be available on the client in `props`. ## TypeScript diff --git a/docs/api-reference/data-fetching/get-static-paths.md b/docs/api-reference/data-fetching/get-static-paths.md index c72851cdb63b5..131003f793ae6 100644 --- a/docs/api-reference/data-fetching/get-static-paths.md +++ b/docs/api-reference/data-fetching/get-static-paths.md @@ -126,7 +126,7 @@ If `fallback` is `true`, then the behavior of `getStaticProps` changes in the fo - When complete, the browser receives the `JSON` for the generated path. This will be used to automatically render the page with the required props. From the user’s perspective, the page will be swapped from the fallback page to the full page. - At the same time, Next.js adds this path to the list of pre-rendered pages. Subsequent requests to the same path will serve the generated page, like other pages pre-rendered at build time. -> **Note:** `fallback: true` is not supported when using [`next export`](/docs/advanced-features/static-html-export.md). +> **Note**: `fallback: true` is not supported when using [`output: 'export'`](/docs/advanced-features/static-html-export.md). #### When is `fallback: true` useful? @@ -153,7 +153,7 @@ If `fallback` is `'blocking'`, new paths not returned by `getStaticPaths` will w `fallback: 'blocking'` will not _update_ generated pages by default. To update generated pages, use [Incremental Static Regeneration](/docs/basic-features/data-fetching/incremental-static-regeneration.md) in conjunction with `fallback: 'blocking'`. -> **Note:** `fallback: 'blocking'` is not supported when using [`next export`](/docs/advanced-features/static-html-export.md). +> **Note**: `fallback: 'blocking'` is not supported when using [`output: 'export'`](/docs/advanced-features/static-html-export.md). ### Fallback pages diff --git a/docs/api-reference/edge-runtime.md b/docs/api-reference/edge-runtime.md index ed0685f52637e..ee58486080765 100644 --- a/docs/api-reference/edge-runtime.md +++ b/docs/api-reference/edge-runtime.md @@ -126,10 +126,6 @@ The Edge Runtime supports the following web standard APIs: | [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) | Represents a collection of objects in which each object may occur only once | | [`WebAssembly`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly) | Provides access to WebAssembly | -## Next.js Specific Polyfills - -- [`AsyncLocalStorage`](https://nodejs.org/api/async_context.html#class-asynclocalstorage) - ## Environment Variables You can use `process.env` to access [Environment Variables](/docs/basic-features/environment-variables.md) for both `next dev` and `next build`. @@ -143,11 +139,25 @@ console.log(process.env.TEST_VARIABLE) // value ``` +## Compatible Node.js Modules + +The following modules can be imported with and without the `node:` prefix when using the `import` statement: + +| Module | Description | +| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`async_hooks`](https://nodejs.org/api/async_hooks.html) | Manage asynchronous resources lifecycles with `AsyncLocalStorage`. Supports the [WinterCG subset](https://github.com/wintercg/proposal-common-minimum-api/blob/main/asynclocalstorage.md) of APIs | +| [`events`](https://nodejs.org/api/events.html) | Facilitate event-driven programming with custom event emitters and listeners. This API is fully supported | +| [`buffer`](https://nodejs.org/api/buffer.html) | Efficiently manipulate binary data using fixed-size, raw memory allocations with `Buffer`. Every primitive compatible with `Uint8Array` accepts `Buffer` too | +| [`assert`](https://nodejs.org/api/assert.html) | Provide a set of assertion functions for verifying invariants in your code | +| [`util`](https://nodejs.org/api/util.html) | Offer various utility functions where we include `promisify`/`callbackify` and `types` | + +Also, `Buffer` and `AsyncLocalStorage` are globally exposed to maximize compatibility with existing Node.js nodules. + ## Unsupported APIs The Edge Runtime has some restrictions including: -- Native Node.js APIs **are not supported**. For example, you can't read or write to the filesystem +- Some Node.js APIs other than the ones listed above **are not supported**. For example, you can't read or write to the filesystem - `node_modules` _can_ be used, as long as they implement ES Modules and do not use native Node.js APIs - Calling `require` directly is **not allowed**. Use ES Modules instead diff --git a/docs/api-reference/next.config.js/basepath.md b/docs/api-reference/next.config.js/basepath.md index 0dcf2c669c78c..cee815847e366 100644 --- a/docs/api-reference/next.config.js/basepath.md +++ b/docs/api-reference/next.config.js/basepath.md @@ -23,7 +23,7 @@ module.exports = { } ``` -Note: this value must be set at build time and can not be changed without re-building as the value is inlined in the client-side bundles. +> **Note**: This value must be set at build time and cannot be changed without re-building as the value is inlined in the client-side bundles. ## Links diff --git a/docs/api-reference/next.config.js/build-indicator.md b/docs/api-reference/next.config.js/build-indicator.md index cccaa3d4bfad6..ebd9c0626552b 100644 --- a/docs/api-reference/next.config.js/build-indicator.md +++ b/docs/api-reference/next.config.js/build-indicator.md @@ -6,7 +6,7 @@ description: In development mode, pages include an indicator to let you know if When you edit your code, and Next.js is compiling the application, a compilation indicator appears in the bottom right corner of the page. -> **Note:** This indicator is only present in development mode and will not appear when building and running the app in production mode. +> **Note**: This indicator is only present in development mode and will not appear when building and running the app in production mode. In some cases this indicator can be misplaced on your page, for example, when conflicting with a chat launcher. To change its position, open `next.config.js` and set the `buildActivityPosition` in the `devIndicators` object to `bottom-right` (default), `bottom-left`, `top-right` or `top-left`: diff --git a/docs/api-reference/next.config.js/custom-image-loader-config.md b/docs/api-reference/next.config.js/custom-image-loader-config.md new file mode 100644 index 0000000000000..2b9c318ee7ca1 --- /dev/null +++ b/docs/api-reference/next.config.js/custom-image-loader-config.md @@ -0,0 +1,158 @@ +--- +description: Custom configuration for the next/image loader +--- + +# Custom Image Loader Configuration + +If you want to use a cloud provider to optimize images instead of using the Next.js built-in Image Optimization API, you can configure `next.config.js` with the following: + +```js +module.exports = { + images: { + loader: 'custom', + loaderFile: './my/image/loader.js', + }, +} +``` + +This `loaderFile` must point to a file relative to the root of your Next.js application. The file must export a default function that returns a string, for example: + +```js +export default function myImageLoader({ src, width, quality }) { + return `https://example.com/${src}?w=${width}&q=${quality || 75}` +} +``` + +Alternatively, you can use the [`loader` prop](/docs/api-reference/next/image.md#loader) to pass the function to each instance of `next/image`. + +## Example Loader Configuration + +- [Akamai](#akamai) +- [Cloudinary](#cloudinary) +- [Cloudflare](#cloudflare) +- [Contentful](#contentful) +- [Fastly](#fastly) +- [Gumlet](#gumlet) +- [ImageEngine](#imageengine) +- [Imgix](#imgix) +- [Thumbor](#thumbor) + +### Akamai + +```js +// Docs: https://techdocs.akamai.com/ivm/reference/test-images-on-demand +export default function akamaiLoader({ src, width, quality }) { + return `https://example.com/${src}?imwidth=${width}` +} +``` + +### Cloudinary + +```js +// Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit,q_auto/turtles.jpg +export default function cloudinaryLoader({ src, width, quality }) { + const params = ['f_auto', 'c_limit', `w_${width}`, `q_${quality || 'auto'}`] + return `https://example.com/${params.join(',')}${src}` +} +``` + +### Cloudflare + +```js +// Docs: https://developers.cloudflare.com/images/url-format +export default function cloudflareLoader({ src, width, quality }) { + const params = [`width=${width}`, `quality=${quality || 75}`, 'format=auto'] + return `https://example.com/cdn-cgi/image/${params.join(',')}/${src}` +} +``` + +### Contentful + +```js +// Docs: https://www.contentful.com/developers/docs/references/images-api/ +export default function contentfulLoader({ src, quality, width }) { + const url = new URL(`https://example.com${src}`) + url.searchParams.set('fm', 'webp') + url.searchParams.set('w', width.toString()) + url.searchParams.set('q', quality.toString() || '75') + return url.href +} +``` + +## Fastly + +```js +// Docs: https://developer.fastly.com/reference/io/ +export default function fastlyLoader({ src, width, quality }) { + const url = new URL(`https://example.com${src}`) + url.searchParams.set('auto', 'webp') + url.searchParams.set('width', width.toString()) + url.searchParams.set('quality', quality.toString() || '75') + return url.href +} +``` + +## Gumlet + +```js +// Docs: https://docs.gumlet.com/reference/image-transform-size +export default function gumletLoader({ src, width, quality }) { + const url = new URL(`https://example.com${src}`) + url.searchParams.set('format', 'auto') + url.searchParams.set('w', width.toString()) + url.searchParams.set('q', quality.toString() || '75') + return url.href +} +``` + +### ImageEngine + +```js +// Docs: https://support.imageengine.io/hc/en-us/articles/360058880672-Directives +export default function imageengineLoader({ src, width, quality }) { + const compression = 100 - (quality || 50) + const params = [`w_${width}`, `cmpr_${compression}`)] + return `https://example.com${src}?imgeng=/${params.join('/')` +} +``` + +### Imgix + +```js +// Demo: https://static.imgix.net/daisy.png?format=auto&fit=max&w=300 +export default function imgixLoader({ src, width, quality }) { + const url = new URL(`https://example.com${src}`) + const params = url.searchParams + params.set('auto', params.getAll('auto').join(',') || 'format') + params.set('fit', params.get('fit') || 'max') + params.set('w', params.get('w') || width.toString()) + params.set('q', quality.toString() || '50') + return url.href +} +``` + +### Thumbor + +```js +// Docs: https://thumbor.readthedocs.io/en/latest/ +export default function thumborLoader({ src, width, quality }) { + const params = [`${width}x0`, `filters:quality(${quality || 75})`] + return `https://example.com${params.join('/')}${src}` +} +``` + +## Related + + + + diff --git a/docs/api-reference/next.config.js/custom-webpack-config.md b/docs/api-reference/next.config.js/custom-webpack-config.md index b26aae2403772..246d58762b4bc 100644 --- a/docs/api-reference/next.config.js/custom-webpack-config.md +++ b/docs/api-reference/next.config.js/custom-webpack-config.md @@ -4,7 +4,7 @@ description: Extend the default webpack config added by Next.js. # Custom Webpack Config -> Note: changes to webpack config are not covered by semver so proceed at your own risk +> **Note**: changes to webpack config are not covered by semver so proceed at your own risk Before continuing to add custom webpack configuration to your application make sure Next.js doesn't already support your use-case: diff --git a/docs/api-reference/next.config.js/exportPathMap.md b/docs/api-reference/next.config.js/exportPathMap.md index 4180363e6dcfd..b944e0314438f 100644 --- a/docs/api-reference/next.config.js/exportPathMap.md +++ b/docs/api-reference/next.config.js/exportPathMap.md @@ -4,7 +4,7 @@ description: Customize the pages that will be exported as HTML files when using # exportPathMap -> This feature is exclusive to `next export`. Please refer to [Static HTML export](/docs/advanced-features/static-html-export.md) if you want to learn more about it. +> This feature is exclusive to `next export` and currently **deprecated** in favor of `getStaticPaths` with `pages` or `generateStaticParams` with `app`.
    Examples @@ -40,7 +40,7 @@ module.exports = { } ``` -> Note: the `query` field in `exportPathMap` cannot be used with [automatically statically optimized pages](/docs/advanced-features/automatic-static-optimization) or [`getStaticProps` pages](/docs/basic-features/data-fetching/get-static-props.md) as they are rendered to HTML files at build-time and additional query information cannot be provided during `next export`. +> **Note**: the `query` field in `exportPathMap` cannot be used with [automatically statically optimized pages](/docs/advanced-features/automatic-static-optimization) or [`getStaticProps` pages](/docs/basic-features/data-fetching/get-static-props.md) as they are rendered to HTML files at build-time and additional query information cannot be provided during `next export`. The pages will then be exported as HTML files, for example, `/about` will become `/about.html`. @@ -79,7 +79,7 @@ module.exports = { next export -o outdir ``` -> **Warning**: Using `exportPathMap` for defining routes with any `getStaticPaths` powered page is now ignored and gets overridden. We recommend not to use them together. +> **Warning**: Using `exportPathMap` is deprecated and is overridden by `getStaticPaths` inside `pages`. We recommend not to use them together. ## Related diff --git a/docs/api-reference/next.config.js/headers.md b/docs/api-reference/next.config.js/headers.md index 03b6f73e9ceb2..9f6c42329fdff 100644 --- a/docs/api-reference/next.config.js/headers.md +++ b/docs/api-reference/next.config.js/headers.md @@ -416,6 +416,6 @@ For more information, we recommend the following sections: diff --git a/docs/api-reference/next.config.js/react-strict-mode.md b/docs/api-reference/next.config.js/react-strict-mode.md index b844bf84506fd..cc4d795450f94 100644 --- a/docs/api-reference/next.config.js/react-strict-mode.md +++ b/docs/api-reference/next.config.js/react-strict-mode.md @@ -6,7 +6,7 @@ description: The complete Next.js runtime is now Strict Mode-compliant, learn ho > **Suggested**: We strongly suggest you enable Strict Mode in your Next.js application to better prepare your application for the future of React. -React's [Strict Mode](https://reactjs.org/docs/strict-mode.html) is a development mode only feature for highlighting potential problems in an application. It helps to identify unsafe lifecycles, legacy API usage, and a number of other features. +React's [Strict Mode](https://react.dev/reference/react/StrictMode) is a development mode only feature for highlighting potential problems in an application. It helps to identify unsafe lifecycles, legacy API usage, and a number of other features. The Next.js runtime is Strict Mode-compliant. To opt-in to Strict Mode, configure the following option in your `next.config.js`: diff --git a/docs/api-reference/next.config.js/redirects.md b/docs/api-reference/next.config.js/redirects.md index 68564f6de1088..f89e333e7a5b5 100644 --- a/docs/api-reference/next.config.js/redirects.md +++ b/docs/api-reference/next.config.js/redirects.md @@ -311,7 +311,7 @@ module.exports = { } ``` -In some rare cases, you might need to assign a custom status code for older HTTP Clients to properly redirect. In these cases, you can use the `statusCode` property instead of the `permanent` property, but not both. Note: to ensure IE11 compatibility a `Refresh` header is automatically added for the 308 status code. +In some rare cases, you might need to assign a custom status code for older HTTP Clients to properly redirect. In these cases, you can use the `statusCode` property instead of the `permanent` property, but not both. To to ensure IE11 compatibility, a `Refresh` header is automatically added for the 308 status code. ## Other Redirects diff --git a/docs/api-reference/next.config.js/rewrites.md b/docs/api-reference/next.config.js/rewrites.md index 9a9d50e3bec74..9885bab7e4eab 100644 --- a/docs/api-reference/next.config.js/rewrites.md +++ b/docs/api-reference/next.config.js/rewrites.md @@ -89,7 +89,7 @@ module.exports = { } ``` -Note: rewrites in `beforeFiles` do not check the filesystem/dynamic routes immediately after matching a source, they continue until all `beforeFiles` have been checked. +> **Note**: rewrites in `beforeFiles` do not check the filesystem/dynamic routes immediately after matching a source, they continue until all `beforeFiles` have been checked. The order Next.js routes are checked is: @@ -150,7 +150,7 @@ module.exports = { } ``` -Note: for static pages from the [Automatic Static Optimization](/docs/advanced-features/automatic-static-optimization.md) or [prerendering](/docs/basic-features/data-fetching/get-static-props.md) params from rewrites will be parsed on the client after hydration and provided in the query. +> **Note**: Static pages from [Automatic Static Optimization](/docs/advanced-features/automatic-static-optimization.md) or [prerendering](/docs/basic-features/data-fetching/get-static-props.md) params from rewrites will be parsed on the client after hydration and provided in the query. ## Path Matching diff --git a/docs/api-reference/next.config.js/runtime-configuration.md b/docs/api-reference/next.config.js/runtime-configuration.md index 1f246250ee291..3e4a042ccd08f 100644 --- a/docs/api-reference/next.config.js/runtime-configuration.md +++ b/docs/api-reference/next.config.js/runtime-configuration.md @@ -4,7 +4,7 @@ description: Add client and server runtime configuration to your Next.js app. # Runtime Configuration -> Note: This feature is considered legacy and does not work with [Automatic Static Optimization](/docs/advanced-features/automatic-static-optimization.md), [Output File Tracing](/docs/advanced-features/output-file-tracing.md#automatically-copying-traced-files), or [React Server Components](/docs/advanced-features/react-18/server-components.md). Please use [environment variables](/docs/basic-features/environment-variables.md) instead in order to avoid initialization overhead. +> **Note**: This feature is considered legacy and does not work with [Automatic Static Optimization](/docs/advanced-features/automatic-static-optimization.md), [Output File Tracing](/docs/advanced-features/output-file-tracing.md#automatically-copying-traced-files), or [React Server Components](/docs/advanced-features/react-18/server-components.md). Please use [environment variables](/docs/basic-features/environment-variables.md) instead in order to avoid initialization overhead. To add runtime configuration to your app, open `next.config.js` and add the `publicRuntimeConfig` and `serverRuntimeConfig` configs: diff --git a/docs/api-reference/next.config.js/static-optimization-indicator.md b/docs/api-reference/next.config.js/static-optimization-indicator.md index f8c512d388a44..3615d665065a4 100644 --- a/docs/api-reference/next.config.js/static-optimization-indicator.md +++ b/docs/api-reference/next.config.js/static-optimization-indicator.md @@ -4,7 +4,7 @@ description: Optimized pages include an indicator to let you know if it's being # Static Optimization Indicator -> **Note:** This indicator was removed in Next.js version 10.0.1. We recommend upgrading to the latest version of Next.js. +> **Note**: This indicator was removed in Next.js version 10.0.1. We recommend upgrading to the latest version of Next.js. When a page qualifies for [Automatic Static Optimization](/docs/advanced-features/automatic-static-optimization.md) we show an indicator to let you know. diff --git a/docs/api-reference/next.config.js/turbopack.md b/docs/api-reference/next.config.js/turbopack.md index dad882dcea556..b8a325ee1f3d8 100644 --- a/docs/api-reference/next.config.js/turbopack.md +++ b/docs/api-reference/next.config.js/turbopack.md @@ -27,7 +27,7 @@ module.exports = { }, ], // Option-less format - '.mdx': '@mdx-js/loader', + '.mdx': ['@mdx-js/loader'], }, }, }, diff --git a/docs/api-reference/next/amp.md b/docs/api-reference/next/amp.md index 6cc212791168d..f614b5853400d 100644 --- a/docs/api-reference/next/amp.md +++ b/docs/api-reference/next/amp.md @@ -84,4 +84,4 @@ The page above is a hybrid AMP page, which means: - The page is rendered as traditional HTML (default) and AMP HTML (by adding `?amp=1` to the URL) - The AMP version of the page only has valid optimizations applied with AMP Optimizer so that it is indexable by search-engines -The page uses `useAmp` to differentiate between modes, it's a [React Hook](https://reactjs.org/docs/hooks-intro.html) that returns `true` if the page is using AMP, and `false` otherwise. +The page uses `useAmp` to differentiate between modes, it's a [React Hook](https://react.dev/reference/react) that returns `true` if the page is using AMP, and `false` otherwise. diff --git a/docs/api-reference/next/font.md b/docs/api-reference/next/font.md index c1718e5360b9c..5adf2b9745b8f 100644 --- a/docs/api-reference/next/font.md +++ b/docs/api-reference/next/font.md @@ -1,19 +1,20 @@ --- -description: Optimizing loading web fonts with the built-in `@next/font` loaders. +description: Optimizing loading web fonts with the built-in `next/font` loaders. --- -# @next/font +# next/font
    Version History -| Version | Changes | -| --------- | ----------------------- | -| `v13.0.0` | `@next/font` was added. | +| Version | Changes | +| --------- | --------------------------------------------------------------------- | +| `v13.2.0` | `@next/font` renamed to `next/font`. Installation no longer required. | +| `v13.0.0` | `next/font` was added. |
    -This API reference will help you understand how to use `@next/font/google` and `@next/font/local`. For features and usage, please see the [Optimizing Fonts](/docs/basic-features/font-optimization.md) page. +This API reference will help you understand how to use `next/font/google` and `next/font/local`. For features and usage, please see the [Optimizing Fonts](/docs/basic-features/font-optimization.md) page. ### Font function arguments @@ -37,7 +38,7 @@ For usage, review [Google Fonts](/docs/basic-features/font-optimization.md#googl The path of the font file as a string or an array of objects (with type `Array<{path: string, weight?: string, style?: string}>`) relative to the directory where the font loader function is called. -Used in `@next/font/local` +Used in `next/font/local` - Required @@ -52,9 +53,9 @@ Examples: The font [`weight`](https://fonts.google.com/knowledge/glossary/weight) with the following possibilities: - A string with possible values of the weights available for the specific font or a range of values if it's a [variable](https://fonts.google.com/variablefonts) font -- An array of weight values if the font is not a [variable google font](https://fonts.google.com/variablefonts). It applies to `@next/font/google` only. +- An array of weight values if the font is not a [variable google font](https://fonts.google.com/variablefonts). It applies to `next/font/google` only. -Used in `@next/font/google` and `@next/font/local` +Used in `next/font/google` and `next/font/local` - Required if the font being used is **not** [variable](https://fonts.google.com/variablefonts) @@ -69,23 +70,23 @@ Examples: The font [`style`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style) with the following possibilities: - A string [value](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style#values) with default value of `'normal'` -- An array of style values if the font is not a [variable google font](https://fonts.google.com/variablefonts). It applies to `@next/font/google` only. +- An array of style values if the font is not a [variable google font](https://fonts.google.com/variablefonts). It applies to `next/font/google` only. -Used in `@next/font/google` and `@next/font/local` +Used in `next/font/google` and `next/font/local` - Optional Examples: -- `style: 'italic'`: A string - it can be `normal` or `italic` for `@next/font/google` -- `style: 'oblique'`: A string - it can take any value for `@next/font/local` but is expected to come from [standard font styles](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style) -- `style: ['italic','normal']`: An array of 2 values for `@next/font/google` - the values are from `normal` and `italic` +- `style: 'italic'`: A string - it can be `normal` or `italic` for `next/font/google` +- `style: 'oblique'`: A string - it can take any value for `next/font/local` but is expected to come from [standard font styles](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style) +- `style: ['italic','normal']`: An array of 2 values for `next/font/google` - the values are from `normal` and `italic` ### `subsets` The font [`subsets`](https://fonts.google.com/knowledge/glossary/subsetting) defined by an array of string values with the names of each subset you would like to be [preloaded](/docs/basic-features/font-optimization#specifying-a-subset). Fonts specified via `subsets` will have a link preload tag injected into the head when the [`preload`](/docs/api-reference/next/font.md#preload) option is true, which is the default. -Used in `@next/font/google` +Used in `next/font/google` - Optional @@ -97,7 +98,7 @@ Examples: Some variable fonts have extra `axes` that can be included. By default, only the font weight is included to keep the file size down. The possible values of `axes` depend on the specific font. -Used in `@next/font/google` +Used in `next/font/google` - Optional @@ -109,19 +110,19 @@ Examples: The font [`display`](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display) with possible string [values](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display#values) of `'auto'`, `'block'`, `'swap'`, `'fallback'` or `'optional'` with default value of `'swap'`. -Used in `@next/font/google` and `@next/font/local` +Used in `next/font/google` and `next/font/local` - Optional Examples: -- `display: 'swap'`: A string assigned to the `swap` value +- `display: 'optional'`: A string assigned to the `optional` value ### `preload` A boolean value that specifies whether the font should be [preloaded](/docs/basic-features/font-optimization#preloading) or not. The default is `true`. -Used in `@next/font/google` and `@next/font/local` +Used in `next/font/google` and `next/font/local` - Optional @@ -135,7 +136,7 @@ The fallback font to use if the font cannot be loaded. An array of strings of fa - Optional -Used in `@next/font/google` and `@next/font/local` +Used in `next/font/google` and `next/font/local` Examples: @@ -143,23 +144,23 @@ Examples: ### `adjustFontFallback` -- For `@next/font/google`: A boolean value that sets whether an automatic fallback font should be used to reduce [Cumulative Layout Shift](https://web.dev/cls/). The default is `true`. -- For `@next/font/local`: A string or boolean `false` value that sets whether an automatic fallback font should be used to reduce [Cumulative Layout Shift](https://web.dev/cls/). The possible values are `'Arial'`, `'Times New Roman'` or `false`. The default is `'Arial'`. +- For `next/font/google`: A boolean value that sets whether an automatic fallback font should be used to reduce [Cumulative Layout Shift](https://web.dev/cls/). The default is `true`. +- For `next/font/local`: A string or boolean `false` value that sets whether an automatic fallback font should be used to reduce [Cumulative Layout Shift](https://web.dev/cls/). The possible values are `'Arial'`, `'Times New Roman'` or `false`. The default is `'Arial'`. -Used in `@next/font/google` and `@next/font/local` +Used in `next/font/google` and `next/font/local` - Optional Examples: -- `adjustFontFallback: false`: for ``@next/font/google` -- `adjustFontFallback: 'Times New Roman'`: for `@next/font/local` +- `adjustFontFallback: false`: for ``next/font/google` +- `adjustFontFallback: 'Times New Roman'`: for `next/font/local` ### `variable` A string value to define the CSS variable name to be used if the style is applied with the [CSS variable method](#css-variables). -Used in `@next/font/google` and `@next/font/local` +Used in `next/font/google` and `next/font/local` - Optional @@ -171,7 +172,7 @@ Examples: An array of font face [descriptor](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face#descriptors) key-value pairs that define the generated `@font-face` further. -Used in `@next/font/local` +Used in `next/font/local` - Optional @@ -211,7 +212,7 @@ In addition to importing the font, also import the CSS file where the CSS variab ```js // pages/index.js -import { Inter } from '@next/font/google' +import { Inter } from 'next/font/google' import styles from '../styles/component.module.css' const inter = Inter({ @@ -251,8 +252,8 @@ Then, specify your font definitions as follows: ```ts // styles/fonts.ts -import { Inter, Lora, Source_Sans_Pro } from '@next/font/google'; -import localFont from '@next/font/local'; +import { Inter, Lora, Source_Sans_Pro } from 'next/font/google'; +import localFont from 'next/font/local'; // define your variable fonts const inter = Inter(); diff --git a/docs/api-reference/next/image.md b/docs/api-reference/next/image.md index f9418a3eea9b7..15f5be4d5f3c0 100644 --- a/docs/api-reference/next/image.md +++ b/docs/api-reference/next/image.md @@ -41,7 +41,7 @@ This `next/image` component uses browser native [lazy loading](https://caniuse.c ## Known Browser Bugs -- [Safari 15+](https://bugs.webkit.org/show_bug.cgi?id=243601) displays a gray border while loading. Possible solutions: +- [Safari 15 and 16](https://bugs.webkit.org/show_bug.cgi?id=243601) display a gray border while loading. Safari 16.4 [fixed this issue](https://webkit.org/blog/13966/webkit-features-in-safari-16-4/#:~:text=Now%20in%20Safari%2016.4%2C%20a%20gray%20line%20no%20longer%20appears%20to%20mark%20the%20space%20where%20a%20lazy%2Dloaded%20image%20will%20appear%20once%20it%E2%80%99s%20been%20loaded.). Possible solutions: - Use CSS `@supports (font: -apple-system-body) and (-webkit-appearance: none) { img[loading="lazy"] { clip-path: inset(0.6px) } }` - Use [`priority`](#priority) if the image is above the fold - [Firefox 67+](https://bugzilla.mozilla.org/show_bug.cgi?id=1556156) displays a white background while loading. Possible solutions: @@ -209,7 +209,7 @@ In some cases, you may need more advanced usage. The `` component optio ### style -Allows [passing CSS styles](https://reactjs.org/docs/dom-elements.html#style) to the underlying image element. +Allows [passing CSS styles](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style) to the underlying image element. Also keep in mind that the required `width` and `height` props can interact with your styling. If you use styling to modify an image's `width`, you must set the `height="auto"` style as well, or your image will be distorted. @@ -317,7 +317,7 @@ module.exports = { } ``` -> Note: The example above will ensure the `src` property of `next/image` must start with `https://example.com/account123/`. Any other protocol, hostname, port, or unmatched path will respond with 400 Bad Request. +> **Note**: The example above will ensure the `src` property of `next/image` must start with `https://example.com/account123/`. Any other protocol, hostname, port, or unmatched path will respond with 400 Bad Request. Below is another example of the `remotePatterns` property in the `next.config.js` file: @@ -334,7 +334,7 @@ module.exports = { } ``` -> Note: The example above will ensure the `src` property of `next/image` must start with `https://img1.example.com` or `https://me.avatar.example.com` or any number of subdomains. Any other protocol or unmatched hostname will respond with 400 Bad Request. +> **Note**: The example above will ensure the `src` property of `next/image` must start with `https://img1.example.com` or `https://me.avatar.example.com` or any number of subdomains. Any other protocol or unmatched hostname will respond with 400 Bad Request. Wildcard patterns can be used for both `pathname` and `hostname` and have the following syntax: @@ -345,7 +345,7 @@ The `**` syntax does not work in the middle of the pattern. ### Domains -> Note: We recommend using [`remotePatterns`](#remote-patterns) instead so you can restrict protocol and pathname. +> **Note**: We recommend using [`remotePatterns`](#remote-patterns) instead so you can restrict protocol and pathname. Similar to [`remotePatterns`](#remote-patterns), the `domains` configuration can be used to provide a list of allowed hostnames for external images. @@ -384,6 +384,10 @@ export default function myImageLoader({ src, width, quality }) { Alternatively, you can use the [`loader` prop](#loader) to configure each instance of `next/image`. +Examples: + +- [Custom Image Loader Configuration](/docs/api-reference/next.config.js/custom-image-loader-config.md#example-loader-configuration) + ## Advanced The following configuration is for advanced use cases and is usually not necessary. If you choose to configure the properties below, you will override any changes to the Next.js defaults in future updates. @@ -444,9 +448,9 @@ module.exports = { } ``` -> Note: AVIF generally takes 20% longer to encode but it compresses 20% smaller compared to WebP. This means that the first time an image is requested, it will typically be slower and then subsequent requests that are cached will be faster. +> **Note**: AVIF generally takes 20% longer to encode but it compresses 20% smaller compared to WebP. This means that the first time an image is requested, it will typically be slower and then subsequent requests that are cached will be faster. -> Note: If you self-host with a Proxy/CDN in front of Next.js, you must configure the Proxy to forward the `Accept` header. +> **Note**: If you self-host with a Proxy/CDN in front of Next.js, you must configure the Proxy to forward the `Accept` header. ## Caching Behavior diff --git a/docs/api-reference/next/legacy/image.md b/docs/api-reference/next/legacy/image.md index f5ef5d2468b13..864d7429361fe 100644 --- a/docs/api-reference/next/legacy/image.md +++ b/docs/api-reference/next/legacy/image.md @@ -203,7 +203,7 @@ In some cases, you may need more advanced usage. The `` component optio ### style -Allows [passing CSS styles](https://reactjs.org/docs/dom-elements.html#style) to the underlying image element. +Allows [passing CSS styles](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style) to the underlying image element. Note that all `layout` modes apply their own styles to the image element, and these automatic styles take precedence over the `style` prop. @@ -274,9 +274,9 @@ If the image is nested in a scrollable parent element other than the root docume ### lazyRoot -A React [Ref](https://reactjs.org/docs/refs-and-the-dom.html) pointing to the scrollable parent element. Defaults to `null` (the document viewport). +A React [Ref](https://react.dev/learn/referencing-values-with-refs) pointing to the scrollable parent element. Defaults to `null` (the document viewport). -The Ref must point to a DOM element or a React component that [forwards the Ref](https://reactjs.org/docs/forwarding-refs.html) to the underlying DOM element. +The Ref must point to a DOM element or a React component that [forwards the Ref](https://react.dev/reference/react/forwardRef) to the underlying DOM element. **Example pointing to a DOM element** @@ -379,7 +379,7 @@ module.exports = { } ``` -> Note: The example above will ensure the `src` property of `next/legacy/image` must start with `https://example.com/account123/`. Any other protocol, hostname, port, or unmatched path will respond with 400 Bad Request. +> **Note**: The example above will ensure the `src` property of `next/legacy/image` must start with `https://example.com/account123/`. Any other protocol, hostname, port, or unmatched path will respond with 400 Bad Request. Below is another example of the `remotePatterns` property in the `next.config.js` file: @@ -396,7 +396,7 @@ module.exports = { } ``` -> Note: The example above will ensure the `src` property of `next/legacy/image` must start with `https://img1.example.com` or `https://me.avatar.example.com` or any number of subdomains. Any other protocol or unmatched hostname will respond with 400 Bad Request. +> **Note**: The example above will ensure the `src` property of `next/legacy/image` must start with `https://img1.example.com` or `https://me.avatar.example.com` or any number of subdomains. Any other protocol or unmatched hostname will respond with 400 Bad Request. Wildcard patterns can be used for both `pathname` and `hostname` and have the following syntax: @@ -407,7 +407,7 @@ The `**` syntax does not work in the middle of the pattern. ### Domains -> Note: We recommend using [`remotePatterns`](#remote-patterns) instead so you can restrict protocol and pathname. +> **Note**: We recommend using [`remotePatterns`](#remote-patterns) instead so you can restrict protocol and pathname. Similar to [`remotePatterns`](#remote-patterns), the `domains` configuration can be used to provide a list of allowed hostnames for external images. @@ -449,7 +449,7 @@ The following Image Optimization cloud providers are included: If you need a different provider, you can use the [`loader`](#loader) prop with `next/legacy/image`. -> Images can not be optimized at build time using [`next export`](/docs/advanced-features/static-html-export.md), only on-demand. To use `next/legacy/image` with `next export`, you will need to use a different loader than the default. [Read more in the discussion.](https://github.com/vercel/next.js/discussions/19065) +> Images can not be optimized at build time using [`output: 'export'`](/docs/advanced-features/static-html-export.md), only on-demand. To use `next/legacy/image` with `output: 'export'`, you will need to use a different loader than the default. [Read more in the discussion.](https://github.com/vercel/next.js/discussions/19065) > The `next/legacy/image` component's default loader uses [`squoosh`](https://www.npmjs.com/package/@squoosh/lib) because it is quick to install and suitable for a development environment. When using `next start` in your production environment, it is strongly recommended that you install [`sharp`](https://www.npmjs.com/package/sharp) by running `yarn add sharp` in your project directory. This is not necessary for Vercel deployments, as `sharp` is installed automatically. @@ -513,7 +513,7 @@ module.exports = { } ``` -> Note: AVIF generally takes 20% longer to encode but it compresses 20% smaller compared to WebP. This means that the first time an image is requested, it will typically be slower and then subsequent requests that are cached will be faster. +> **Note**: AVIF generally takes 20% longer to encode but it compresses 20% smaller compared to WebP. This means that the first time an image is requested, it will typically be slower and then subsequent requests that are cached will be faster. ## Caching Behavior diff --git a/docs/api-reference/next/link.md b/docs/api-reference/next/link.md index f2d791db173cd..62affa6d142e8 100644 --- a/docs/api-reference/next/link.md +++ b/docs/api-reference/next/link.md @@ -49,7 +49,7 @@ export default Home `Link` accepts the following props: - `href` - The path or URL to navigate to. This is the only required prop. It can also be an object, see [example here](/docs/api-reference/next/link.md#with-url-object) -- `as` - Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes). +- `as` - Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes) to see how it worked. When this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes). - [`legacyBehavior`](#if-the-child-is-a-tag) - Changes behavior so that child must be ``. Defaults to `false`. - [`passHref`](#if-the-child-is-a-custom-component-that-wraps-an-a-tag) - Forces `Link` to send the `href` property to its child. Defaults to `false` - `prefetch` - Prefetch the page in the background. Defaults to `true`. Any `` that is in the viewport (initially or through scroll) will be preloaded. Prefetch can be disabled by passing `prefetch={false}`. When `prefetch` is set to `false`, prefetching will still occur on hover. Pages using [Static Generation](/docs/basic-features/data-fetching/get-static-props.md) will preload `JSON` files with the data for faster page transitions. Prefetching is only enabled in production. @@ -58,7 +58,7 @@ export default Home - [`shallow`](/docs/routing/shallow-routing.md) - Update the path of the current page without rerunning [`getStaticProps`](/docs/basic-features/data-fetching/get-static-props.md), [`getServerSideProps`](/docs/basic-features/data-fetching/get-server-side-props.md) or [`getInitialProps`](/docs/api-reference/data-fetching/get-initial-props.md). Defaults to `false` - `locale` - The active locale is automatically prepended. `locale` allows for providing a different locale. When `false` `href` has to include the locale as the default behavior is disabled. -Note, when `legacyBehavior` is not set to `true`, all [`anchor`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a) tag properties can be passed to `next/link` as well such as, `className`, `onClick`, etc. +> **Note**: when `legacyBehavior` is not set to `true`, all [`anchor`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a) tag properties can be passed to `next/link` as well such as, `className`, `onClick`, etc. ## If the route has dynamic segments @@ -131,7 +131,7 @@ export default NavLink ## If the child is a functional component -If the child of `Link` is a functional component, in addition to using `passHref` and `legacyBehavior`, you must wrap the component in [`React.forwardRef`](https://reactjs.org/docs/react-api.html#reactforwardref): +If the child of `Link` is a functional component, in addition to using `passHref` and `legacyBehavior`, you must wrap the component in [`React.forwardRef`](https://react.dev/reference/react/forwardRef): ```jsx import Link from 'next/link' @@ -259,4 +259,4 @@ export default function Page() { } ``` -> **Note:** If you're using [Dynamic Routes](/docs/routing/dynamic-routes), you'll need to adapt your `as` and `href` props. For example, if you have a Dynamic Route like `/dashboard/[user]` that you want to present differently via middleware, you would write: `Profile`. +> **Note**: If you're using [Dynamic Routes](/docs/routing/dynamic-routes), you'll need to adapt your `as` and `href` props. For example, if you have a Dynamic Route like `/dashboard/[user]` that you want to present differently via middleware, you would write: `Profile`. diff --git a/docs/api-reference/next/router.md b/docs/api-reference/next/router.md index e1eda169752a5..b13316507987d 100644 --- a/docs/api-reference/next/router.md +++ b/docs/api-reference/next/router.md @@ -35,7 +35,7 @@ function ActiveLink({ children, href }) { export default ActiveLink ``` -> `useRouter` is a [React Hook](https://reactjs.org/docs/hooks-intro.html), meaning it cannot be used with classes. You can either use [withRouter](#withRouter) or wrap your class in a function component. +> `useRouter` is a [React Hook](https://react.dev/learn#using-hooks), meaning it cannot be used with classes. You can either use [withRouter](#withRouter) or wrap your class in a function component. ## `router` object @@ -73,7 +73,7 @@ router.push(url, as, options) ``` - `url`: `UrlObject | String` - The URL to navigate to (see [Node.JS URL module documentation](https://nodejs.org/api/url.html#legacy-urlobject) for `UrlObject` properties). -- `as`: `UrlObject | String` - Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes) +- `as`: `UrlObject | String` - Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes) to see how it worked. When this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://nextjs.org/docs/tag/v9.5.2/api-reference/next/link#dynamic-routes) - `options` - Optional object with the following configuration options: - `scroll` - Optional boolean, controls scrolling to the top of the page after navigation. Defaults to `true` - [`shallow`](/docs/routing/shallow-routing.md): Update the path of the current page without rerunning [`getStaticProps`](/docs/basic-features/data-fetching/get-static-props.md), [`getServerSideProps`](/docs/basic-features/data-fetching/get-server-side-props.md) or [`getInitialProps`](/docs/api-reference/data-fetching/get-initial-props.md). Defaults to `false` @@ -174,7 +174,7 @@ useEffect(() => { }, [router.query.slug]) ``` -2. Use a React `key` to [tell React to remount the component](https://reactjs.org/docs/lists-and-keys.html#keys). To do this for all pages, you can use a custom app: +2. Use a React `key` to [tell React to remount the component](https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key). To do this for all pages, you can use a custom app: ```jsx // pages/_app.js @@ -283,7 +283,7 @@ export default function Login() { useEffect(() => { // Prefetch the dashboard page router.prefetch('/dashboard') - }, []) + }, [router]) return (
    @@ -331,7 +331,7 @@ export default function Page() { return true }) - }, []) + }, [router]) return

    Welcome to the page

    } @@ -396,7 +396,7 @@ You can listen to different events happening inside the Next.js Router. Here's a - `hashChangeStart(url, { shallow })` - Fires when the hash will change but not the page - `hashChangeComplete(url, { shallow })` - Fires when the hash has changed but not the page -> **Note:** Here `url` is the URL shown in the browser, including the [`basePath`](/docs/api-reference/next.config.js/basepath.md). +> **Note**: Here `url` is the URL shown in the browser, including the [`basePath`](/docs/api-reference/next.config.js/basepath.md). #### Usage @@ -425,7 +425,7 @@ export default function MyApp({ Component, pageProps }) { return () => { router.events.off('routeChangeStart', handleRouteChange) } - }, []) + }, [router]) return } @@ -433,7 +433,7 @@ export default function MyApp({ Component, pageProps }) { > We use a [Custom App](/docs/advanced-features/custom-app.md) (`pages/_app.js`) for this example to subscribe to the event because it's not unmounted on page navigations, but you can subscribe to router events on any component in your application. -Router events should be registered when a component mounts ([useEffect](https://reactjs.org/docs/hooks-effect.html) or [componentDidMount](https://reactjs.org/docs/react-component.html#componentdidmount) / [componentWillUnmount](https://reactjs.org/docs/react-component.html#componentwillunmount)) or imperatively when an event happens. +Router events should be registered when a component mounts ([useEffect](https://react.dev/reference/react/useEffect) or [componentDidMount](https://react.dev/reference/react/Component#componentdidmount) / [componentWillUnmount](https://react.dev/reference/react/Component#componentwillunmount)) or imperatively when an event happens. If a route load is cancelled (for example, by clicking two links rapidly in succession), `routeChangeError` will fire. And the passed `err` will contain a `cancelled` property set to `true`, as in the following example: @@ -458,7 +458,7 @@ export default function MyApp({ Component, pageProps }) { return () => { router.events.off('routeChangeError', handleRouteChangeError) } - }, []) + }, [router]) return } diff --git a/docs/api-reference/next/script.md b/docs/api-reference/next/script.md index 2cf7c1d3d7e8b..2b58b55175df6 100644 --- a/docs/api-reference/next/script.md +++ b/docs/api-reference/next/script.md @@ -50,7 +50,7 @@ The ` ) + var iframeDocument = iframe.contentWindow.document + iframeDocument.open() + iframeDocument.close() + return iframe + }, + mutate: function mutate(iframe) { + iframe.style.visibility = 'hidden' + + var iframeDocument = iframe.contentWindow.document + var input = iframeDocument.createElement('input') + iframeDocument.body.appendChild(input) + return input + }, + validate: function validate(iframe) { + var iframeDocument = iframe.contentWindow.document + var focus = iframeDocument.querySelector('input') + return iframeDocument.activeElement === focus + }, +} + +var result = !platform.is.WEBKIT + +function focusInZeroDimensionObject() { + return result +} + +// Firefox allows *any* value and treats invalid values like tabindex="-1" +// @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054 +var focusInvalidTabindex = { + element: 'div', + mutate: function mutate(element) { + element.setAttribute('tabindex', 'invalid-value') + }, +} + +var focusLabelTabindex = { + element: 'label', + mutate: function mutate(element) { + element.setAttribute('tabindex', '-1') + }, + validate: function validate(element, focusTarget, _document) { + // force layout in Chrome 49, otherwise the element won't be focusable + /* eslint-disable no-unused-vars */ + var variableToPreventDeadCodeElimination = element.offsetHeight + /* eslint-enable no-unused-vars */ + element.focus() + return _document.activeElement === element + }, +} + +var svg = + 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb' + + 'G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ' + + 'zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==' + +// Note: IE10 on BrowserStack does not like this test + +var focusObjectSvgHidden = { + element: 'object', + mutate: function mutate(element) { + element.setAttribute('type', 'image/svg+xml') + element.setAttribute('data', svg) + element.setAttribute('width', '200') + element.setAttribute('height', '50') + element.style.visibility = 'hidden' + }, +} + +// Note: IE10 on BrowserStack does not like this test + +var focusObjectSvg = { + name: 'can-focus-object-svg', + element: 'object', + mutate: function mutate(element) { + element.setAttribute('type', 'image/svg+xml') + element.setAttribute('data', svg) + element.setAttribute('width', '200') + element.setAttribute('height', '50') + }, + validate: function validate(element, focusTarget, _document) { + if (platform.is.GECKO) { + // Firefox seems to be handling the object creation asynchronously and thereby produces a false negative test result. + // Because we know Firefox is able to focus object elements referencing SVGs, we simply cheat by sniffing the user agent string + return true + } + + return _document.activeElement === element + }, +} + +// Every Environment except IE9 considers SWF objects focusable +var result$1 = !platform.is.IE9 + +function focusObjectSwf() { + return result$1 +} + +var focusRedirectImgUsemap = { + element: 'div', + mutate: function mutate(element) { + element.innerHTML = + '' + + '' + + // focus the , not the
    + return element.querySelector('img') + }, + validate: function validate(element, focusTarget, _document) { + var target = element.querySelector('area') + return _document.activeElement === target + }, +} + +// see https://jsbin.com/nenirisage/edit?html,js,console,output + +var focusRedirectLegend = { + element: 'fieldset', + mutate: function mutate(element) { + element.innerHTML = + 'legend' + // take care of focus in validate(); + return false + }, + validate: function validate(element, focusTarget, _document) { + var focusable = element.querySelector('input[tabindex="-1"]') + var tabbable = element.querySelector('input[tabindex="0"]') + + // Firefox requires this test to focus the
    first, while this is not necessary in + // https://jsbin.com/nenirisage/edit?html,js,console,output + element.focus() + + element.querySelector('legend').focus() + return ( + (_document.activeElement === focusable && 'focusable') || + (_document.activeElement === tabbable && 'tabbable') || + '' + ) + }, +} + +// https://github.com/medialize/ally.js/issues/21 +var focusScrollBody = { + element: 'div', + mutate: function mutate(element) { + element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;') + element.innerHTML = + '
    scrollable content
    ' + return element.querySelector('div') + }, +} + +// https://github.com/medialize/ally.js/issues/21 +var focusScrollContainerWithoutOverflow = { + element: 'div', + mutate: function mutate(element) { + element.setAttribute('style', 'width: 100px; height: 50px;') + element.innerHTML = + '
    scrollable content
    ' + }, +} + +// https://github.com/medialize/ally.js/issues/21 +var focusScrollContainer = { + element: 'div', + mutate: function mutate(element) { + element.setAttribute('style', 'width: 100px; height: 50px; overflow: auto;') + element.innerHTML = + '
    scrollable content
    ' + }, +} + +var focusSummary = { + element: 'details', + mutate: function mutate(element) { + element.innerHTML = 'foo

    content

    ' + return element.firstElementChild + }, +} + +function makeFocusableForeignObject() { + // Constructs + // without raising a Trusted Types violation + var foreignObject = document.createElementNS( + 'http://www.w3.org/2000/svg', + 'foreignObject' + ) + foreignObject.width.baseVal.value = 30 + foreignObject.height.baseVal.value = 30 + foreignObject.appendChild(document.createElement('input')) + foreignObject.lastChild.type = 'text' + + return foreignObject +} + +function focusSvgForeignObjectHack(element) { + // Edge13, Edge14: foreignObject focus hack + // https://jsbin.com/kunehinugi/edit?html,js,output + // https://jsbin.com/fajagi/3/edit?html,js,output + var isSvgElement = + element.ownerSVGElement || element.nodeName.toLowerCase() === 'svg' + if (!isSvgElement) { + return false + } + + // inject and focus an element into the SVG element to receive focus + var foreignObject = makeFocusableForeignObject() + element.appendChild(foreignObject) + var input = foreignObject.querySelector('input') + input.focus() + + // upon disabling the activeElement, IE and Edge + // will not shift focus to like all the other + // browsers, but instead find the first focusable + // ancestor and shift focus to that + input.disabled = true + + // clean up + element.removeChild(foreignObject) + return true +} + +function generate(element) { + return ( + '' + + element + + '' + ) +} + +function focus(element) { + if (element.focus) { + return + } + + try { + HTMLElement.prototype.focus.call(element) + } catch (e) { + focusSvgForeignObjectHack(element) + } +} + +function validate(element, focusTarget, _document) { + focus(focusTarget) + return _document.activeElement === focusTarget +} + +var focusSvgFocusableAttribute = { + element: 'div', + mutate: function mutate(element) { + element.innerHTML = generate('a') + return element.querySelector('text') + }, + validate: validate, +} + +var focusSvgTabindexAttribute = { + element: 'div', + mutate: function mutate(element) { + element.innerHTML = generate('a') + return element.querySelector('text') + }, + validate: validate, +} + +var focusSvgNegativeTabindexAttribute = { + element: 'div', + mutate: function mutate(element) { + element.innerHTML = generate('a') + return element.querySelector('text') + }, + validate: validate, +} + +var focusSvgUseTabindex = { + element: 'div', + mutate: function mutate(element) { + element.innerHTML = generate( + [ + '
    link', + '', + ].join('') + ) + + return element.querySelector('use') + }, + validate: validate, +} + +var focusSvgForeignobjectTabindex = { + element: 'div', + mutate: function mutate(element) { + element.innerHTML = generate( + '' + ) + // Safari 8's querySelector() can't identify foreignObject, but getElementsByTagName() can + return ( + element.querySelector('foreignObject') || + element.getElementsByTagName('foreignObject')[0] + ) + }, + validate: validate, +} + +// Firefox seems to be handling the SVG-document-in-iframe creation asynchronously +// and thereby produces a false negative test result. Thus the test is pointless +// and we resort to UA sniffing once again. +// see http://jsbin.com/vunadohoko/1/edit?js,console,output + +var result$2 = Boolean( + platform.is.GECKO && + typeof SVGElement !== 'undefined' && + SVGElement.prototype.focus +) + +function focusSvgInIframe() { + return result$2 +} + +var focusSvg = { + element: 'div', + mutate: function mutate(element) { + element.innerHTML = generate('') + return element.firstChild + }, + validate: validate, +} + +// Firefox allows *any* value and treats invalid values like tabindex="-1" +// @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054 +var focusTabindexTrailingCharacters = { + element: 'div', + mutate: function mutate(element) { + element.setAttribute('tabindex', '3x') + }, +} + +var focusTable = { + element: 'table', + mutate: function mutate(element, wrapper, _document) { + // IE9 has a problem replacing TBODY contents with innerHTML. + // https://stackoverflow.com/a/8097055/515124 + // element.innerHTML = 'cell'; + var fragment = _document.createDocumentFragment() + fragment.innerHTML = 'cell' + element.appendChild(fragment) + }, +} + +var focusVideoWithoutControls = { + element: 'video', + mutate: function mutate(element) { + try { + // invalid media file can trigger warning in console, data-uri to prevent HTTP request + element.setAttribute('src', gif) + } catch (e) { + // IE9 may throw "Error: Not implemented" + } + }, +} + +// https://jsbin.com/vafaba/3/edit?html,js,console,output +var result$3 = platform.is.GECKO || platform.is.TRIDENT || platform.is.EDGE + +function tabsequenceAreaAtImgPosition() { + return result$3 +} + +var testCallbacks = { + cssShadowPiercingDeepCombinator: cssShadowPiercingDeepCombinator, + focusInZeroDimensionObject: focusInZeroDimensionObject, + focusObjectSwf: focusObjectSwf, + focusSvgInIframe: focusSvgInIframe, + tabsequenceAreaAtImgPosition: tabsequenceAreaAtImgPosition, +} + +var testDescriptions = { + focusAreaImgTabindex: focusAreaImgTabindex, + focusAreaTabindex: focusAreaTabindex, + focusAreaWithoutHref: focusAreaWithoutHref, + focusAudioWithoutControls: focusAudioWithoutControls, + focusBrokenImageMap: focusBrokenImageMap, + focusChildrenOfFocusableFlexbox: focusChildrenOfFocusableFlexbox, + focusFieldsetDisabled: focusFieldsetDisabled, + focusFieldset: focusFieldset, + focusFlexboxContainer: focusFlexboxContainer, + focusFormDisabled: focusFormDisabled, + focusImgIsmap: focusImgIsmap, + focusImgUsemapTabindex: focusImgUsemapTabindex, + focusInHiddenIframe: focusInHiddenIframe, + focusInvalidTabindex: focusInvalidTabindex, + focusLabelTabindex: focusLabelTabindex, + focusObjectSvg: focusObjectSvg, + focusObjectSvgHidden: focusObjectSvgHidden, + focusRedirectImgUsemap: focusRedirectImgUsemap, + focusRedirectLegend: focusRedirectLegend, + focusScrollBody: focusScrollBody, + focusScrollContainerWithoutOverflow: focusScrollContainerWithoutOverflow, + focusScrollContainer: focusScrollContainer, + focusSummary: focusSummary, + focusSvgFocusableAttribute: focusSvgFocusableAttribute, + focusSvgTabindexAttribute: focusSvgTabindexAttribute, + focusSvgNegativeTabindexAttribute: focusSvgNegativeTabindexAttribute, + focusSvgUseTabindex: focusSvgUseTabindex, + focusSvgForeignobjectTabindex: focusSvgForeignobjectTabindex, + focusSvg: focusSvg, + focusTabindexTrailingCharacters: focusTabindexTrailingCharacters, + focusTable: focusTable, + focusVideoWithoutControls: focusVideoWithoutControls, +} + +function executeTests() { + var results = detectFocus(testDescriptions) + Object.keys(testCallbacks).forEach(function (key) { + results[key] = testCallbacks[key]() + }) + + return results +} + +var supportsCache = null + +function _supports() { + if (supportsCache) { + return supportsCache + } + + supportsCache = cache$1.get() + if (!supportsCache.time) { + cache$1.set(executeTests()) + supportsCache = cache$1.get() + } + + return supportsCache +} + +var supports = void 0 + +// https://www.w3.org/TR/html5/infrastructure.html#rules-for-parsing-integers +// NOTE: all browsers agree to allow trailing spaces as well +var validIntegerPatternNoTrailing = /^\s*(-|\+)?[0-9]+\s*$/ +var validIntegerPatternWithTrailing = /^\s*(-|\+)?[0-9]+.*$/ + +function isValidTabindex(context) { + if (!supports) { + supports = _supports() + } + + var validIntegerPattern = supports.focusTabindexTrailingCharacters + ? validIntegerPatternWithTrailing + : validIntegerPatternNoTrailing + + var element = contextToElement({ + label: 'is/valid-tabindex', + resolveDocument: true, + context: context, + }) + + // Edge 14 has a capitalization problem on SVG elements, + // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9282058/ + var hasTabindex = element.hasAttribute('tabindex') + var hasTabIndex = element.hasAttribute('tabIndex') + + if (!hasTabindex && !hasTabIndex) { + return false + } + + // older Firefox and Internet Explorer don't support tabindex on SVG elements + var isSvgElement = + element.ownerSVGElement || element.nodeName.toLowerCase() === 'svg' + if (isSvgElement && !supports.focusSvgTabindexAttribute) { + return false + } + + // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054 + if (supports.focusInvalidTabindex) { + return true + } + + // an element matches the tabindex selector even if its value is invalid + var tabindex = element.getAttribute(hasTabindex ? 'tabindex' : 'tabIndex') + // IE11 parses tabindex="" as the value "-32768" + // @browser-issue Trident https://connect.microsoft.com/IE/feedback/details/1072965 + if (tabindex === '-32768') { + return false + } + + return Boolean(tabindex && validIntegerPattern.test(tabindex)) +} + +function tabindexValue(element) { + if (!isValidTabindex(element)) { + return null + } + + // Edge 14 has a capitalization problem on SVG elements, + // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9282058/ + var hasTabindex = element.hasAttribute('tabindex') + var attributeName = hasTabindex ? 'tabindex' : 'tabIndex' + + // @browser-issue Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054 + var tabindex = parseInt(element.getAttribute(attributeName), 10) + return isNaN(tabindex) ? -1 : tabindex +} + +// this is a shared utility file for focus-relevant.js and tabbable.js +// separate testing of this file's functions is not necessary, +// as they're implicitly tested by way of the consumers + +function isUserModifyWritable(style) { + // https://www.w3.org/TR/1999/WD-css3-userint-19990916#user-modify + // https://github.com/medialize/ally.js/issues/17 + var userModify = style.webkitUserModify || '' + return Boolean(userModify && userModify.includes('write')) +} + +function hasCssOverflowScroll(style) { + return [ + style.getPropertyValue('overflow'), + style.getPropertyValue('overflow-x'), + style.getPropertyValue('overflow-y'), + ].some(function (overflow) { + return overflow === 'auto' || overflow === 'scroll' + }) +} + +function hasCssDisplayFlex(style) { + return style.display.indexOf('flex') > -1 +} + +function isScrollableContainer(element, nodeName, parentNodeName, parentStyle) { + if (nodeName !== 'div' && nodeName !== 'span') { + // Internet Explorer advances scrollable containers and bodies to focusable + // only if the scrollable container is
    or - this does *not* + // happen for
    ,
    , … + return false + } + + if ( + parentNodeName && + parentNodeName !== 'div' && + parentNodeName !== 'span' && + !hasCssOverflowScroll(parentStyle) + ) { + return false + } + + return ( + element.offsetHeight < element.scrollHeight || + element.offsetWidth < element.scrollWidth + ) +} + +var supports$1 = void 0 + +function isFocusRelevantRules() { + var _ref = + arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + context = _ref.context, + _ref$except = _ref.except, + except = + _ref$except === undefined + ? { + flexbox: false, + scrollable: false, + shadow: false, + } + : _ref$except + + if (!supports$1) { + supports$1 = _supports() + } + + var element = contextToElement({ + label: 'is/focus-relevant', + resolveDocument: true, + context: context, + }) + + if (!except.shadow && element.shadowRoot) { + // a ShadowDOM host receives focus when the focus moves to its content + return true + } + + var nodeName = element.nodeName.toLowerCase() + + if (nodeName === 'input' && element.type === 'hidden') { + // input[type="hidden"] supports.cannot be focused + return false + } + + if ( + nodeName === 'input' || + nodeName === 'select' || + nodeName === 'button' || + nodeName === 'textarea' + ) { + return true + } + + if (nodeName === 'legend' && supports$1.focusRedirectLegend) { + // specifics filtered in is/focusable + return true + } + + if (nodeName === 'label') { + // specifics filtered in is/focusable + return true + } + + if (nodeName === 'area') { + // specifics filtered in is/focusable + return true + } + + if (nodeName === 'a' && element.hasAttribute('href')) { + return true + } + + if (nodeName === 'object' && element.hasAttribute('usemap')) { + // object[usemap] is not focusable in any browser + return false + } + + if (nodeName === 'object') { + var svgType = element.getAttribute('type') + if (!supports$1.focusObjectSvg && svgType === 'image/svg+xml') { + // object[type="image/svg+xml"] is not focusable in Internet Explorer + return false + } else if ( + !supports$1.focusObjectSwf && + svgType === 'application/x-shockwave-flash' + ) { + // object[type="application/x-shockwave-flash"] is not focusable in Internet Explorer 9 + return false + } + } + + if (nodeName === 'iframe' || nodeName === 'object') { + // browsing context containers + return true + } + + if (nodeName === 'embed' || nodeName === 'keygen') { + // embed is considered focus-relevant but not focusable + // see https://github.com/medialize/ally.js/issues/82 + return true + } + + if (element.hasAttribute('contenteditable')) { + // also see CSS property user-modify below + return true + } + + if ( + nodeName === 'audio' && + (supports$1.focusAudioWithoutControls || element.hasAttribute('controls')) + ) { + return true + } + + if ( + nodeName === 'video' && + (supports$1.focusVideoWithoutControls || element.hasAttribute('controls')) + ) { + return true + } + + if (supports$1.focusSummary && nodeName === 'summary') { + return true + } + + var validTabindex = isValidTabindex(element) + + if (nodeName === 'img' && element.hasAttribute('usemap')) { + // Gecko, Trident and Edge do not allow an image with an image map and tabindex to be focused, + // it appears the tabindex is overruled so focus is still forwarded to the + return ( + (validTabindex && supports$1.focusImgUsemapTabindex) || + supports$1.focusRedirectImgUsemap + ) + } + + if (supports$1.focusTable && (nodeName === 'table' || nodeName === 'td')) { + // IE10-11 supports.can focus and
    + return true + } + + if (supports$1.focusFieldset && nodeName === 'fieldset') { + // IE10-11 supports.can focus
    + return true + } + + var isSvgElement = nodeName === 'svg' + var isSvgContent = element.ownerSVGElement + var focusableAttribute = element.getAttribute('focusable') + var tabindex = tabindexValue(element) + + if ( + nodeName === 'use' && + tabindex !== null && + !supports$1.focusSvgUseTabindex + ) { + // cannot be made focusable by adding a tabindex attribute anywhere but Blink and WebKit + return false + } + + if (nodeName === 'foreignobject') { + // can only be made focusable in Blink and WebKit + return tabindex !== null && supports$1.focusSvgForeignobjectTabindex + } + + if (elementMatches(element, 'svg a') && element.hasAttribute('xlink:href')) { + return true + } + + if ( + (isSvgElement || isSvgContent) && + element.focus && + !supports$1.focusSvgNegativeTabindexAttribute && + tabindex < 0 + ) { + // Firefox 51 and 52 treat any natively tabbable SVG element with + // tabindex="-1" as tabbable and everything else as inert + // see https://bugzilla.mozilla.org/show_bug.cgi?id=1302340 + return false + } + + if (isSvgElement) { + return ( + validTabindex || + supports$1.focusSvg || + supports$1.focusSvgInIframe || + // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2 + Boolean( + supports$1.focusSvgFocusableAttribute && + focusableAttribute && + focusableAttribute === 'true' + ) + ) + } + + if (isSvgContent) { + if (supports$1.focusSvgTabindexAttribute && validTabindex) { + return true + } + + if (supports$1.focusSvgFocusableAttribute) { + // Internet Explorer understands the focusable attribute introduced in SVG Tiny 1.2 + return focusableAttribute === 'true' + } + } + + // https://www.w3.org/TR/html5/editing.html#sequential-focus-navigation-and-the-tabindex-attribute + if (validTabindex) { + return true + } + + var style = window.getComputedStyle(element, null) + if (isUserModifyWritable(style)) { + return true + } + + if ( + supports$1.focusImgIsmap && + nodeName === 'img' && + element.hasAttribute('ismap') + ) { + // IE10-11 considers the in focusable + // https://github.com/medialize/ally.js/issues/20 + var hasLinkParent = getParents({ context: element }).some(function ( + parent + ) { + return ( + parent.nodeName.toLowerCase() === 'a' && parent.hasAttribute('href') + ) + }) + + if (hasLinkParent) { + return true + } + } + + // https://github.com/medialize/ally.js/issues/21 + if (!except.scrollable && supports$1.focusScrollContainer) { + if (supports$1.focusScrollContainerWithoutOverflow) { + // Internet Explorer does will consider the scrollable area focusable + // if the element is a
    or a and it is in fact scrollable, + // regardless of the CSS overflow property + if (isScrollableContainer(element, nodeName)) { + return true + } + } else if (hasCssOverflowScroll(style)) { + // Firefox requires proper overflow setting, IE does not necessarily + // https://developer.mozilla.org/en-US/docs/Web/CSS/overflow + return true + } + } + + if ( + !except.flexbox && + supports$1.focusFlexboxContainer && + hasCssDisplayFlex(style) + ) { + // elements with display:flex are focusable in IE10-11 + return true + } + + var parent = element.parentElement + if (!except.scrollable && parent) { + var parentNodeName = parent.nodeName.toLowerCase() + var parentStyle = window.getComputedStyle(parent, null) + if ( + supports$1.focusScrollBody && + isScrollableContainer(parent, nodeName, parentNodeName, parentStyle) + ) { + // scrollable bodies are focusable Internet Explorer + // https://github.com/medialize/ally.js/issues/21 + return true + } + + // Children of focusable elements with display:flex are focusable in IE10-11 + if (supports$1.focusChildrenOfFocusableFlexbox) { + if (hasCssDisplayFlex(parentStyle)) { + return true + } + } + } + + // NOTE: elements marked as inert are not focusable, + // but that property is not exposed to the DOM + // https://www.w3.org/TR/html5/editing.html#inert + + return false +} + +// bind exceptions to an iterator callback +isFocusRelevantRules.except = function () { + var except = + arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {} + + var isFocusRelevant = function isFocusRelevant(context) { + return isFocusRelevantRules({ + context: context, + except: except, + }) + } + + isFocusRelevant.rules = isFocusRelevantRules + return isFocusRelevant +} + +// provide isFocusRelevant(context) as default iterator callback +var isFocusRelevant = isFocusRelevantRules.except({}) + +function findIndex(array, callback) { + // attempt to use native or polyfilled Array#findIndex first + if (array.findIndex) { + return array.findIndex(callback) + } + + var length = array.length + + // shortcut if the array is empty + if (length === 0) { + return -1 + } + + // otherwise loop over array + for (var i = 0; i < length; i++) { + if (callback(array[i], i, array)) { + return i + } + } + + return -1 +} + +function getContentDocument(node) { + try { + // works on and